如何授予 DDB 导出服务对不同 AWS 账户中存储桶的访问权限?

How do I give the DDB export service access to a bucket in a different AWS account?

我想将 DDB table 从一个账户直接导出到另一个账户的 s3 存储桶。

开始导出时,我选择“A different AWS account”并指定其存储桶。

失败并出现此错误:Status Code: 403; Error Code: AccessDenied

显然我需要授予它权限,但我找不到任何相关文档。 What/who 需要授予存储桶权限?明明是支持的功能,但是我找不到任何关于权限配置的解释。

此 link 应涵盖目标中您的 IAM 策略和 S3 存储桶策略所需的特定策略:

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataExport.Requesting.html#DataExport.Requesting.Permissions

如果您在目标 S3 存储桶上使用 KMS 密钥,请特别注意它们,您还需要为请求主体授予对这些密钥的权限。这是一个常见问题!

在您要导出的存储桶所在的目标账户中,您必须为该存储桶分配一个存储桶策略。转到存储桶 Permissions 选项卡并附加以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ExampleStatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789000:user/my-user"
            },
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}

委托人可以是在源帐户中启动导出的用户或角色。显然,委托人需要有必要的权限才能在源存储桶中进行导出。