我已經設置了跨賬戶讀取運動流,但是當運動客戶端讀取記錄時我收到安全令牌過期錯誤。我使用 sts assume role 在 accountA 中代入 roleA,然后使用 roleA 憑據代入 roleB,最后返回 kinesis 客戶端,因此沒有應用刷新功能,客戶端默認在 1 小時后過期。我查看了 stscreds AssumeRoleProvider 并且文檔說它將刷新憑據。但我不知道如何刷新假定角色 A 的第一個憑據,然后刷新假定角色 B 的第二個憑據。還是調用重新初始化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條經驗 獲得超4個贊
您應該能夠使用 AWS 提供的提供商執行此操作。我假設您使用的是 aws-sdk-go-v2。
這將使生成的 CredentialsProvider 返回緩存的憑據,直到它們過期;然后它會調用provider2
,它用于sts2
獲取 的新憑據roleB
,并且sts2
總是首先調用provider1
來獲取 的新憑據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 關注
- 221 瀏覽
添加回答
舉報
0/150
提交
取消