让 AWS Glue 写入另一个 AWS 账户中的 S3 存储桶

vr0*_*00n 4 amazon-s3 amazon-iam aws-glue

我需要使用 AWS Glue (Account:PROD) 来写入另一个账户 (Account:DEV) 上的 S3 Bucket

根据http://docs.aws.amazon.com/glue/latest/dg/access-control-overview.html

基于资源的政策

其他服务,例如 Amazon S3,也支持基于资源的权限策略。例如,您可以将策略附加到 S3 存储桶以管理对该存储桶的访问权限。AWS Glue 不支持基于资源的策略。

...这意味着我不能做 arn:aws:s3::DEV-Account:S3-Bucket/*

我尝试Trusted entity使用 PROD 在 DEV 帐户上创建一个并附加了一个策略集以访问 DEV 帐户上的 s3 存储桶。

我该怎么做?

hoa*_*axz 6

我们遇到了同样的问题,我们通过将这些添加到我们的 DEV 存储桶策略中来找到解决方案:

{
    "Sid": "SID",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::[PROD-ACCOUNT-ID]:role/[PROD-GLUE-ROLE]"
    },
    "Action": [
        "s3:Get*",
        "s3:Put*",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:ListBucketVersions",
        "s3:ListMultipartUploadParts"
    ],
    "Resource": [
        "arn:aws:s3:::[DEV-BUCKET]",
        "arn:aws:s3:::[DEV-BUCKET]/*"
    ]
}
Run Code Online (Sandbox Code Playgroud)

这适用于 PROD Glue 角色 ([PROD-GLUE-ROLE]) 帐户策略:

{
    "Action": [
        "s3:Get*",
        "s3:List*"
        "s3:Put*"
    ],
    "Resource": [
        "arn:aws:s3:::[DEV-BUCKET]*"
    ],
    "Effect": "Allow"
}
Run Code Online (Sandbox Code Playgroud)

之后,您应该能够使用 PROD 帐户中的 PROD 角色从 DEV 存储桶读取数据和向 DEV 存储桶写入数据:

data_frame = glue_context.create_dynamic_frame_from_options(
    connection_type='s3',
    connection_options={
        'paths':'s3://[DEV-BUCKET]/...'
    },
    format='json'
)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助