向其他账户授予 Lambda 函数访问权限 - AWS Lambda

向其他账户授予 Lambda 函数访问权限

要与其他 AWS 账户 共享函数,请在该函数的基于资源的策略中添加跨账户权限语句。执行 add-permission 命令,并将账户 ID 指定为 principal。以下示例向账户 111122223333 授权以 my-function 别名调用 prod

aws lambda add-permission \ --function-name my-function:prod \ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal 111122223333 \ --output text

您应看到以下输出:

{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}

基于资源的策略向另一个账户授予访问此函数的权限,但不允许该账户中的用户超出其权限。另一个账户中的用户必须具有相应的用户权限才能使用 Lambda API。

要限制对另一个账户中用户或角色的访问,请将身份的完整 ARN 指定为主体。例如:arn:aws:iam::123456789012:user/developer

别名限制了其他账户可以调用哪个版本。它要求另一个账户在函数 ARN 中包括该别名。

aws lambda invoke \ --function-name arn:aws:lambda:us-east-2:123456789012:function:my-function:prod out

您应看到以下输出:

{ "StatusCode": 200, "ExecutedVersion": "1" }

然后,函数所有者可以更新别名以指向新版本,而无需调用者更改他们调用函数的方式。这可以确保另一个账户不需要更改其代码即可使用新版本,并且它只具有调用与别名关联的函数版本的权限。

您可以授予对作用于现有函数的大多数 API 操作的跨账户访问权。例如,您可以授予 lambda:ListAliases 权限,以允许一个账户获得别名列表,或授予 lambda:GetFunction 权限,以让它们下载您的函数代码。分别添加每个权限,或使用 lambda:* 授予有关指定函数的所有操作的权限。

要授予其他账户对多个函数的权限,或不对某个函数执行的操作的权限,请使用 IAM 角色