首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS stscreds SDK刷新跨帐户角色的凭据

AWS stscreds SDK刷新跨帐户角色的凭据
EN

Stack Overflow用户
提问于 2022-10-04 23:35:22
回答 1查看 145关注 0票数 1

我已经设置了交叉帐户读取动态流,但当移动客户端正在读取记录时,我会得到安全令牌过期错误。在roleA中,我使用了sts假设角色来承担accountA,然后使用roleA凭据来承担roleB,最后返回动态客户端,因此没有应用于它的刷新特性,客户端在默认情况下将在1小时内过期。我查了一下stscreds,医生说它会刷新凭证。但是,我不知道如何为假设的roleA刷新第一个凭据,然后为假设的roleB刷新第二个凭据。还是调用该方法重新初始化移动客户端更好?

这是代码块。

代码语言:javascript
运行
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-05 04:03:40

您应该能够使用AWS提供的提供程序来完成这一任务。我假设您使用的是aws-sdk-go-v2。

这将使得到的CredentialsProvider返回缓存的凭据,直到它们过期为止;然后调用provider2,它使用sts2roleB获取新凭据,而sts2总是首先调用provider1以获得roleA的新凭据。

代码语言:javascript
运行
复制
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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73954581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档