Я пытаюсь загрузить файл из S3 в массив байтов iin .net с помощью С #.

Я следую приведенному ниже методу:

var client = new AmazonS3Client(AccessKey, SecretKey, Amazon.RegionEndpoint.EUWEST2);
    using (client)
    {
        MemoryStream ms = new MemoryStream();
        GetObjectRequest getObjectRequest = new GetObjectRequest();
        getObjectRequest.BucketName = Bucketname;
        getObjectRequest.Key = Keyname;

        using (var getObjectResponse = client.GetObject(getObjectRequest))
        {
            getObjectResponse.ResponseStream.CopyTo(ms);
        }
 }
 

Я сослался на ответ stackoverflow и последовал описанному выше методу.

Однако я получаю следующую ошибку:

GetObject недоступен из-за уровня защиты.

Я только изучаю S3, теперь я не понимаю, связана ли эта ошибка с политикой корзины или областью класса.

4
Abhilash Gopalakrishna 26 Ноя 2018 в 13:59

1 ответ

Лучший ответ

Вы упомянули .NET Core: большинство API-интерфейсов AWS для .Net Core и .NET Standard предоставляют только варианты Async. Вам следует использовать GetObjectAsync.

Удивительно, что Amazon представила эту несовместимость, поскольку было бы легко предоставить синхронную версию, используя примерно такой код:

var task = s3Client.GetObjectAsync(request);
task.Wait();
return task.Result;
10
Joe 26 Ноя 2018 в 12:04