【问题标题】:AWS S3 How to move files from a bucket to another bucket in a different regionAWS S3 如何将文件从存储桶移动到不同区域的另一个存储桶
【发布时间】:2018-07-11 03:14:22
【问题描述】:

我在不同地区有两个存储桶,B1 在 APSoutheast2(悉尼),另一个 (B2) 在 USWest1(美国西部(加利福尼亚北部))。 我正在尝试使用 AWS S3 SDK (.NET) 将一些文件从 B1 移动到 B2,但我似乎没有看到一种简单的方法。

这是我的示例代码:

var sydneyClient = new AmazonS3Client("accessKeyID", "secretKey", 
RegionEndpoint.APSoutheast2)
var fileInfo = new S3FileInfo(sydneyClient, "b1", "filePath");
if (!fi.Exists)
{
    return;
}
fileInfo.MoveTo("b2", "filePath");

这给了我以下错误:

Amazon.S3.AmazonS3Exception: 'Error making request with Error Code 
MovedPermanently and Http Status Code MovedPermanently. No further error 
information was returned by the service.'

我认为这是因为 b2 与我执行此操作时位于不同的区域:

var listAllRequest = new ListObjectsRequest();
listAllRequest.BucketName = "b2";
var listAllResponse = sydneyClient.ListObjects(listAllRequest);

我知道了:

The bucket you are attempting to access must be addressed using the specified 
endpoint. Please send all future requests to this endpoint

我知道我的“sydneyClient”无法访问在美国创建的另一个存储桶是有道理的,因为我在创建它时将区域指定为“RegionEndpoint.APSoutheast2”,并且根据 AWS 文档,每个区域都是独立的。

如果我尝试将文件从 b1 移动到 APSoutheast2 中的另一个存储桶,则可以正常工作。

我知道我可以将文件从 b1 下载到本地存储,为 b2 创建另一个 AmazonS3Client,然后进行上传。 但是在这种情况下,有没有一种简单的方法可以将文件从 b1 移动到另一个区域的存储桶中?

谢谢

【问题讨论】:

    标签: c# amazon-web-services amazon-s3


    【解决方案1】:

    Amazon S3 没有“移动”命令。相反,您应该使用AmazonS3Client.CopyObject Method,指定:

    public virtual CopyObjectResponse CopyObject(
             String sourceBucket,
             String sourceKey,
             String destinationBucket,
             String destinationKey
    )
    

    然后,删除原来的对象。

    这适用于存储桶之间以及区域之间。将请求发送到目标区域(即目标存储桶所在的区域)。

    【讨论】:

    • 谢谢它解决了我的问题。 “将请求发送到目标区域”是关键,我使用源 S3 客户端尝试过,但失败了。
    【解决方案2】:

    您可以直接使用 AWS Management Portal 进行配置,而无需更改任何代码。

    此功能称为 S3 跨区域复制(简称 CRR)。

    他们有一个setup guide here

    【讨论】:

    • CRR 不复制现有对象。
    • 谢谢,但这不是我真正想要实现的。 John Rotenstein 提供了我想要的解决方案。不过还是谢谢。
    猜你喜欢
    • 2020-05-29
    • 2020-09-15
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多