为了账号安全,请及时绑定邮箱和手机立即绑定

AWS stscreds SDK 用于刷新跨账户代入角色的凭证

AWS stscreds SDK 用于刷新跨账户代入角色的凭证

Go
天涯尽头无女友 2023-02-21 16:50:05
我已经设置了跨账户读取运动流,但是当运动客户端读取记录时我收到安全令牌过期错误。我使用 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)
}


查看完整回答
反对 回复 2023-02-21
  • 1 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信