通过VPC专用子网中托管的Lambda从另一个帐户访问S3存储桶

时间:2019-12-11 17:59:57

标签: amazon-s3 aws-lambda amazon-iam

我有两个AWS账户A和B,并且我处于设置之下

帐户A:S3存储桶

帐户B:托管需要从帐户A访问S3存储桶的Lambda

我在帐户B中使用以下策略创建了IAM角色,并将其附加到Lambda

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

我还将存储桶策略(如下)与帐户A中的S3存储桶相关联

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::AccountBID:role/lambda-role"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::dest-bucket-name/*"
    }
]
}

VPC端点已正确配置。 Lambda请求从存储桶下载工件的请求正在超时,有人可以指出我的错误之处。

1 个答案:

答案 0 :(得分:0)

需要注意的两件事:

  1. 您确定您的lambda可以成功承担职责吗?

  2. s3:ListBucket是应用于存储桶的权限。 arn:aws:s3:::dest-bucket-name/*与存储桶中的所有对象匹配。尝试将ListBucket分别应用于arn:aws:s3:::dest-bucket-name。 (通常,该模式有一个针对 object 操作的策略块,而另一个针对 bucket 操作的策略块。)