2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
因此,可以使用 Config 對(duì)象來配置會(huì)話。
通讀該對(duì)象的規(guī)格,它對(duì)憑據(jù)說:
// The credentials object to use when signing requests. Defaults to a
// chain of credential providers to search for credentials in environment
// variables, shared credential file, and EC2 Instance Roles.
Credentials *credentials.Credentials
默認(rèn)值已經(jīng)是我的代碼片段所做的,所以我刪除了所有awsCredentials塊,現(xiàn)在它在任何地方都可以正常工作。在本地,EC2、Fargate...
更新
為了擴(kuò)大答案,刪除awsCredentials使這項(xiàng)工作的原因是,如果您檢查 SDK 的代碼,https://github.com/aws/aws-sdk-go/blob/master/aws/defaults/defaults.go #L107,默認(rèn)憑據(jù)同時(shí)檢查EnvProvider和RemoteCredProvider。
通過覆蓋默認(rèn)鏈憑據(jù),它無法在 中查找憑據(jù)RemoteCredProvider,這是處理環(huán)境變量的提供程序AWS_CONTAINER_CREDENTIALS_FULL_URI。

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
解決方案是使用會(huì)話而不是憑據(jù)來初始化客戶端,即:
conf := aws.NewConfig().WithRegion("us-east-1")
sess := session.Must(session.NewSession(conf))
svc := s3.New(sess)
// others:
// svc := sqs.New(sess)
// svc := dynamodb.New(sess)
// ...
因?yàn)椋鏎Ay0 指出的那樣,默認(rèn)憑證鏈已經(jīng)包含EnvProvider和RemoteCredProvider。
如果您仍然需要憑據(jù),您可以使用:
creds := stscreds.NewCredentials(sess, "myRoleARN")
正如文檔指出的那樣。請(qǐng)注意,角色的策略必須sts:AssumeRole啟用操作。有關(guān)更多信息,這里是stscreds.NewCredentials(...)文檔
- 2 回答
- 0 關(guān)注
- 178 瀏覽
添加回答
舉報(bào)