我的应用程序使用s3并在EC2上运行。 IAM是在实例上配置的,因此身份验证是无密钥的(没有访问密钥和秘密密钥)。
我可以使用aws cli上传或下载文件。但是,当我尝试使用aws-sdk-go执行下载操作时,出现以下错误:
accessDenied:拒绝访问
状态码:403,请求ID:F945BDB5410E1A00,主机ID:m74jJ8z / AEzdkaJkWKdIqPEwPIYPZfWnLLfa5UpEwHwabcXOuXTPY1aw / u / 5HGralKg + ewAWEJA =
我遵循https://docs.aws.amazon.com/sdk-for-go/api/aws/credentials/ec2rolecreds/和本期https://github.com/aws/aws-sdk-go/issues/430的官方指南,但出现了以上错误。
下面是我的代码:
s3UploadPath = config.GetString("upload assets to s3.bucket")
s3Config := aws.NewConfig()
s3Config.CredentialsChainVerboseErrors = aws.Bool(true)
session,err := session.NewSession(s3Config)
if err != nil {
Logger.Fatal("Error initializing s3 uploader. " + err.Error())
os.Exit(0)
}
// the upload code
uploader = s3manager.NewUploader(session)
res,err := uploader.Upload(&s3manager.UploadInput{
Bucket: aws.String(s3UploadPath),Key: aws.String(filename),Body: f,})
if err != nil {
log.Fatal("error on upload. " + err.Error())
}
// then continue with the download code
附带的屏幕截图显示通过aws cli成功完成了下载和上传操作
我做错了吗?