メニュー
Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

Lambda@Edge 用の IAM アクセス権限とロールの設定

Lambda@Edge を設定するには、IAM アクセス権限および IAM 実行ロールが必要です。

Lambda 関数を CloudFront ディストリビューションに関連付けるために必要な IAM アクセス許可

AWS Lambda を使用するために必要な IAM アクセス権限に加え、Lambda 関数を CloudFront ディストリビューションに関連付けるために次の IAM アクセス権限が IAM ユーザーに必要です。

  • lambda:GetFunction

    リソースに対して、次の例に示すように、CloudFront イベントが発生した場合に実行する関数バージョンの ARN を指定します。

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:EnableReplication*

    リソースに対して、次の例に示すように、CloudFront イベントが発生した場合に実行する関数バージョンの ARN を指定します。

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • iam:CreateServiceLinkedRole

    CloudFront で Lambda 関数をレプリケートするために、Lambda@Edge によって使用される、サービスにリンクされたロールを作成するために使用されます。Lambda@Edge で使用する最初のディストリビューションによってこのロールが作成されたら、Lambda@Edge で使用する他のディストリビューションにアクセス許可を追加する必要はありません。

  • cloudfront:UpdateDistribution または cloudfront:CreateDistribution

    cloudfront:UpdateDistribution を選択してディストリビューションを更新するか、cloudfront:CreateDistribution を選択してディストリビューションを作成します。

詳細については、次のドキュメントを参照してください。

実行ロール

サービスプリンシパル lambda.amazonaws.comedgelambda.amazonaws.com が引き受けることができる IAM ロールを作成する必要があります。このロールは、関数を実行するときに、サービスプリンシパルが引き受けることができます。詳細については、IAM ユーザーガイドのトピック「職務機能の AWS 管理ポリシー」の「ロールの作成とポリシーのアタッチ (コンソール)」を参照してください。

このロールを IAM の [信頼関係] タブで追加します ([アクセス許可] タブでは追加しないでください)。

ロールの信頼ポリシーの例を示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com", "edgelambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

実行ロールに付与する必要があるアクセス権限の詳細については、AWS Lambda Developer Guideの「アクセス権限の管理: IAM ロール (実行ロール) を使用する」を参照してください。次の点に注意してください。

  • デフォルトでは、CloudFront イベントが Lambda 関数をトリガーするたびに、データが CloudWatch Logs に書き込まれます。これらのログを使用する場合は、CloudWatch Logs にデータを書き込むためのアクセス権限が実行ロールに必要です。事前定義された AWSLambdaBasicExecutionRole を使用して、実行ロールにアクセス権限を付与できます。

    CloudWatch Logs の詳細については、「Lambda 関数の CloudWatch メトリクスと CloudWatch Logs」を参照してください。

  • S3 バケットからのオブジェクトの読み取りなど、Lambda 関数コードが他の AWS リソースにアクセスする場合、そのオペレーションを実行するためのアクセス権限が実行ロールに必要です。

AWSServiceRoleForLambdaReplicator ロール

トリガーを初めて作成するとき、AWSServiceRoleForLambdaReplicator という名前のロールが自動的に作成され、Lambda@Edge 関数を AWS リージョンにレプリケートできるようになります。このロールは、Lambda@Edge を使用するために必要です。AWSServiceRoleForLambdaReplicator ロールの ARN は次のようになります。

arn:aws:iam::123456789012:role/aws-service-role/replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator