【发布时间】:2019-10-26 21:39:06
【问题描述】:
我有一个在 EC2 实例上运行的 asp.net 网站,该实例具有使用 AmazonS3FullAccess 策略分配给它的 IAM 角色。这适用于我可以上传、删除和获取存储在我的 S3 存储桶中的图像的预签名 URL 的网站。
在同一个 EC2 实例上,我还有一个用于移动应用程序访问各种数据的 asp.net API。当我尝试使用 API 获取存储在 S3 中的图像的预签名 URL 时,会引发以下错误。
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。
【问题讨论】:
标签: asp.net amazon-web-services amazon-s3 amazon-ec2 amazon-iam