amazon-web-services - 如何使用 golang 从 AWS S3 下载

标签 amazon-web-services go amazon-s3 aws-sdk awss3transfermanager

我正在编写一个 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: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerboseErrors

文档没有具体说明如何设置凭据。 (访问 key ID, secret 访问 key )

有什么想法吗?

最佳答案

设置凭据的方法有多种。更多详情 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(),
})

关于amazon-web-services - 如何使用 golang 从 AWS S3 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54399421/

相关文章:

amazon-web-services - 没有 appspec 文件的 AWS cli 创建部署

java - 将大量数据从 S3 复制到 ElasticSearch

amazon-web-services - 不使用EKS时,能否在AWS的Kubernetes集群上使用AWS VPC CNI

python-3.x - 如何对部署在 AWS 上的 Flask 应用程序进行 50 次并发调用?

从 go 调用 C 函数

go - 提交 Gopkg.lock 文件是否安全?

ios - iOS AWS S3 Upload如何重试失败或失败的任务?

java - 有没有办法使用分段上传(Java 高级 API)使用 "java.util.zip"将提取的 zip 文件上传到 AWS-S3

amazon-web-services - 如何在 aws _route_table 中创建动态路由?

go - 获取日志文件中的结构字符串