AWS::Lambda::Permission - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::Lambda::Permission

AWS::Lambda::Permission 资源授予 AWS 服务或其他账户使用函数的权限。您可以在函数级别应用策略,也可以指定限定符以限制对单个版本或别名的访问。如果您使用限定符,则调用程序必须使用该版本或别名的完整 Amazon 资源名称 (ARN) 来调用该函数。

要向另一个账户授予权限,请将账户 ID 指定为 Principal。对于 AWS 服务,委托人是服务定义的域样式标识符,例如 s3.amazonaws.comsns.amazonaws.com。对于 AWS 服务,您还可以将关联资源的 ARN 指定为 SourceArn。如果在未指定源的情况下向服务委托人授予权限,则其他账户可能会在其账户中配置资源以调用 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 服务或账户。如果您指定一个服务,请使用 SourceArnSourceAccount 来限制哪些人可以通过该服务调用该函数。

必需:是

类型:字符串

模式.*

Update requires: Replacement

SourceAccount

对于 Amazon S3,拥有该资源的账户的 ID。与 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

示例

跨账户调用

授予账户 123456789012 调用在同一模板中创建的、名为 function 的函数资源的权限。

YAML

permission: Type: AWS::Lambda::Permission Properties: FunctionName: !GetAtt function.Arn Action: lambda:InvokeFunction Principal: 123456789012

Amazon S3 通知

授予 Amazon S3 调用在同一模板中创建的、名为 function 的函数资源的权限,以处理名为 bucket 的存储桶资源的通知。

JSON

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

YAML

s3Permission: Type: AWS::Lambda::Permission Properties: FunctionName: !GetAtt function.Arn Action: lambda:InvokeFunction Principal: s3.amazonaws.com SourceAccount: !Ref 'AWS::AccountId' SourceArn: !GetAtt bucket.Arn