AddPermission
授予 AWS 服务、AWS 账户 或 AWS 组织使用函数的权限。您可以在函数级别应用策略,也可以指定限定符以限制对单个版本或别名的访问。如果您使用限定符,则调用程序必须使用该版本或别名的完整 Amazon Resource Name (ARN) 来调用该函数。注意:Lambda 不支持将策略添加到版本 $LATEST。
要向另一个账户授予权限,请将账户 ID 指定为 Principal
。要向在 AWS Organizations 中定义的组织授予权限,请将组织 ID 指定为 PrincipalOrgID
。对于 AWS 服务,主体是服务定义的域样式标识符,例如 s3.amazonaws.com
或 sns.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
(具有别名)。 -
函数 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-_]+))?
必需:是
-
- Qualifier
-
指定版本或别名以向函数的发布版本添加权限。
长度限制:最小长度为 1。长度上限为 128。
模式:
(|[a-zA-Z0-9$_-]+)
请求正文
请求接受采用 JSON 格式的以下数据。
- Action
-
主体可以对函数执行的操作。例如,
lambda:InvokeFunction
或lambda: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 账户。如果您指定一个服务,请使用
SourceArn
或SourceAccount
来限制哪些人可以通过该服务调用该函数。类型:字符串
模式:
[^\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 不匹配。调用
GetFunction
或GetAlias
API 操作来检索您的资源的最新 RevisionId。HTTP 状态代码:412
- ResourceConflictException
-
资源已存在,或者其他操作正在进行中。
HTTP 状态代码:409
- ResourceNotFoundException
-
请求中指定的资源不存在。
HTTP 状态代码:404
- ServiceException
-
AWS Lambda 服务遇到了内部错误。
HTTP 状态代码:500
- TooManyRequestsException
-
超出了请求吞吐量限制。有关更多信息,请参阅 Lambda 限额。
HTTP 状态代码:429
另请参阅
有关在特定语言的 AWS SDK 中使用此 API 的更多信息,请参阅以下内容: