我在AWS帐户“ A”中有一个redshift集群,在帐户“ B”中有一个S3存储桶。我需要将数据从A中的redshift帐户卸载到B中的S3存储桶。
我已经提供了必要的存储区策略和角色策略以卸载数据。数据也已成功卸载。现在的问题是,从此卸载创建的文件的所有者是account A和文件需要由用户B使用。在尝试访问该对象时,我拒绝访问。我该如何解决?
PS:Redshift IAM策略已授予ListBucket和GetObject权限。
答案 0 :(得分:1)
这对我有用-链接IAM角色。
例如,假设公司A要访问属于公司B的Amazon S3存储桶中的数据。公司A为Amazon Redshift创建一个名为RoleA的AWS服务角色并将其附加到其集群。公司B创建一个名为RoleB的角色,该角色有权访问公司B存储桶中的数据。要访问公司B存储桶中的数据,公司A使用链接了RoleA和RoleB的iam_role参数运行COPY命令。在UNLOAD操作期间,RoleA临时假定RoleB访问Amazon S3存储桶。
答案 1 :(得分:0)
我想起来了四件事,它们可能会阻止帐户B的用户访问同一帐户中S3存储桶中的对象。
用户(或用户所属的组)是否具有附加的IAM策略,以允许其从AWS存储桶中列出/读取对象?您可以通过转到IAM控制台并检查用户来进行检查。
存储桶ACL是否允许主机帐户的列表/读取权限?可能是存储桶授予了远程帐户的权限,但没有授予主机帐户的权限。您可以转到S3控制台,选择存储桶,然后在滑入式窗口中单击“权限”来进行检查。
S3存储桶策略是否明确拒绝任何人的列表/读取权限?如果是这样,您的用户可能就是那个人。可以使用空白政策。通过与#2相同的方法进行检查。
每个S3对象都有权限设置。可能是帐户A中的Redshift服务未设置授予帐户B列表/读取访问权限所需的权限。