如何使用golang从AWS S3下载

Madhuka Wickramapala:

我正在编写go函数以从AWS S3存储桶下载文件。

func DownloadFromS3Bucket() {
    bucket := "cellery-runtime-installation"
    item := "hello-world.txt"

    file, err := os.Create(item)
    if err != nil {
        fmt.Println(err)
    }

    defer file.Close()

    // Initialize a session in us-west-2 that the SDK will use to load
    // credentials from the shared credentials file ~/.aws/credentials.
    sess, _ := session.NewSession(&aws.Config{
        Region: aws.String("us-east-1")},
    )

    downloader := s3manager.NewDownloader(sess)

    numBytes, err := downloader.Download(file,
        &s3.GetObjectInput{
            Bucket: aws.String(bucket),
            Key:    aws.String(item),
        })
    if err != nil {
        fmt.Println(err)
    }

    fmt.Println("Downloaded", file.Name(), numBytes, "bytes")
}

但是,我收到一条错误消息,要求提供凭据。

NoCredentialProviders:链中没有有效的提供者。不推荐使用。有关详细消息传递,请参见aws.Config.CredentialsChainVerboseErrors

该文档没有具体说明如何设置凭据。(访问密钥ID,秘密访问密钥)

任何想法?

贝里纳特:

有几种设置凭据的方法。有关更多详细信息,请参见aws / credentials

例如,您可以通过设置环境变量来指定它:

AWS_ACCESS_KEY = <your_access_key>
AWS_SECRET_KEY = <your_secret_key>

然后只需credentials.NewEnvCredentials()在您的配置实例中使用:

sess, _ := session.NewSession(&aws.Config{
    Region:      aws.String("us-east-1"),
    Credentials: credentials.NewEnvCredentials(),
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章