Как скачать с AWS S3 с помощью golang - PullRequest
0 голосов
/ 28 января 2019

Я пишу функцию 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

В документации конкретно не указано, как устанавливать учетные данные.(Идентификатор ключа доступа, Секретный ключ доступа)

Есть идеи?

1 Ответ

0 голосов
/ 28 января 2019

Есть несколько способов установить учетные данные.Для более подробной информации 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(),
})
...