首页 > 解决方案 > 如何确保 Athena 生成具有 bucket-owner-full-control 的 S3 对象

问题描述

我们(帐户 A)想以编程方式在不同的 aws 帐户(帐户 B)中触发 athena 查询(startQueryExecution),我们使用假定角色来实现它。在完成 athena 查询后,我们期望结果应该写入我们的 aws 帐户 s3 存储桶(帐户 A)。我们通过设置双方 IAM 策略以允许 B 写入 A 的 S3 存储桶来设法做到这一点。

但是,帐户 A 中的 S3 对象似乎仍归帐户 B 所有,帐户 A 中的用户/角色无权访问这些对象。

我在想任何一种方法来解决这个问题,但我找不到任何如何做的例子

以某种方式确保 athena 使用 acl = bucket-owner-full-control 写入 s3 在对象创建后以某种方式将 s3 对象 acl 更改为 bucket-owner-full-control

任何想法?

标签: amazon-web-servicesamazon-s3permissionsamazon-athena

解决方案


@user273098 很想知道你是如何找到答案的

Athena 当前不提供指定 ACL 的功能。但是,两种解决方法是可能的

  1. 不要让账户 A 在账户 B 中担任角色,而是让账户 B 授予账户 A 的账户根/角色以访问账户 B 的 Athena。那么Account A就可以使用自己的角色/账户查询Account B中的数据了,Account A仍然可以访问到结果,因为Account A是object owner。

  2. 让 S3 流式 lambda 监听输出 S3 存储桶。对象进入后,使用SetObjectACL授予对对象的 bucket-owner-full-control。


推荐阅读