F.Ko-Jiの「一秒後は未来」

AWS Lambda で CloudWatch にログが作られなくてハマった

久しぶりに AWS Lambda を使ったら少々ハマってしまったのでメモ。

S3 のバケットにあるファイルを別のバケットにコピーしたいと思って Lambda Function の作り方を調べたら以下のドキュメントが見つかりました。

» Copy Objects Between S3 Buckets Using Lambda

この手順通りに実施してみました。

実際にバケットを使って試す途中、デバッグの方法が分からなかったので調べてみると、

» ログ作成 (Node.js) – AWS Lambda

Lambda 関数にログ作成のステートメントを含めることができます。AWS Lambda はこれらのログを CloudWatch に書き込みます。Lambda コンソールを使用して Lambda 関数を呼び出すと、コンソールに同じログが表示されます。

とありました。つまり console.log() を使うと CloudWatch にログが自動的に出力されるはず。

が、ここで問題が発生。何度やってもログが作成されません。

調査にかなり時間を費やしてしまったのですが、 Lambda Function を実行する IAM ロールに対して「CloudWatchLogsFullAccess」のポリシーを適用する必要がありました。

あとで確認してみると AWS Lambda のウィザードで作られるロールには、もう少し細かい CloudWatch Logs に対するアクセスポリシーが自動的に付与されるようです。しかし、最初に見つけたドキュメントが IAM コンソールのほうでポリシーを作るという手順だったので、ハマってしまいました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など