gpt4 book ai didi

amazon-web-services - 从正在运行的 CLI Go 程序更新 AWS 凭证以访问不同的账户

转载 作者:IT王子 更新时间:2023-10-29 02:09:22 26 4
gpt4 key购买 nike

如果这是一个非常基本的问题,我很抱歉,但我是 AWS 的新手,在我的在线研究中没有找到答案。我正在使用 Go 创建一个 CLI 工具,它将从本地的 s3 存储桶中提取所有内容,然后允许您输入新的凭据,然后将这些内容推送到新环境中的存储桶。

我遇到了输入新凭据的问题。这是代码:

type MyProvider struct{
creds credentials.Value
}

func getNewCredentials() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Copy new AWS Access Key: ")
AK, _ := reader.ReadString('\n')
fmt.Print("Copy new AWS Secret Access Key: ")
SAK, _ := reader.ReadString('\n')
fmt.Print("Copy new AWS session token: ")
ST, _ := reader.ReadString('\n')
fmt.Print("New stage name(poc, dev, qa, prod): ")
lib.Stage, _ = reader.ReadString('\n')

provider := MyProvider{
creds: credentials.Value{AK, SAK, ST, ""},
}

creds := credentials.NewCredentials(&provider)

}

我正在使用自定义提供程序,并且我已经覆盖了提供程序函数 Retrieve() 和 isExpired()(未在代码片段中显示)。

当我尝试访问新存储桶时,它说该存储桶不存在,这让我相信凭据没有正确更新。我的猜测是这与 Value 结构末尾的空白提供者名称有关。我不确定该放什么。

有关如何解决此问题的任何指导都将非常有帮助。该程序没有抛出任何错误,而只是没有实际更新凭据。

最佳答案

https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials建议你像这样实例化:

sess, err := session.NewSession(&aws.Config{
Region: aws.String("us-west-2"),
Credentials: credentials.NewStaticCredentials("AKID", "SECRET_KEY", "TOKEN"),
})

如果我尝试这样做,我会通过允许一个帐户在另一个帐户中担任角色而不是传递凭据来让这些帐户共享信任关系。

https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

在 go 中非常方便:

https://docs.aws.amazon.com/sdk-for-go/api/aws/credentials/stscreds/

关于amazon-web-services - 从正在运行的 CLI Go 程序更新 AWS 凭证以访问不同的账户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51825180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com