AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::Lambda::Permission

AWS::Lambda::Permission 资源将策略语句关联到特定的 AWS Lambda (Lambda) 函数的访问策略。函数策略授予特定 AWS 服务或应用程序调用此函数的权限。有关更多信息,请参阅 AWS Lambda Developer Guide 中的 AddPermission

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

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

YAML

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

属性

有关更多信息和当前有效值,请参阅 AWS Lambda 开发人员指南 中的 AddPermission

Action

要在此语句中允许的 Lambda 操作。例如,您可以指定 lambda:CreateFunction 以指定特定的操作,或使用通配符 (lambda:*) 授予执行所有 Lambda 操作的权限。有关操作的列表,请参阅 IAM 用户指南 中的 AWS Lambda 的操作和条件上下文键

Required: Yes

Type: String

更新要求替换

EventSourceToken

必须由调用该函数的委托人提供的唯一令牌。

Required: No

Type: String

更新要求替换

FunctionName

要与此语句关联的 Lambda 函数的名称(物理 ID)、Amazon 资源名称 (ARN) 或别名 ARN。Lambda 将此语句添加到函数的访问策略。

Required: Yes

Type: String

更新要求替换

Principal

接受权限以调用 Lambda 函数的实体。此实体可以是任意有效的 AWS 产品委托人,如 s3.amazonaws.comsns.amazonaws.com,或者,如果是授予跨账户权限,则为 AWS 账户 ID。例如,您可能需要允许其他 AWS 账户中的自定义应用程序调用您的函数来向 Lambda 推送事件。

Required: Yes

Type: String

更新要求替换

SourceAccount

资源所有者的 AWS 账户 ID(无连字符)。例如,如果您在 SourceArn 属性中指定 S3 存储桶,则此值为存储桶拥有者的账户 ID。您可以使用此属性来确保所有源委托人均归特定账户所有。

重要

此属性并非所有事件源都支持。有关更多信息,请参阅 AWS Lambda Developer Guide 中的 AddPermission 操作的 SourceAccount 参数。

Required: No

Type: String

更新要求替换

SourceArn

调用您的函数的资源的 ARN。在授予 Amazon Simple Storage Service (Amazon S3) 调用您的函数的权限时,请指定此属性及存储桶 ARN 作为其值。这可确保只有特定存储桶生成的事件(而不是创建到您的函数的映射的任意 AWS 账户的任意存储桶)能够调用此函数。

重要

此属性并非所有事件源都支持。有关更多信息,请参阅 AWS Lambda Developer Guide 中的 AddPermission 操作的 SourceArn 参数。

Required: No

Type: String

更新要求替换

示例

下面的示例授予 S3 存储桶调用 Lambda 函数的权限。

JSON

Copy
"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

Copy
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

本页内容: