Доступ запрещен для скопированных объектов в AWS S3 - PullRequest
0 голосов
/ 15 сентября 2018

Мне нужно переименовать некоторые из моих объектов S3 (из xxx.JPG в xxx.jpg).

Поскольку мы не можем переименовать их с помощью API .NET AWSSDK.S3, я копирую файлы с другим именем ключа.

Новые объекты отображаются в консоли S3, но я не могу получить доступ к их URL-адресу (кнопка «Сделать общедоступной» также не работает).

<Error>
   <script id="tinyhippos-injected"/>
   <Code>AccessDenied</Code>
   <Message>Access Denied</Message>
   <RequestId>496D3070***</RequestId>
   <HostId>
      zZOOgc5BCSmdIwaTy/wyOKHPU/xo32feTwfW***
   </HostId>
</Error>

Исходные объекты имеют «Шифрование на стороне сервера: нет», а новые имеют «Шифрование на стороне сервера: доступ запрещен», как показано на консоли S3.

Я просто не могу понять, почему новые получают это шифрование на стороне сервера. Я даже не знаю, является ли это причиной, почему я не могу получить доступ к их URL.

Мой код C #:

private const string sourceBucket = "***";
private const string destinationBucket = "***";
private const string objectKey = "***/image.JPG";
private const string destObjectKey = "***/image.jpg";

private static readonly RegionEndpoint bucketRegion = RegionEndpoint.SAEast1;
private static IAmazonS3 s3Client;

private static async Task CopyingObjectAsync()
{
    try
    {
        s3Client = new AmazonS3Client("***", "***", RegionEndpoint.SAEast1);

        CopyObjectRequest request = new CopyObjectRequest
        {
            SourceBucket = sourceBucket,
            SourceKey = objectKey,
            DestinationBucket = destinationBucket,
            DestinationKey = destObjectKey,
            ServerSideEncryptionMethod = ServerSideEncryptionMethod.None,

        };
        CopyObjectResponse response = await s3Client.CopyObjectAsync(request);
    }
    catch (AmazonS3Exception e)
    {
        Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
    }
    catch (Exception e)
    {
        Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
    }
}

static void Main(string[] args)
{
    s3Client = new AmazonS3Client(bucketRegion);
    Console.WriteLine("Copying an object");
    CopyingObjectAsync().Wait();
}

Я даже установил общедоступное ведро просто, чтобы убедиться, что это не причина, по которой я не могу получить доступ к новым объектам. Безуспешно.

Ребята, вы знаете, что я делаю не так?

1 Ответ

0 голосов
/ 15 сентября 2018

CannedACL = S3CannedACL.PublicRead

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...