【问题标题】:how to ensure that Athena result S3 object with bucket-owner-full-control如何确保 Athena 生成具有 bucket-owner-full-control 的 S3 对象
【发布时间】:2019-10-27 13:45:49
【问题描述】:

我们(帐户 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 Athena 中可用的配置选项非常少。您最好将其写入账户 B 中的存储桶,然后将对象复制到账户 A 中的存储桶。
  • 我设法更改了 s3 对象的 ACL,而我们仍然承担帐户 B 角色。结果还不错

标签: amazon-web-services amazon-s3 permissions amazon-athena


【解决方案1】:

到目前为止,还没有直接的方法可以访问在账户 A 中写入的 s3 文件。我们解决此问题的一种方法是在账户 B 存储桶中写入 s3 文件,并制定一个策略来授予对账户 A 的访问权限到账户 B s3 存储桶,然后读取/处理文件。非常hacky但有效

【讨论】:

    【解决方案2】:

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

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

    1. 不要让账户 A 在账户 B 中担任角色,而是让账户 B 授予账户 A 的账户根/角色以访问账户 B 的 Athena。那么账户A就可以使用自己的角色/账户来查询账户B中的数据,结果仍然可以被账户A访问,因为账户A是对象所有者。

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

    【讨论】:

      猜你喜欢
      • 2020-08-19
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 2014-01-21
      • 2018-12-14
      • 2021-12-07
      相关资源
      最近更新 更多