AWSのCloudFrontと連携させてLambdaを動かすことのできるLambda@Edgeについて、先日初めてちゃんと使ったのですが、その時に少し困ったことがあったのでその内容を備忘もかねて記載しておきます。
困った内容
Lambda@Edgeをバージニア北部リージョンで新規作成(Edge用のLambdaはバージニア北部リージョンで作成する必要がある)し、Lambdaのバージョンを作成してデプロイ&CloudFrontトリガーを追加してディストリビューションとの紐付けまで行った。
ここまで行うことでCloudFrontにアクセスがされる都度対象のLambda関数が実行されるはず。
ということで実際にCloudFrontに対して通信を行なってから以下で確認を行った。
- バージニア北部リージョンを指定した状態でマネジメントコンソールでLambdaを選択
- 対象のLambda関数の「モニタリング」タブを選択
- メトリクス及びログを確認
上記を行ったところ、いくら待ってもメトリクス・ログともデータが全くない状態のままであった。
解決方法
Lambda@Edgeの情報についてはLambda関数側ではなく以下を確認することでメトリクスとログが確認が可能
- マネジメントコンソールでCloudFrontを選択
- テレメトリーの「モニタリング」を選択
- Lambda@Edgeタブを選択
- 対象のLambda@Edgeを選択して「メトリクスを表示」を選択
上記でメトリクスが表示される。2022/3時点のマネジメントコンソールではこの画面の右上に「関数ログを表示」というボタンがあり、そこから接続していると思われるリージョン(日本の場合は多くは東京リージョン?)を選択すると対象のログも表示される。
ロググループ名の命名規則は以下のような感じ。
/aws/lambda/us-east-1.(Lambda関数名)
よく探したら以下のページにLambda@Edgeのメトリクスの確認手順は書いていました。
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/viewing-cloudfront-metrics.html
Lambdaに慣れていると当たり前のようにLambdaのメトリクスを見て何も来ないな〜と思ってしまうかもしれないので参考になればと思います。