我已經(jīng)設(shè)置了跨賬戶讀取運動流,但是當(dāng)運動客戶端讀取記錄時我收到安全令牌過期錯誤。我使用 sts assume role 在 accountA 中代入 roleA,然后使用 roleA 憑據(jù)代入 roleB,最后返回 kinesis 客戶端,因此沒有應(yīng)用刷新功能,客戶端默認(rèn)在 1 小時后過期。我查看了 stscreds AssumeRoleProvider 并且文檔說它將刷新憑據(jù)。但我不知道如何刷新假定角色 A 的第一個憑據(jù),然后刷新假定角色 B 的第二個憑據(jù)。還是調(diào)用重新初始化kinesis客戶端的方法更好?這是代碼塊。 cfg, err := config.LoadDefaultConfig( context.TODO(), config.WithRegion("us-west-2"), ) if err != nil { return nil, err } stsclient := sts.NewFromConfig(cfg) assumingcnf, err := config.LoadDefaultConfig( context.TODO(), config.WithRegion("us-west-2"), config.WithCredentialsProvider(aws.NewCredentialsCache( stscreds.NewAssumeRoleProvider( stsclient, roleToAssumeArn1, )), ), ) if err != nil { return nil, err } stsclient = sts.NewFromConfig(assumingcnf) cnf, err := config.LoadDefaultConfig( context.TODO(), config.WithRegion("us-west-2"), config.WithCredentialsProvider(aws.NewCredentialsCache( stscreds.NewAssumeRoleProvider( stsclient, roleToAssumeArn2, )), ), ) if err != nil { return nil, err } kClient := kinesis.NewFromConfig(cnf) return kClient
1 回答
慕萊塢森
TA貢獻1810條經(jīng)驗 獲得超4個贊
您應(yīng)該能夠使用 AWS 提供的提供商執(zhí)行此操作。我假設(shè)您使用的是 aws-sdk-go-v2。
這將使生成的 CredentialsProvider 返回緩存的憑據(jù),直到它們過期;然后它會調(diào)用provider2,它用于sts2獲取 的新憑據(jù)roleB,并且sts2總是首先調(diào)用provider1來獲取 的新憑據(jù)roleA。
func createProvider(cfg aws.Config) aws.CredentialsProvider {
sts1 := sts.NewFromConfig(cfg)
provider1 := stscreds.NewAssumeRoleProvider(sts1, "roleA")
sts2 := sts.NewFromConfig(cfg, func (o *sts.Options) { o.Credentials = provider1 })
provider2 := stscreds.NewAssumeRoleProvider(sts2, "roleB")
return aws.NewCredentialsCache(provider2)
}- 1 回答
- 0 關(guān)注
- 271 瀏覽
添加回答
舉報
0/150
提交
取消
