AddPermission - AWS Lambda

AddPermission

授予 AWS 服务、AWS 账户 或 AWS 组织使用函数的权限。您可以在函数级别应用策略,也可以指定限定符以限制对单个版本或别名的访问。如果您使用限定符,则调用程序必须使用该版本或别名的完整 Amazon Resource Name (ARN) 来调用该函数。注意:Lambda 不支持将策略添加到版本 $LATEST。

要向另一个账户授予权限,请将账户 ID 指定为 Principal。要向在 AWS Organizations 中定义的组织授予权限,请将组织 ID 指定为 PrincipalOrgID。对于 AWS 服务,主体是服务定义的域样式标识符,例如 s3.amazonaws.com.rproxy.goskope.comsns.amazonaws.com。对于 AWS 服务,您还可以将关联资源的 ARN 指定为 SourceArn。如果在未指定源的情况下向服务主体授予权限,则其他账户可能会在其账户中配置资源以调用 Lambda 函数。

此操作将一条语句添加到该函数的基于资源的权限策略。有关函数策略的更多信息,请参阅将基于资源的策略用于 Lambda

请求语法

POST /2015-03-31/functions/FunctionName/policy?Qualifier=Qualifier HTTP/1.1 Content-type: application/json { "Action": "string", "EventSourceToken": "string", "FunctionUrlAuthType": "string", "Principal": "string", "PrincipalOrgID": "string", "RevisionId": "string", "SourceAccount": "string", "SourceArn": "string", "StatementId": "string" }

URI 请求参数

请求使用以下 URI 参数。

FunctionName

Lambda 函数的名称、版本或别名。

名称格式
  • 函数名称my-function(仅限名称)、my-function:v1(具有别名)。

  • 函数 ARNarn:aws:lambda:us-west-2:123456789012:function:my-function

  • 部分 ARN123456789012: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-_]+))?

必需:是

Qualifier

指定版本或别名以向函数的发布版本添加权限。

长度限制:最小长度为 1。长度上限为 128。

模式:(|[a-zA-Z0-9$_-]+)

请求正文

请求接受采用 JSON 格式的以下数据。

Action

主体可以对函数执行的操作。例如,lambda:InvokeFunctionlambda:GetFunction

类型:字符串

模式:(lambda:[*]|lambda:[a-zA-Z]+|[*])

必需:是

EventSourceToken

对于 Alexa Smart Home 函数,为必须由调用程序提供的令牌。

类型:字符串

长度约束:最小长度为 0。最大长度为 256。

模式:[a-zA-Z0-9._\-]+

必需:否

FunctionUrlAuthType

函数 URL 使用的身份验证类型。如果想将访问权限限制为仅经过身份验证的用户,请设置为 AWS_IAM。如果想绕过 IAM 身份验证以创建公有端点,请设置为 NONE。有关更多信息,请参阅 Lambda 函数 URL 的安全性和身份验证模型

类型:字符串

有效值:NONE | AWS_IAM

必需:否

Principal

调用函数的 AWS 服务 或 AWS 账户。如果您指定一个服务,请使用 SourceArnSourceAccount 来限制哪些人可以通过该服务调用该函数。

类型:字符串

模式:[^\s]+

必需:是

PrincipalOrgID

AWS Organizations 中的组织标识符。使用此函数向此组织下的所有 AWS 账户 授予权限。

类型:字符串

长度限制:最小长度为 12。最大长度为 34。

模式:^o-[a-z0-9]{10,32}$

必需:否

RevisionId

仅当修订版 ID 与指定的 ID 匹配时才更新策略。使用此选项以避免修改自上次读取后已发生更改的策略。

类型:字符串

必需:否

SourceAccount

对于 AWS 服务,为拥有此资源的 AWS 账户 ID。将其与 SourceArn 一起使用以确保资源归指定的账户所有。Amazon S3 存储桶的拥有者可以将其删除,并由其他账户重新创建。

类型:字符串

长度约束:最大长度为 12。

模式:\d{12}

必需:否

SourceArn

对于 AWS 服务,为调用该函数的 AWS 资源的 ARN。例如,Amazon S3 存储桶或 Amazon SNS 主题。

请注意,Lambda 使用 StringLike 运算符配置该比较。

类型:字符串

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

必需:否

StatementId

将语句与同一策略中的其他语句区分开来的语句标识符。

类型:字符串

长度约束:最小长度为 1。最大长度为 100。

模式:([a-zA-Z0-9-_]+)

必需:是

响应语法

HTTP/1.1 201 Content-type: application/json { "Statement": "string" }

响应元素

如果此操作成功,则该服务将会发送回 HTTP 201 响应。

服务以 JSON 格式返回的以下数据。

Statement

添加到函数策略的权限语句。

类型:字符串

错误

有关所有操作返回的常见错误的信息,请参阅 常见错误

InvalidParameterValueException

请求中的参数之一无效。

HTTP 状态代码:400

PolicyLengthExceededException

资源的权限策略太大。有关更多信息,请参阅 Lambda 限额

HTTP 状态代码:400

PreconditionFailedException

提供的 RevisionId 与 Lambda 函数或别名的最新 RevisionId 不匹配。调用 GetFunctionGetAlias API 操作来检索您的资源的最新 RevisionId。

HTTP 状态代码:412

ResourceConflictException

资源已存在,或者其他操作正在进行中。

HTTP 状态代码:409

ResourceNotFoundException

请求中指定的资源不存在。

HTTP 状态代码:404

ServiceException

AWS Lambda 服务遇到了内部错误。

HTTP 状态代码:500

TooManyRequestsException

超出了请求吞吐量限制。有关更多信息,请参阅 Lambda 限额

HTTP 状态代码:429

另请参阅

有关在特定语言的 AWS SDK 中使用此 API 的更多信息,请参阅以下内容: