他のアカウントに Lambda レイヤーへのアクセス許可を付与する
レイヤーを別の AWS アカウント と共有するには、レイヤーのリソースベースのポリシー にクロスアカウントアクセス許可ステートメントを追加します。add-layer-version-permissionprincipal
。アクセス許可は、各ステートメントで、1 つのアカウント、すべてのアカウント、または 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
オプションを使用します。以下の例では、バージョン 3 の my-layer
を使用する o-t194hfs8cz
アクセス許可を、組織のすべてのアカウントに付与します。
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"}}}"
複数のアカウントまたは組織にアクセス許可を付与するには、複数のステートメントを追加する必要があります。