Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何确保Athena result S3对象具有bucket owner的完全控制权_Amazon S3_Permissions_Amazon Athena - Fatal编程技术网

Amazon s3 如何确保Athena result S3对象具有bucket owner的完全控制权

Amazon s3 如何确保Athena result S3对象具有bucket owner的完全控制权,amazon-s3,permissions,amazon-athena,Amazon S3,Permissions,Amazon Athena,我们(帐户A)希望以编程方式在不同的aws帐户(帐户B)中触发athena查询(startQueryExecution),我们使用假定角色来实现它。athena查询完成后,我们希望结果应该写入我们的aws帐户s3 bucket(帐户A)。我们通过设置双边IAM策略来实现这一点,允许B写入A的S3存储桶 然而,帐户A中的S3对象似乎仍然属于帐户B,帐户A中的用户/角色无权访问这些对象 我想用两种方法来解决这个问题,但我找不到任何一种方法的例子 以某种方式确保athena使用acl=bucket o

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

然而,帐户A中的S3对象似乎仍然属于帐户B,帐户A中的用户/角色无权访问这些对象

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

以某种方式确保athena使用acl=bucket owner完全控制写入s3 在创建对象后,以某种方式将s3对象acl更改为bucket owner完全控制


有什么想法吗?

到目前为止,还没有直接的方法来访问帐户A中写入的s3文件。我们解决这个问题的一种方法是将s3文件写入帐户B bucket,并有一个策略,允许帐户A访问帐户B s3 bucket,然后读取/处理文件。非常老套,但很管用

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

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

  • 与其让帐户A在帐户B中扮演角色,不如让帐户B授予帐户A的帐户根/角色访问帐户B的Athena。然后账户A可以使用自己的角色/账户查询账户B中的数据,结果仍然可以由账户A访问,因为账户A是对象所有者

  • 让S3流lambda监听输出S3存储桶。一旦对象进入,使用授予bucket owner对该对象的完全控制权


  • 我怀疑你是否能找到这样做的方法。Amazon Athena中提供的配置选项很少。您最好将其写入帐户B中的一个bucket,然后将该对象复制到帐户a中的一个bucket。在我们仍然担任帐户B角色的同时,我设法更改了s3对象的ACL。一切顺利