如何确保Athena结果S3对象具有bucket-owner-full-control

时间:2019-06-13 02:05:15

标签: amazon-s3 permissions amazon-athena

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

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

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

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

有什么主意吗?

2 个答案:

答案 0 :(得分:0)

截至目前,尚无直接方法可以访问帐户A中写入的s3文件。我们解决此问题的一种方法是将s3文件写入帐户B存储桶中,并具有允许访问帐户A访问权限的策略到帐户B s3存储桶,然后读取/处理文件。非常hacky,但是可以工作

答案 1 :(得分:0)

@ user273098很好奇,看看您如何找到答案

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

  1. 让帐户B授予帐户A的帐户根/角色,而不是让帐户A在帐户B中扮演角色,而可以访问帐户B的雅典娜。然后,帐户A可以使用其自己的角色/帐户来查询帐户B中的数据,并且由于帐户A是对象所有者,因此帐户A仍可以访问结果。

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