😁

[Pulumi] AWS LambdaからECRをクロスアカウントで利用する時のポリシー

2024/02/27に公開

やりたいこと

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:*`,
          ],
        },
      ],
    },
  ],
});

参考文献

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-create.html#gettingstarted-images-permissions

Discussion