- 公開日
- 最終更新日
【Lambda@Edge】初心者がハマりがちな落とし穴6選
この記事を共有する

目次
はじめに
こんにちは!パーソル&サーバーワークスの三宅です。
Lambda@Edgeは、Amazon CloudFront(以下、CloudFront)のエッジロケーションでAWS Lambda(以下、Lamdba)関数を実行できる非常に便利なサービスです。 しかし、通常のLambda関数とは異なる特殊な制約や注意点があり、初心者の方がハマりがちなポイントが多く存在します。
今回は、実際に私が遭遇した落とし穴を6つピックアップしてご紹介します。
落とし穴
1. リージョンはバージニア北部 (us-east-1) のみ
Lambda@Edge用のLambda関数は、必ずバージニア北部(us-east-1)リージョンで作成する必要があります。 他のリージョンで作成したLambda関数をCloudFrontのトリガーに設定しようとすると、以下のようなエラーが出力されます。
2. CloudWatch Logsへの出力はLambda@Edgeが実行されたリージョンに記録される
これは特にデバッグ時に混乱を招く仕様です。
Lambda@Edge関数のログは、バージニア北部ではなく、実際にその関数が実行されたエッジロケーションに最も近いリージョンのAmazon CloudWatch Logsに出力されます。
3. 環境変数が利用できない
通常のLambda関数では使える環境変数が、Lambda@Edgeでは利用できません。
そのため、Lambdaの設定で環境変数が設定されている場合は、以下のようなエラーが出力されます。
Lambdaのコード内にシークレット値など直接書くのを避けるため、AWS Systems Managerのパラメータストアを使うことができます。
4. メモリやタイムアウトの制約が厳しい
Lambda@Edgeには通常のLambdaよりも厳しい制約があります。
メモリは128MBから、タイムアウト値はイベントタイプによって異なります。
メモリ: 128MB
タイムアウト値:
Viewer Request/Response: 5秒
Origin Request/Response: 30秒
5. IAMロールの信頼関係設定が特殊
Lambda@Edge用のIAMロールには、通常のLambda関数とは異なる信頼関係の設定が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com", "edgelambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
"edgelambda.amazonaws.com"がプリンシパルに含まれていない場合は、以下のようなエラーとなります。
Lambda関数を作成する際にテンプレートが用意されていますので、こちらを利用されることをお勧めいたします。
6. 番号付きバージョンを指定する必要がある
CloudFrontでの関連付け設定でLambda関数は番号付きバージョンを使用する必要があります。
$LATESTやエイリアスは指定できません。
最後に
Lambda@Edgeは強力な機能ですが、これらの制約を理解せずに使うとハマることが多いサービスです。 事前にこれらのポイントを把握しておくことで、スムーズな開発ができるかと思いますので、皆さんのLambda@Edge開発の参考になれば幸いです!
この記事は私が書きました
三宅 啓右
記事一覧2025 Japan All AWS Certifications Engineers 猫派でしたが最近犬派になりました。
