cos兼容aws-go-sdk使用指南

目前cos現(xiàn)網(wǎng)支持V4簽名,所以之前由于V4簽名被卡掉的awssdk現(xiàn)在都可以兼容cos了。
在這里提供一份aws-go-sdk兼容cos的使用指南
如何通過aws的 gosdk調(diào)用cos的服務(wù)

1、安裝go并配置環(huán)境

2、下載并安裝aws-go-sdk

go get -u github.com/aws/aws-sdk-go

3、通過sdk使用cos具體示例

  • 注意!!!:請將<seceretid>、<secretkey>、<bucketname>和<appip>、<region>分別替換為真實的信息

可能涉及到的庫

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
    "bytes"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/aws/endpoints"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
    "github.com/aws/aws-sdk-go/service/s3/s3manager"
)

創(chuàng)建client

myCustomResolver := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) {
    if service == endpoints.S3ServiceID {
        return endpoints.ResolvedEndpoint{
            URL:           "http://cos.<region>.myqcloud.com",
            SigningRegion: "<region>",
        }, nil
    }
    return endpoints.DefaultResolver().EndpointFor(service, region, optFns...)
}
creds := credentials.NewStaticCredentials("<seceretid>", "<secretkey>", "")

sess := session.Must(session.NewSession(&aws.Config{
    Credentials:      creds,
    Region:           aws.String("<region>"),
    EndpointResolver: endpoints.ResolverFunc(myCustomResolver),
}))
bucket := aws.String("<bucketname>-<appid>”)
svc := s3.New(sess)

創(chuàng)建bucket

//create bucket
input0 := &s3.CreateBucketInput{
    Bucket: bucket,
}
result0, err0 := svc.CreateBucket(input0)
fmt.Println(result0)
fmt.Println(err0)

上傳文件(文件大于分塊時,使用分塊上傳)

f, err := os.Open(local_path)
if err != nil {
    fmt.Println("failed to open file")os
    return
}
upParams := &s3manager.UploadInput{
    Bucket: bucket,
    Key:    aws.String("exampleobject"),
    Body:   f,
}
uploader := s3manager.NewUploaderWithClient(svc)
result1, err1 := uploader.Upload(upParams, func(u *s3manager.Uploader) {
    u.PartSize = 1024 * 1024 * 5 // 5MB part size
    u.LeavePartsOnError = true   // Don't delete the parts if the upload fails.
})
fmt.Println(result1)
fmt.Println(err1)

上傳文件

//put object
input2 := &s3.PutObjectInput{
    Body:   aws.ReadSeekCloser(strings.NewReader("helloworld.go.exe")),
    Bucket: bucket,
    Key:    aws.String("exampleobject"),
}
result2, err2 := svc.PutObject(input2)
fmt.Println(result2)
fmt.Println(err2)

下載文件

//get object
input3 := &s3.GetObjectInput{
    Bucket: bucket,
    Key:    aws.String("exampleobject"),
}
result3, err3 := svc.GetObject(input3)
fmt.Println(result3)
fmt.Println(err3)

刪除文件

//delete object
input4 := &s3.DeleteObjectInput{
    Bucket: bucket,
    Key:    aws.String("exampleobject"),
}
result4, err4 := svc.DeleteObject(input4)
fmt.Println(result4)
fmt.Println(err4)

刪除bucket

//delete bucket
input5 := &s3.DeleteBucketInput{
    Bucket: bucket,
}
result5, err5 := svc.DeleteBucket(input5)
fmt.Println(result5)
fmt.Println(err5)

查看bucket

//head bucket
input6 := &s3.HeadBucketInput{
    Bucket: bucket,
}
result6, err6 := svc.HeadBucket(input6)
fmt.Println(result6)
fmt.Println(err6)

查看文件

//head object
input7 := &s3.HeadObjectInput{
    Bucket: bucket,
    Key:    aws.String("exampleobject"),
}
result7, err7 := svc.HeadObject(input7)
fmt.Println(result7)
fmt.Println(err7)

查看文件列表

//list objects
input8 := &s3.ListObjectsInput{
    Bucket: bucket,
}
result8, err8 := svc.ListObjects(input8)
fmt.Println(result8)
fmt.Println(err8)

更多詳細使用請參照awsgosdk s3文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 使用AWS 中國區(qū)有一段時間了, 期間踩過了一些坑. 簡單寫一下, 希望對別人有幫助.** 文中一些主觀猜測或者...
    haitaoyao閱讀 48,721評論 4 18
  • 原創(chuàng),轉(zhuǎn)載請注明:http://www.itdecent.cn/p/a6a02309190f 引言 若想直接看簽名...
    Nergal1閱讀 5,061評論 3 3
  • 1.SDK名稱版本:aws-php-sdk-v2 由于最新版本的cos已經(jīng)完全兼容s3,那么用aws的sdk來使用...
    lewzylu閱讀 542評論 0 0
  • 盛夏的夜晚總是來得很遲,已經(jīng)是晚上八點了,天空依然沒有暗下來,西邊的云層里,露著半個頭的太陽似乎對這個城市還有些戀...
    SHI23閱讀 209評論 0 0
  • 今晚七點半是寫作課的最后一節(jié)串講,我遲到了。我的每節(jié)課我都很重視的,從來不會忘記,每次都提前想好怎樣安排時間,除非...
    知魚之憂閱讀 229評論 0 1

友情鏈接更多精彩內(nèi)容