Как исправить проблему отказа в доступе на aws S3 с API, развернутым на порту 443, который пытается прочитать объекты s3 - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть Restful API (asp .net 4.5.2), развернутый на экземпляре EC2, и экземпляр EC2 играет роль IAM для доступа к корзине S3 (полный доступ к корзине). Теперь, когда я пытаюсь прочитать объекты в корзине, он возвращает Access Denied (403) в ответ, а когда я пытаюсь загрузить любое вложение через предварительно подписанный URL-адрес, он возвращает несоответствие подписи AWS в ответ, когда мой API развернут на порту 443, но он работает нормально, когда API развернут на любом другом порту, например 80/81, и корзина доступна через aws-cli. Есть идеи, почему это может происходить?

мои фрагменты кода для чтения объектов:

using (var s3Client = new AmazonS3Client(bucketRegion))
{
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;

response = s3Client.ListObjectsV2Async(request).Result;
            // Process the response.
            foreach (S3Object entry in response.S3Objects)
            {
                keyValuePairs.Add(entry.Key, entry.Size);
            }

}

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Мне нужно передать профиль InstanceProfileAWSCredentials при создании экземпляра объекта s3Client, и это решило мою проблему.

var profile = new InstanceProfileAWSCredentials();
using (var s3Client = new AmazonS3Client(profile, bucketRegion))
{
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;

response = s3Client.ListObjectsV2Async(request).Result;
        // Process the response.
        foreach (S3Object entry in response.S3Objects)
        {
            keyValuePairs.Add(entry.Key, entry.Size);
        }

}
0 голосов
/ 30 апреля 2019

Это может быть проблема, связанная с вашей группой безопасности в экземплярах EC2.Вы должны открыть порт 443 (HTTPS).Если это не работает, проблема связана с использованием порта другим приложением.проверьте все ваши службы, которые используют порт 443.

...