北京(中国)地区非常独特,因为它几乎所有的东西都是独立的(与 AWS 全局分开)。例如,要使用 AWS CLI 列出我们必须指定的对象 region
和 endpoint-url
:
aws --region cn-north-1 \
--endpoint-url https://s3.cn-north-1.amazonaws.com.cn \
--profile AN_AWS_CN_PROFILE \
s3 ls s3://AN_AWS_CN_BUCKET/
我的问题是如何在北京(中国)存储桶和全局存储桶之间同步数据?首先,无法使用指定的
region
识别全局存储区。 & endpoint-url
以上。例如,aws --region cn-north-1 \
--endpoint-url https://s3.cn-north-1.amazonaws.com.cn \
--profile AN_AWS_CN_PROFILE \
s3 cp s3://AN_AWS_CN_BUCKET/ s3://AN_AWS_IRELAND_BUCKET/
会给
fatal error: An error occurred (NoSuchBucket) when calling the ListObjects operation: The specified bucket does not exist
(目标存储桶确实存在。)
到目前为止,我已经探索了 CLI 参数,以及
.aws/config
文件来定义配置文件。也许可以使用多个 profile
在单个命令中,但似乎无法配置 endpoint-url
在 .aws/config
,因为没有提到 here .现在我只是将文件复制到本地然后上传,随着数据集的快速增长,这将成为一个问题。使用 EMR 可以解决扩展问题,但它增加了额外的复杂性。我想知道是否有更好且可能更简单的解决方案?谢谢你。
最佳答案
BJS/ZHY 区域与经典区域在不同的分区下(BJS/ZHY 为 aws-cn,其他区域为 aws)
不同的分区阻止了来自 BJS 和经典区域的账户相互交谈——他们无法理解来自其他分区的 ARN,也无法将来自其他分区的账户列入白名单或授予权限。
中国地区的 S3 也存在一些问题,即某些 S3 url/IP 被本地网络提供商阻止。
根据我的经验,实现这一目标的最佳方法是创建一个 Lambda 函数将 S3 对象上传到经典分区中的存储桶,或者配置 SNS->SQS->SQS 监听器模式。
关于amazon-web-services - 如何在北京(中国)存储桶和全局存储桶之间同步 S3 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45609558/