У меня есть сайт asp.net, работающий на экземпляре EC2, этому экземпляру назначена роль IAM с помощью политики AmazonS3FullAccess.Это прекрасно работает для веб-сайта, где я могу загружать, удалять и получать заранее заданные URL-адреса для изображений, хранящихся в моем контейнере S3.
В том же экземпляре EC2 у меня также есть API asp.net для мобильного приложения для доступа к различнымданные.Когда я пытаюсь получить предварительно назначенный URL-адрес для изображения, хранящегося в S3, используя API, выдается следующее сообщение об ошибке:
Object reference not set to an instance of an object.
at Amazon.Runtime.DefaultInstanceProfileAWSCredentials.FetchCredentials()
at Amazon.Runtime.DefaultInstanceProfileAWSCredentials.GetCredentials()
at Amazon.S3.AmazonS3Client.GetPreSignedURLInternal(GetPreSignedUrlRequest request, Boolean useSigV2Fallback)
Код для получения предварительно назначенной ссылки одинаков для веб-сайта и API
Dim bucketRegion = RegionEndpoint.EUWest1
Dim s3Client As New AmazonS3Client(bucketRegion)
Dim request1 = New GetPreSignedUrlRequest
request1.BucketName = "mybucketname"
request1.Key = fileName
request1.Expires = DateTime.Now.AddMinutes(1080)
dim signedURL = s3Client.GetPreSignedURL(request1)
Ошибка выдается в строке GetPreSignedURL.
Я не могу понять, почему разрешения роли IAM работают для веб-сайта, но не API, размещенный на том же сервере.