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

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

使用 s3manager 上傳文件

使用 s3manager 上傳文件

Go
瀟瀟雨雨 2021-12-27 17:00:12
我正在嘗試從我的網站下載一些文件并將它們上傳到 amazons3。這是我的代碼:import (    "log"    "net/http"    "github.com/aws/aws-sdk-go/aws"    "github.com/aws/aws-sdk-go/aws/credentials"    "github.com/aws/aws-sdk-go/aws/session"    "github.com/aws/aws-sdk-go/service/s3/s3manager")func main() {    // Make a GET request to an image to be downloaded and uploaded to s3    resp, err := http.Get("http://my-site.com/image.jpg")    if err != nil {        log.Fatal(err)    }    // Get the AWS credentials    creds := credentials.NewSharedCredentials("/Users/name/.aws/credentials", "default")    // Set up config    config := &aws.Config{        Region:      aws.String("US Standard"),        Credentials: creds,    }    // Set up a new AWS session    sess := session.New(config)    // Set up a new s3manager client    uploader := s3manager.NewUploader(sess)    result, err := uploader.Upload(&s3manager.UploadInput{        Body:   resp.Body,        Bucket: aws.String("mimi-movies"),        Key:    aws.String("mimi.jpg"),    })    if err != nil {        log.Fatalln("Failed to upload", err)    }    log.Println("Successfully uploaded to", result.Location)}我不斷收到 nil 指針取消引用的運行時錯誤,該錯誤沒有多大幫助,但出于某種原因,我認為這可能與 ssl 有關
查看完整描述

3 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

aws-go-sdk 中存在錯誤,您可能應該檢查您所在的地區。


在您的代碼中,您編寫了用于獲取 AWS 憑證的代碼。


// Get the AWS credentials

    creds := credentials.NewSharedCredentials("/Users/name/.aws/credentials", "default")

您可以在終端中嘗試此操作:


aws 配置


并配置您的 aws-sdk。


否則,您可以使用 Minio。但是你必須把你的 ACCESS_KEY_ID 和 SECRET_ACCESS_KEY 放在你的代碼中,這對生產使用來說非常糟糕。


 s3Client, err := minio.New("s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", false)

此外,您可以使用外部 API Viper來隱藏這些密鑰。但我建議您使用官方的 AWS SDK for Go。


查看完整回答
反對 回復 2021-12-27
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

aws-go-sdk 上存在錯誤,但解決方案是將區域更改為“us-east-1”


// Set up config

config := &aws.Config{

    Region:      aws.String("us-east-1"),

    Credentials: creds,

}


查看完整回答
反對 回復 2021-12-27
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

您也可以使用Minio-go客戶端庫,其開源并與 AWS S3 兼容。


這是放置對象的簡單示例


包主


進口 (

    “日志”

    “操作系統”


    “github.com/minio/minio-go”

)


功能主(){

    // 注意:YOUR-ACCESSKEYID、YOUR-SECRETACCESSKEY、my-testfile、my-bucketname 和

    // my-objectname 是虛擬值,請將它們替換為原始值。


    // 默認情況下,請求始終是安全的 (HTTPS)。設置 insecure=true 以啟用不安全 (HTTP) 訪問。

    // 這個布爾值是 New() 的最后一個參數。


    // New 返回一個 Amazon S3 兼容的客戶端對象。API 兼容性(v2 或 v4)是自動的

    // 根據端點值確定。

    s3Client, err := minio.New("s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", false)

    如果錯誤!= nil {

        log.Fatalln(err)

    }


    對象,錯誤:= os.Open(“我的測試文件”)

    如果錯誤!= nil {

        log.Fatalln(err)

    }

    延遲 object.Close()


    n, err := s3Client.PutObject("my-bucketname", "my-objectname", object, "application/octet-stream")

    如果錯誤!= nil {

        log.Fatalln(err)

    }

    log.Println("Uploaded", "my-objectname", " of size: ", n, "Successfully.")

}

Status API Training Shop 博客 關于


希望能幫助到你。



查看完整回答
反對 回復 2021-12-27
  • 3 回答
  • 0 關注
  • 307 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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