Доступ запрещен для получения содержимого корзины AWS S3 с помощью HTTP-запроса C#C#

Место общения программистов C#
Ответить
Anonymous
 Доступ запрещен для получения содержимого корзины AWS S3 с помощью HTTP-запроса C#

Сообщение Anonymous »

Код: Выделить всё

using Amazon;
using Amazon.Runtime.Internal.Endpoints.StandardLibrary;
using Amazon.S3;
using Amazon.S3.Model;
using Microsoft.AspNetCore.DataProtection.KeyManagement;
using Microsoft.AspNetCore.Mvc;
using System.Runtime.CompilerServices;

namespace WebDataExporter.Controllers
{
[ApiController]
[Route("[controller]")]
public class ScraperController : ControllerBase
{
private readonly ILogger _logger;

private readonly string accessKey = Environment.GetEnvironmentVariable("AWS_ACCESS_KEY_ID");
private readonly string secretKey = Environment.GetEnvironmentVariable("AWS_SECRET_ACCESS_KEY");

private string endpointUrl = @"https://www.example.com/";
private IAmazonS3 s3Client;

public ScraperController(ILogger logger)
{
_logger = logger;

s3Client = new AmazonS3Client(accessKey, secretKey, new AmazonS3Config
{
ServiceURL = endpointUrl,
RegionEndpoint = RegionEndpoint.EUNorth1
});
}

[HttpGet(Name = "GetS3Object")]
public async Task Get()
{
const string BUCKET_NAME = "web-scraper";

// Retrieve an object from the S3 bucket
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = BUCKET_NAME
};

ListObjectsV2Response response = await s3Client.ListObjectsV2Async(request);

S3Object[] objectsArray = response.S3Objects.ToArray();
S3Object latestObject = objectsArray.Aggregate((j, k) => k.LastModified > j.LastModified ? k : j);

var getObjectRequest = new GetObjectRequest
{
BucketName = BUCKET_NAME,
Key = latestObject.Key
};

using (var res = await s3Client.GetObjectAsync(getObjectRequest))
using (var streamReader = new StreamReader(res.ResponseStream))
{
var content = await streamReader.ReadToEndAsync();
Console.WriteLine(content);
}

return latestObject;
}
}
}
Этот проект представляет собой веб-API ASP.NET, за исключением некоторых моделей. (Поскольку я новичок в AWS, мой код является результатом проб и ошибок. Пожалуйста, избегайте его критики, поскольку я знаю, что его можно улучшить различными способами.)
Что меня действительно интересует почему я получаю ответ «Отказано в доступе», даже после того, как в AWS все стало общедоступным?
[img]https://i. sstatic.net/CMaI2.png[/img]

Изображение

Я пробовал экспериментировать с настройками AWS, а также пробовал использовать разные методы получения контента. Например: ListObjectsV2Request прошел успешно, а GetObjectAsync — нет.

Подробнее здесь: https://stackoverflow.com/questions/757 ... st-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»