S3 CopyObjectRequest между регионами - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь скопировать некоторые объекты между 2 корзинами S3, которые находятся в разных регионах.

У меня есть это:

      static void PutToDestination(string filename)
      {
        var credentials = new Amazon.Runtime.BasicAWSCredentials(awsAccessKeyId, awsSecretKey);
        var client = new Amazon.S3.AmazonS3Client(credentials, Amazon.RegionEndpoint.GetBySystemName(awsS3RegionNameSource));

        CopyObjectRequest request = new CopyObjectRequest();
        request.SourceKey = filename;
        request.DestinationKey = filename;
        request.SourceBucket = awsS3BucketNameSource;
        request.DestinationBucket = awsS3BucketNameDest;

        try
        { 
        CopyObjectResponse response = client.CopyObject(request);
        }
        catch (AmazonS3Exception x)
        {
            Console.WriteLine(x);
        }
      }

Я получаю "Ведро, к которому вы пытаетесь получить доступдолжен быть адресован с использованием указанной конечной точки. Пожалуйста, отправьте все будущие запросы к этой конечной точке. "

Похоже, нет способа установить отдельные конечные точки для источника и назначения.

Есть лидругой метод, на который я должен смотреть?

Спасибо

1 Ответ

0 голосов
/ 11 мая 2018

Я думаю, если вы не укажете регион явно, то Копирование между кросс-регионами должно работать.

См. Документацию.

Однако ускорение будетне сработает, и копирование будет

COPY = GET + PUT

Вот выдержка из пояснения к документации, в которой говорится:

1014

Важно

Ускорение передачи Amazon S3 не поддерживает межрегиональные копии.

В своем коде вы указываете регион, как показано ниже.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                .withCredentials(new ProfileCredentialsProvider())
                .withRegion(clientRegion)
                .build();

Вместо этого инициализируйте S3client без региона, как показано ниже.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                .withCredentials(new ProfileCredentialsProvider()).build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...