【问题标题】:Deploy Lambda with code source from another accounts s3 bucket使用来自另一个账户 s3 存储桶的代码源部署 Lambda
【发布时间】:2021-08-25 15:00:30
【问题描述】:

我将我的 Lambda zip 文件存储在账户 A 的 S3 存储桶中。在账户 B 中,我有我的 Lambda。我试图让我的 Lambda 使用账户 A 存储桶中的 zip 文件,但我不断收到:

Your access has been denied by S3, please make sure your request credentials have permission to GetObject for bucket/code.zip. S3 Error Code: AccessDenied. S3 Error Message: Access Denied

我遵循了我在网上找到的指南,但我仍然面临问题。 这是我当前的配置:

账户 A 的 S3 存储桶政策:

{
    "Version": "2012-10-17",
    "Id": "ExamplePolicy",
    "Statement": [
        {
            "Sid": "ExampleStmt",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::AccountBID:role/MyLambdaRole"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucket",
                "arn:aws:s3:::bucket/*"
            ]
        }
    ]
}

账户 B 的 Lambda 执行角色政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucket/*",
                "arn:aws:s3:::bucket"
            ]
        }
    ]
}

【问题讨论】:

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


    【解决方案1】:

    您的存储桶策略中的委托人是 AWS Lambda 在执行期间使用的角色,在部署您的函数时不使用该角色。您可以轻松地在存储桶策略中允许整个 B 账户委托人,然后在账户 B 中使用 IAM 策略来允许以这种方式访问​​存储桶。

    允许整个帐户的存储桶策略如下所示:

    {
        "Version": "2008-10-17",
        "Statement": [
            {
                "Sid": "ProductAccountAccess",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::XXXX-account-number:root"
                    ]
                },
                "Action": [
                    "s3:Get*",
                    "s3:List*"
                ],
                "Resource": [
                    "arn:aws:s3:::bucket",
                    "arn:aws:s3:::bucket/*"
                ]
            }
        ]
    }
    

    这意味着账户 B 中的 IAM 策略取决于您如何进行部署。这意味着用于部署的任何凭据都需要对该存储桶具有 S3 权限。

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 2018-08-09
      • 1970-01-01
      • 2020-07-05
      • 2019-10-25
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      相关资源
      最近更新 更多