向其他账户授予 Lambda 层访问权限
要与其他 AWS 账户 共享层,请在该层的基于资源的策略中添加跨账户权限语句。执行 add-layer-version-permissionprincipal
。在每个语句中,您可以向 AWS Organizations 中的单个账户、所有账户或组织授予权限。
以下示例向账户 111122223333 授予访问 bash-runtime
层版本 2 的权限。
aws lambda add-layer-version-permission \ --layer-name bash-runtime \ --version-number 2 \ --statement-id xaccount \ --action lambda:GetLayerVersion \ --principal 111122223333 \ --output text
您应该可以看到类似于如下所示的输出内容:
{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:GetLayerVersion","Resource":"arn:aws:lambda:us-east-1:123456789012:layer:bash-runtime:2"}
权限仅适用于单个层版本。每次创建新的层版本时都需重复此过程。
要向 AWS Organizations 组织中的所有账户授予权限,请使用 organization-id
选项。以下示例授予组织 o-t194hfs8cz
中的所有账户使用 my-layer
版本 3 的权限。
aws lambda add-layer-version-permission \ --layer-name my-layer \ --version-number 3 \ --statement-id engineering-org \ --principal '*' \ --action lambda:GetLayerVersion \ --organization-id o-t194hfs8cz \ --output text
您应看到以下输出:
{"Sid":"engineering-org","Effect":"Allow","Principal":"*","Action":"lambda:GetLayerVersion","Resource":"arn:aws:lambda:us-east-2:123456789012:layer:my-layer:3","Condition":{"StringEquals":{"aws:PrincipalOrgID":"o-t194hfs8cz"}}}"
要向多个账户或组织授予权限,您必须添加多个语句。