【问题标题】:AWS Lambda from cross account ECR : Lambda does not have permission to access the ECR image来自跨账户 ECR 的 AWS Lambda:Lambda 无权访问 ECR 映像
【发布时间】:2022-06-23 15:58:46
【问题描述】:

我正在尝试从另一个账户 A 的 ECR 图像在账户 B 中创建一个 lambda 函数,但我遇到了 Lambda 没有访问 ECR 图像的权限错误。 p>

我在this 之后创建了以下 ECR 策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CrossAccountPermission",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::BBBBBBBBBBBB:root"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ],
      "Condition": {
        "StringLike": {
          "aws:sourceArn:": "arn:aws:lambda:eu-west-1:BBBBBBBBBBBB:function:*"
        }
      }
    }
  ]
} 

我正在使用 aws sso 代入角色来执行 lambda 创建,我不知道这是否有影响。

账户 B 和 A 不在同一个 AWS 组织单位中。

我测试的东西:

  • 如果我从针对 lambda 服务的语句中删除条件,错误就会消失,但显然这不是永久解决方案。
  • 在账户 B 中使用相同的 ECR 映像运行 ECS 任务可以正常工作。
  • 我尝试按照 SAM 教程 here 进行操作,但遇到了同样的问题。

我要检查的东西不多了,我真的很想避免复制帐户 B 中的 ECR 图像。

您知道为什么示例策略似乎不起作用吗?

如何从来自 lambda 服务的所有内容中缩小政策范围?我计划使用aws:PrincipalOrgPaths 来允许多个组织单位,但这似乎不适用于 lambda 主体。

【问题讨论】:

  • 一切对我来说都是正确的。您确定 Lambda 函数部署在 eu-west-1 中吗?
  • 是的,我使用的是eu-west-1,尽管我也使用"aws:sourceArn:":而不是"aws:sourceArn":...很抱歉让您浪费了一些时间...
  • 仍在寻找允许使用PrincipalOrgPaths 进行过滤的方法
  • 没问题,很高兴你发现了它。这些小错别字可能很难看出来。

标签: amazon-web-services aws-lambda amazon-ecr


【解决方案1】:

正如我在评论中所说,这是一个愚蠢的拼写错误,政策中经常出现这种情况。

我用"aws:sourceArn:": 代替"aws:sourceArn": ...

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2021-03-16
    • 2020-05-23
    • 2019-03-25
    • 2021-12-23
    • 2017-04-14
    • 1970-01-01
    • 2020-01-18
    • 2020-01-01
    • 2018-10-26
    相关资源
    最近更新 更多