amazon-web-services - 如何在北京(中国)存储桶和全局存储桶之间同步 S3 中的数据?

标签 amazon-web-services amazon-s3

北京(中国)地区非常独特,因为它几乎所有的东西都是独立的(与 AWS 全局分开)。例如,要使用 AWS CLI 列出我们必须指定的对象 regionendpoint-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/

相关文章:

javascript - 无法让 node.js 返回有效的签名 PUT URL

amazon-web-services - Cloudformation AWS CLI 查询具有多个嵌套堆栈的所有堆栈资源

node.js - 如何下载 AWS 证书以将其与 NodeJS 一起使用

java - 使用 Java 从 S3 检索文件并将它们放入 EC2 Linux 实例

ruby-on-rails - 为 Amazon S3 编写 IAM 策略和 CORS 配置

amazon-s3 - 您可以对 S3 文件存储设置权限吗?

S3 存储桶的电子邮件地址?

amazon-web-services - 如何在 AWS ALB 中进行端口转发

laravel - 使用 laravel 上传到 s3 存储桶文件夹

amazon-web-services - 如何理解 S3 或 Cassandra 中的 OLAP 多维数据集?