CloudFront ディストリビューションにデプロイされたビューワー リクエストとオリジン レスポンスの Lambda 関数は実行されていますが、CloudWatch にログを記録していません。私はこのトピックの調査にかなりの時間を費やし、他の投稿からのアドバイスをすべて確認しました。
- labmda@edge 関数が実行されるリージョンに CloudWatch ログが作成されることがわかっているので、すべてのリージョンのログをチェックしています。いずれにもログはありません。
- AWSServiceRoleForCloudFrontLogger ロールが存在することを確認しました。
興味深いことに、Lambda 関数の 1 つに意図的にエラーをコード化すると、エラー ログを含むという名前のグループ内にログが作成されますが/aws/cloudfront/LambdaEdge/<cloudfront distribution id>
、ここでは console.log ステートメントからの出力はありません。
どうやっても、console.log() を使用してデバッグ ステートメントを含む、成功と失敗の両方のすべてのリクエストを CloudWatch に記録できるようにするのかわかりません。
AWSServiceRoleForCloudFrontLogger には、次の 1 つのポリシーが含まれていますAWSCloudFrontLogger
。
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:/aws/cloudfront/*"
}
]
}
編集:
以下は、AWS サポートが提案した AWS ロールです。これが機能し、問題が解決したことを確認できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}```
ベストアンサー1
おそらく問題は、Lambda に CloudWatch にログを出力する権限がないことです。
Lambda 関数実行ロールの権限をもう一度確認できますか?
関連リンク:AWS Lambda 関数で CloudWatch にログ (テキスト出力) を記録できない
説明
ここでは 2 種類のログが存在するため、2 つの異なる場所で CloudWatch に権限を付与する必要があります。
- Lambda関数に入力したログ(console.logを使用)は、関数によってCloudWatchに公開されるため、関数実行ロールには許可CloudWatch へ。これは、Lambda 関数を誰がトリガーするかに関係なく当てはまります。
- さて、L@Eですが、リクエスト/レスポンスを次のように変更してしまうことがあります。CloudFront では無効ですこれらのシナリオでは、ClodFrontだけがあなたが失敗したことを認識しており(Lambda関数はこれを認識していません)、この認識をログの形でCloudWatchに公開します。これは別のエンティティであるため、独自の権限ログを CloudWatch (AWSServiceRoleForCloudFrontLogger 経由で提供したもの) にプッシュします。