SJ blog
ドリル一覧

T1-Q05: LambdaログがCloudWatch Logsに無いならS3権限ではなく実行ロールを見る

Lambdaの実行ログが見つからない問題を、実行ロール、CloudWatch Logs、S3保存先の責務境界で切り分ける。

AWS SCS-C03 Lambda CloudWatch Logs IAM

T1-Q05: LambdaログがCloudWatch Logsに無いならS3権限ではなく実行ロールを見る

対象誤答: T1 Q05 LAMBDA CLOUDWATCH LOGS ROLE

あなたの選択と正答

観点内容
あなたの選択Lambda 関数の実行ロールに、CloudWatch Logs のログが格納される Amazon S3 バケットへの書き込み権限が付与されていなかった。
正答Lambda 関数の実行ロールに、CloudWatch Logs にログを書き込む権限が付与されていなかった。
誤答の引力CloudWatch Logsの保管先をS3だと思い込んでいる。Lambda標準ログはCloudWatch Logsのロググループ/ログストリームへ送られる。
判断軸Lambdaがログを書けないなら、実行ロールのlogs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEventsを見る。S3はCloudTrailログ配信やエクスポートの文脈。

この問題の芯

T1-Q05 は「Lambda が誤用されてデータが変更された。誰が実行し、どんな出力が出たかを調べたい。しかし CloudWatch Logs に Lambda のログがない」という問題。あなたは CloudWatch Logs がS3バケットに格納される前提の選択肢を選んだ。正答は Lambda 実行ロールに CloudWatch Logs 書き込み権限がないこと。

まず責務を分ける

Lambda の標準出力と標準エラーは、通常 CloudWatch Logs のロググループに送られる。必要なのは Lambda 実行ロール側の CloudWatch Logs 権限。

見たいもの主役
関数内の出力、例外、print/logCloudWatch Logs
誰がInvokeFunction APIを呼んだかCloudTrail
CloudTrailログファイルの長期保管S3
ログを検索、メトリクス化、アラーム化CloudWatch Logs / CloudWatch

何が足りないとログが出ないか

Lambda が CloudWatch Logs に書くには、実行ロールに少なくとも次の系統の権限が必要。

{
  "Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
  "Effect": "Allow",
  "Resource": "*"
}

この問題では「CloudWatch Logs にログが見つからない理由」を問われている。S3バケット権限は、Lambda標準ログの直接の書き込み先ではない。

次回の秒殺ルール

Lambdaログが出ない問題は、まず AWSLambdaBasicExecutionRole 相当のCloudWatch Logs権限を見る。
「誰がAPIを呼んだか」はCloudTrail。「関数が何を出力したか」はCloudWatch Logs。この2つを混ぜない。

仕上げの一問一答

  • この問題の主語は何か: Lambda
  • 先に除外する選択肢: 問題文の主語と違うサービス責務に寄っているもの。
  • 最後に確認する語: 「最もコスト効率」「組織全体」「未指定を拒否」「監査」「自動有効化」などの制約語。

参照