Amazon s3 使用aws sdk go从Fargate容器到S3的IAM身份验证失败
我正在go应用程序中使用aws sdk go库 代码大致如下所示:Amazon s3 使用aws sdk go从Fargate容器到S3的IAM身份验证失败,amazon-s3,amazon-iam,aws-fargate,aws-sdk-go,Amazon S3,Amazon Iam,Aws Fargate,Aws Sdk Go,我正在go应用程序中使用aws sdk go库 代码大致如下所示: awsSession,err:=session.NewSession(&aws.Config{Region:aws.String(Region)}) 及 当在本地、二进制文件中、容器外部运行时,它可以工作,因为它从~/.aws/credentials读取我的密钥 在Docker容器中本地运行时,这会起作用,因为启动容器时,我通过$HOME/.aws/credentials:/root/.aws/credentials:ro传入~
awsSession,err:=session.NewSession(&aws.Config{Region:aws.String(Region)})
及
当在本地、二进制文件中、容器外部运行时,它可以工作,因为它从~/.aws/credentials读取我的密钥
在Docker容器中本地运行时,这会起作用,因为启动容器时,我通过$HOME/.aws/credentials:/root/.aws/credentials:ro
传入~/.aws/credentials
但是,当我告诉Fargate从ECR获取容器(可以工作)并运行它时,任务日志中会出现以下错误:
无法将文件上载到S3
有关详细消息,请参见aws.Config.CredentialsChainVerboseErrors
未能上载文件:NoCredentialProviders:链中没有有效的提供程序。已弃用。
任何帮助都将不胜感激。我也面临同样的问题,这个问题是一个误解,我们在任务定义中将
executionRoleArn
和taskRoleArn
作为属性。启动新任务时,需要executionrollearn
,但要使用aws sdk,需要传递taskrollearn
您需要在任务学习
中附加s3策略
upParams := &s3manager.UploadInput{
Bucket: aws.String(bucket),
Key: aws.String(filename),
Body: bytes.NewReader(fileContents),
}
uploader := s3manager.NewUploader(awsSession)
result, err := uploader.Upload(upParams)