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

如何使用来自变量的凭证运行 AWS 开发工具包版本 2?

如何使用来自变量的凭证运行 AWS 开发工具包版本 2?

Go
杨魅力 2022-09-19 17:39:43
我的问题与另一个问题相同:如何使用变量中的凭证运行 AWS 开发工具包?但我使用的是不再使用 Session 的开发工具包版本 2(如果我理解正确的话)。因此,我正在创建一个新客户端,并且我将凭据作为变量。我需要使用 IAM 服务。这是函数:func getIAMClient(ctx context.Context) (*iam.Client, error) {    cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion("no-region"))    if err != nil {        return nil, errors.Wrap(err)    }    cfg.HTTPClient, err = getHTTPClient(ctx)    if err != nil {        return nil, err    }    return iam.NewFromConfig(cfg), nil}不同的用户将同时使用该应用程序,因此我不能只使用ENV文件,但我无法找到解释如何将这些凭据传递给我的客户端的文档页面。任何支持将不胜感激!
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

这可以通过静态凭据提供程序来实现,如适用于 Go 的 AWS 开发工具包 V2 文档的“静态凭证”部分所述:

cfg, err := config.LoadDefaultConfig(ctx, config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("AKID", "SECRET_KEY", "TOKEN")))



查看完整回答
反对 回复 2022-09-19
?
呼唤远方

TA贡献1856条经验 获得超11个赞

要从运行时变量初始化配置,可以使用凭据。NewStaticCredentials提供器

staticProvider := credentials.NewStaticCredentialsProvider(

    accessKey, 

    secretKey, 

    sessionToken,

)

cfg, err := config.LoadDefaultConfig(

    context.Background(), 

    config.WithCredentialsProvider(staticProvider),

)

if err != nil {

    return nil, err

}

client := iam.New(cfg)

但是,AWS 开发工具包文档会正确提醒您:

不要在应用程序中嵌入凭据。此方法仅用于测试目的。

这是因为通常使用静态凭据的代码段会传递硬编码字符串,这显然是一个安全问题。在你的情况下,你正在尝试传递运行时变量,所以只要这些变量没有与应用程序源一起签入,你应该没问题。


对于一般用例,即环境变量,您可以使用外部。加载默认AWS配置,它会自动查找,按以下顺序:

  • 环境变量

  • 共享配置和共享凭据文件。

// import "github.com/aws/aws-sdk-go-v2/aws/external"


    cfg, err := external.LoadDefaultAWSConfig(external.WithRegion(region))

    if err != nil {

        return nil, err

    }


    client := iam.New(cfg)

引擎盖下的方法调用外部。尝试从环境变量中获取凭据的新建配置:

  • AWS_SECRET_ACCESS_KEYAWS_SECRET_KEY

  • AWS_ACCESS_KEY_IDAWS_ACCESS_KEY

有关环境变量的读取优先级的更多详细信息,请参阅环境配置文档。


查看完整回答
反对 回复 2022-09-19
  • 2 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号