AWS Lambda で CloudWatch にログが作られなくてハマった
久しぶりに AWS Lambda を使ったら少々ハマってしまったのでメモ。
S3 のバケットにあるファイルを別のバケットにコピーしたいと思って Lambda Function の作り方を調べたら以下のドキュメントが見つかりました。
» Copy Objects Between S3 Buckets Using Lambda
この手順通りに実施してみました。
実際にバケットを使って試す途中、デバッグの方法が分からなかったので調べてみると、
Lambda 関数にログ作成のステートメントを含めることができます。AWS Lambda はこれらのログを CloudWatch に書き込みます。Lambda コンソールを使用して Lambda 関数を呼び出すと、コンソールに同じログが表示されます。
とありました。つまり console.log() を使うと CloudWatch にログが自動的に出力されるはず。
が、ここで問題が発生。何度やってもログが作成されません。
調査にかなり時間を費やしてしまったのですが、 Lambda Function を実行する IAM ロールに対して「CloudWatchLogsFullAccess」のポリシーを適用する必要がありました。
あとで確認してみると AWS Lambda のウィザードで作られるロールには、もう少し細かい CloudWatch Logs に対するアクセスポリシーが自動的に付与されるようです。しかし、最初に見つけたドキュメントが IAM コンソールのほうでポリシーを作るという手順だったので、ハマってしまいました。
コメントを残す