【问题标题】:How to pass the AWS credentials to my app(Golang SDK)?如何将 AWS 凭证传递给我的应用程序(Golang SDK)?
【发布时间】:2020-12-18 11:42:28
【问题描述】:

我正在尝试学习如何使用 AWS-SDK for Go。我开始尝试列出我的存储桶,但出现以下错误:... NoCredentialProviders: no valid providers in chain。已弃用。

这是到目前为止所做的:

  1. 我创建了一个具有“AmazonS3FullAccess”的用户。

  2. 我尝试将 .aws/credentials 放在与我的测试应用程序相同的目录中以及我的主目录中。

  3. 凭证文件如下所示:

    [我的帐户名]

    aws_access_key_id = adfalksnfafv(创建用户的密钥 ID)

    aws_secret_access_key = adsfdsafgalmnglaf(用户的秘密访问密钥)

我的代码如下所示:

func init() {

    s3session = s3.New(session.Must(session.NewSession(&aws.Config{
        Region: aws.String("sa-east-1"),
    })))

}

func listBuckets() (resp *s3.ListBucketsOutput) {

    resp, err := s3session.ListBuckets(&s3.ListBucketsInput{})
    if err != nil {
        log.Fatal("Unable to list buckets: ", err)
    }

    return resp
}
func main() {

    fmt.Println(listBuckets())
}

【问题讨论】:

    标签: go amazon-s3 aws-sdk-go


    【解决方案1】:

    您应该远离属于 aws-sdk-go-v1(已弃用)的 session,而改用来自 aws-sdk-go-v2 的 cfg

    所以,导入:

    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/s3"
    

    使用 .aws/credentials 中引用的 [my-account-name] 进行设置:

    cfg, err := config.LoadDefaultConfig(
        config.WithSharedConfigProfile("my-account-name"))
    

    然后,拥有你的 s3 服务客户端:

    svc := s3.NewSessionFromConfig(cfg)
    

    【讨论】:

      【解决方案2】:

      嗯,对我来说最简单的方法是将它们导出到我的环境中:

       export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
         # The access key for your AWS account.
       export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
         # The secret access key for your AWS account.
      

      但由于我需要它们一段时间,所以我将它们添加到我的 ~/.bash_profile 中。

      【讨论】:

        猜你喜欢
        • 2016-09-17
        • 1970-01-01
        • 2017-08-26
        • 1970-01-01
        • 2017-06-18
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多