😁
[Pulumi] AWS LambdaからECRをクロスアカウントで利用する時のポリシー
やりたいこと
AWS Organizationsを利用していて、AWS LambdaとECRがそれぞれ別アカウントにある。
AWS LambdaからECRのコンテナをプルできるようにクロスアカウント用のポリシーを設定したい。
ECRのリポジトリポリシー
PulumiのTypeScriptで作成。ECRに下記のリポジトリポリシーを設定することで、AWS Lambdaからコンテナイメージが利用可能になる。
-
lambdaAccountId
はAWS LambdaのあるAWSアカウントID -
awsRegion
はAWS LambdaとECRのAWSリージョンで同一リージョンである必要があります。
aws.iam.getPolicyDocument({
statements: [
{
sid: "AllowCrossAccount",
effect: "Allow",
actions: ["ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage"],
principals: [
{
type: "AWS",
identifiers: [`arn:aws:iam::${lambdaAccountId}:root`],
},
],
},
{
effect: "Allow",
principals: [
{
type: "Service",
identifiers: ["lambda.amazonaws.com"],
},
],
actions: ["ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage"],
conditions: [
{
test: "StringLike",
variable: "aws:sourceARN",
values: [
`arn:aws:lambda:${awsRegion}:${lambdaAccountId}:function:*`,
],
},
],
},
],
});
参考文献
Discussion