亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 golang 從 AWS S3 下載

如何使用 golang 從 AWS S3 下載

Go
慕勒3428872 2023-06-01 18:22:41
我正在編寫一個 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,秘密訪問密鑰)任何想法?
查看完整描述

2 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

有幾種方法可以設置憑據。

例如,您可以通過設置環境變量來指定它:

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(),
})


查看完整回答
反對 回復 2023-06-01
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

只需設置AWS_ACCESS_KEY和AWS_SECRET_KEY環境變量(您不需要調用credentials.NewEnvCredentials()-session.NewSession您所做的是完美的):


func DownloadFromS3Bucket() {

? ??

? ? os.Setenv("AWS_ACCESS_KEY","my-key")

? ? os.Setenv("AWS_SECRET_KEY","my-secret")


? ? bucket := "cellery-runtime-installation"

? ? item := "hello-world.txt"


? ? file, err := os.Create(item)

? ? if err != nil {

? ? ? ? fmt.Println(err)

? ? }

? ? defer file.Close()


? ? 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")

}

查看完整回答
反對 回復 2023-06-01
  • 2 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號