AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

AWS::Lambda::Permission

AWS::Lambda::Permission リソースは、関数を使用するためのアクセス許可を AWS サービスまたは別のアカウントに付与します。関数レベルでポリシーを適用したり、1 つのバージョンまたはエイリアスへのアクセスを制限する修飾子を指定したりすることができます。修飾子を使用する場合は、バージョンの完全な Amazon リソースネーム (ARN) またはエイリアスを使用して関数を呼び出す必要があります。

別のアカウントにアクセス許可を付与するには、アカウント ID を Principal として指定します。AWS サービスの場合、プリンシパルは、サービスによって定義されたドメイン形式の識別子 (s3.amazonaws.comsns.amazonaws.com など) です。AWS サービスの場合、関連付けられたリソースの ARN または所有アカウントを SourceArn または SourceAccount として指定することもできます。ソースを指定せずにアクセス許可をサービスプリンシパルに付与した場合は、他のアカウントが Lambda 関数を呼び出すようにそのアカウントのリソースを設定する可能性があります。

このリソースにより、ステートメントが関数のリソースベースのアクセス許可ポリシーに追加されます。関数ポリシーの詳細については、「Lambda 関数ポリシー」を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

{ "Type" : "AWS::Lambda::Permission", "Properties" : { "Action" : String, "EventSourceToken" : String, "FunctionName" : String, "Principal" : String, "SourceAccount" : String, "SourceArn" : String } }

YAML

Type: AWS::Lambda::Permission Properties: Action: String EventSourceToken: String FunctionName: String Principal: String SourceAccount: String SourceArn: String

プロパティ

Action

プリンシパルが関数で使用できるアクション。例えば、lambda:InvokeFunctionlambda:GetFunction などです。

必須: はい

タイプ: 文字列

パターン: (lambda:[*]|lambda:[a-zA-Z]+|[*])

Update requires: Replacement

EventSourceToken

Alexa Smart Home 関数の場合、呼び出し元によって指定される必要のあるトークン。

必須: いいえ

タイプ: 文字列

最小: 0

最大: 256

パターン: [a-zA-Z0-9._\-]+

Update requires: Replacement

FunctionName

Lambda 関数、バージョン、またはエイリアスの名前。

名前の形式

  • 関数名 - my-function (名前のみ)、my-function:v1 (エイリアス付き)。

  • 関数 ARN - arn:aws:lambda:us-west-2:123456789012:function:my-function.

  • 一部の ARN - 123456789012:function:my-function.

バージョン番号またはエイリアスを任意の形式に追加できます。完全な ARN にのみ適用される長さの制限。関数名のみを指定する場合、64 文字の長さに制限されます。

必須: はい

タイプ: 文字列

最小: 1

最大: 140

パターン: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

Update requires: Replacement

Principal

関数を呼び出す AWS サービスまたはアカウント。サービスを指定する場合は、SourceArn または SourceAccount を使用して、そのサービスを使用して関数を呼び出すことができるユーザーを制限します。

必須: はい

タイプ: 文字列

パターン: .*

Update requires: Replacement

SourceAccount

AWS サービスの場合、リソースを保有しているアカウントの ID。これを SourceArn の代わりに使用して、別のアカウントで所有されているリソース (アカウントのすべての Amazon S3 バケットなど) にアクセス許可を付与します。または、それを SourceArn とともに使用して、リソースが指定したアカウントによって所有されるようにします。たとえば、Amazon S3 バケットがその所有者によって削除され、別のアカウントによって再作成されるようにすることができます。

必須: いいえ

タイプ: 文字列

パターン: \d{12}

Update requires: Replacement

SourceArn

AWS サービスの場合、関数を呼び出す AWS リソースの ARN。たとえば、Amazon S3 バケットまたは Amazon SNS トピックです。

必須: いいえ

タイプ: 文字列

パターン: arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

Update requires: Replacement

関数のアクセス許可

MyLambdaFunction を呼び出すアクセス許可を Amazon S3 に付与します。

JSON

"LambdaInvokePermission": { "Type": "AWS::Lambda::Permission", "Properties": { "FunctionName": { "Fn::GetAtt": [ "MyLambdaFunction", "Arn" ] }, "Action": "lambda:InvokeFunction", "Principal": "s3.amazonaws.com", "SourceAccount": { "Ref": "AWS::AccountId" }, "SourceArn": { "Fn::GetAtt": [ "MyBucket", "Arn" ] } } }

YAML

LambdaInvokePermission: Type: AWS::Lambda::Permission Properties: FunctionName: !GetAtt - MyLambdaFunction - Arn Action: 'lambda:InvokeFunction' Principal: s3.amazonaws.com SourceAccount: !Ref 'AWS::AccountId' SourceArn: !GetAtt - MyBucket - Arn

このページの内容: