跨AWS账户复制S3数据:访问点配置疑问及报错排查
跨AWS账户复制S3数据的问题解答
环境与配置说明
- 目标S3存储桶:位于伦敦区域(eu-west-2),已启用ACL,未阻止公共访问,允许所有人列出、读写,桶策略授权S3
GetObject、PutObject、DeleteObject操作 - 源账户访问点:位于爱尔兰区域(eu-west-1),网络源为Internet,策略内容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "YYYXZZZ" } ] }
疑问解答
1. 是否需要在目标S3存储桶访问点中配置源访问点信息?
需要。目标访问点的策略得明确允许源访问点(或源账户身份)执行写入类操作(比如PutObject),这样跨账户复制时,源端的请求才能被目标存储桶正常接受。虽然你当前目标桶开了公共读写权限能临时绕开,但从安全和长期维护角度,建议精准授权源访问点,别用*开放所有人权限。
2. 是否需要在源S3存储桶访问点中配置目标访问点信息?
需要。源访问点的策略必须允许目标访问点(或目标账户身份)执行读取类操作(比如GetObject、ListBucket),不然复制时根本拿不到源端的数据。你当前的源访问点策略只给所有人开了ListBucket权限,连最关键的GetObject都没授权,也没针对目标访问点做精准配置,这肯定会影响复制流程。
关于API错误:"Invalid Access Point Policy. Update the access point policy and try again."(详情:Policy has invalid resource)
这个错误的核心是你在访问点策略里写的Resource格式不符合AWS规范。S3访问点的资源ARN必须是以下格式:arn:aws:s3:<区域>:<账户ID>:accesspoint/<访问点名称>
你当前源策略里的Resource是YYYXZZZ,完全不是合法的ARN格式。另外,如果是在目标访问点策略里引用源访问点作为资源,也必须用源访问点的完整ARN,不能简写或乱填,不然AWS会直接判定为无效资源。
内容的提问来源于stack exchange,提问作者MANUEL SILVA
相关产品推荐
相关产品推荐

