猿问

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

我的问题与另一个问题相同:如何使用变量中的凭证运行 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文件,但我无法找到解释如何将这些凭据传递给我的客户端的文档页面。任何支持将不胜感激!


杨魅力
浏览 96回答 2
2回答

哈士奇WWW

这可以通过静态凭据提供程序来实现,如适用于 Go 的 AWS 开发工具包 V2 文档的“静态凭证”部分所述:cfg, err := config.LoadDefaultConfig(ctx, config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("AKID", "SECRET_KEY", "TOKEN")))

呼唤远方

要从运行时变量初始化配置,可以使用凭据。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_KEY或AWS_SECRET_KEYAWS_ACCESS_KEY_ID或AWS_ACCESS_KEY有关环境变量的读取优先级的更多详细信息,请参阅环境配置文档。
随时随地看视频慕课网APP

相关分类

Go
我要回答