Go

最終更新日:2023-08-14 15:26:46

バージョン

Current version: v1.0.1

要件

Go 1.7 or above

インストールする

go get -u github.com/CDNetworks-Object-Storage/wcs-go-sdk-v2/wos

初期化

WosClient(WOS Client)は、CDNetwork Object StorageにアクセスするためのGoクライアントです。呼び出し側がWOSサービスと対話するためのさまざまなインターフェースを提供し、 Object Storage上のバケットやオブジェクトなどのリソースを管理・操作します。
WOS Go SDKを使用してリクエストを行うには、WosClientインスタンスを初期化し、必要に応じてクライアント構成パラメータを調整する必要があります。

wosClientを作成する

var ak = "*** Provide your Access Key ***" var sk = "*** Provide your Secret Key ***" var endpoint = "https://your-endpoint" var regionName = "your-regionName" wosClient, err := wos.New(ak, sk, endpoint, wos.WithRegion("your-region")) if err == nil { // Use wosClient to access Object Storage // ... // Close wosClient wosClient.Close() } else { // Parse error code and message from the API response if wosError, ok := err.(wos.WosError); ok { fmt.Println(wosError.StatusCode) fmt.Println(wosError.Code) fmt.Println(wosError.Message) } else { fmt.Println(err) } }

構成

クライアントの作成時に、パラメータを使用して、さまざまなクライアント構成を指定することができます。例えば、レスポンスヘッダーを取得するためのタイムアウトを30秒に設定します。

wosClient, err := wos.New(ak, sk, endpoint, wos.WithHeaderTimeout(30))

パラメータ

方法 説明 推奨される
WithSignature(署名 SignatureType) 認証署名タイプ。デフォルトはWOS認証(wos.SignatureWos)です。 aws-v2 (wos.SignatureV2) または aws-v4 (wos.SignatureV4) として設定することもできます。 該当なし
WithSslVerifyAndPemCerts(sslVerify bool, pemCerts []byte) サーバー証明書を検証するためのパラメータを設定します。デフォルトは検証なしです。 該当なし
WithHeaderTimeout(headerTimeout int) レスポンスヘッダーを取得するためのタイムアウトを設定します。デフォルトは 60 秒です。 10、60
WithMaxConnections(maxIdleConns int) アイドル状態のHTTP接続の最大数を設定します。デフォルトは 1000 です。 該当なし
WithConnectTimeout(connectTimeout int) HTTP/HTTPS接続を確立するためのタイムアウトを設定します(秒単位)。デフォルトは 60 秒です。 10、60
WithSocketTimeout(socketTimeout int) データの読み書きのタイムアウトを設定します(秒単位)。デフォルトは 60 秒です。 10、60
WithIdleConnTimeout(idleConnTimeout int) 接続プールのアイドルHTTP接続のタイムアウトを構成します(秒単位)。デフォルトは 30 秒です。 デフォルト
WithMaxRetryCount(maxRetryCount int) 接続プールのアイドルHTTP接続のタイムアウトを構成します(秒単位)。デフォルトは 30 秒です。 1、5
WithProxyUrl(プロキシUrl文字列) HTTPプロキシを構成します。 該当なし
WithHttpTransport(トランスポート*http.Transport) カスタム トランスポートを構成します。 該当なし
WithRequestContext(ctx context.Context) 各HTTPリクエストのコンテキストを設定します。 該当なし
WithMaxRedirectCount(maxRedirectCount int) HTTP/HTTPSリクエストの最大リダイレクト数を設定します。デフォルトは 3 回です。 1、5
WithRegion(地域文字列) S3の領域を設定する 該当なし
WithPathStyle(パススタイルブール値) サービスへのアクセスにパススタイルと仮想ホストスタイルのURLのどちらを使用するか。無効にすると、サービスアクセスにバケット名.エンドポイント形式のURLを使用します。有効にすると、endpoint/bucketName形式のURLをサービスアクセスに使用します。デフォルトでは無効です。 該当なし

クイックスタート

リストバケット

var ak = "*** Provide your Access Key ***" var sk = "*** Provide your Secret Key ***" var endpoint = "https://your-endpoint" wosClient, _ := wos.New(ak, sk, endpoint, wos.WithRegion("your-region")) input := &wos.ListBucketsInput{} input.QueryLocation = true output, err := wosClient.ListBuckets(input) if err == nil { fmt.Printf("StatusCode:%d, RequestId:%s\n", output.StatusCode, output.RequestId) fmt.Printf("Owner.DisplayName:%s, Owner.ID:%s\n", output.Owner.DisplayName, output.Owner.ID) for index, val := range output.Buckets { fmt.Printf("Bucket[%d]-Name:%s,CreationDate:%s,EndPoint:%s,Region:%s\n", index, val.Name, val.CreationDate, val.Endpoint, val.Region) } } else { // Parse error code and message from the API response if wosError, ok := err.(wos.WosError); ok { fmt.Println(wosError.StatusCode) fmt.Println(wosError.Code) fmt.Println(wosError.Message) } else { fmt.Println(err) } }

リストオブジェクト

var ak = "*** Provide your Access Key ***" var sk = "*** Provide your Secret Key ***" var endpoint = "https://your-endpoint" wosClient, _ := wos.New(ak, sk, endpoint, wos.WithRegion("your-region")) input := &wos.ListObjectsInput{} input.Bucket = bucketName // input.Prefix = "src/" output, err := wosClient.ListObjects(input) if err == nil { fmt.Printf("StatusCode:%d, RequestId:%s,OwnerId:%s,OwnerName:%s,\n", output.StatusCode, output.RequestId, output.Owner.ID, output.Owner.DisplayName) for index, val := range output.Contents { fmt.Printf("Content[%d]-ETag:%s, Key:%s, LastModified:%s, Size:%d, StorageClass:%s\n", index, val.ETag, val.Key, val.LastModified, val.Size, val.StorageClass) } } else { // Parse error code and message from the API response if wosError, ok := err.(wos.WosError); ok { fmt.Println(wosError.StatusCode) fmt.Println(wosError.Code) fmt.Println(wosError.Message) } else { fmt.Println(err) } }

オブジェクトを配置

var ak = "*** Provide your Access Key ***" var sk = "*** Provide your Secret Key ***" var endpoint = "https://your-endpoint" wosClient, _ := wos.New(ak, sk, endpoint, wos.WithRegion("your-region")) input := &wos.PutObjectInput{} input.Bucket = bucketName input.Key = objectKey input.Metadata = map[string]string{"meta": "value"} input.Body = strings.NewReader("Hello WOS") output, err := wosClient.PutObject(input) if err == nil { fmt.Printf("StatusCode:%d, RequestId:%s\n", output.StatusCode, output.RequestId) fmt.Printf("ETag:%s", output.ETag) } else { // Parse error code and message from the API response if wosError, ok := err.(wos.WosError); ok { fmt.Println(wosError.StatusCode) fmt.Println(wosError.Code) fmt.Println(wosError.Message) } else { fmt.Println(err) } }

オブジェクトを取得

var ak = "*** Provide your Access Key ***" var sk = "*** Provide your Secret Key ***" var endpoint = "https://your-endpoint" wosClient, _ := wos.New(ak, sk, endpoint, wos.WithRegion("your-region")) input := &wos.GetObjectInput{} input.Bucket = bucketName input.Key = objectKey output, err := wosClient.GetObject(input) if err == nil { defer output.Body.Close() fmt.Printf("StatusCode:%d, RequestId:%s\n", output.StatusCode, output.RequestId) fmt.Printf("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s\n", output.StorageClass, output.ETag, output.ContentType, output.ContentLength, output.LastModified) p := make([]byte, 1024) var readErr error var readCount int for { readCount, readErr = output.Body.Read(p) if readCount > 0 { fmt.Printf("%s", p[:readCount]) } if readErr != nil { break } } } else { // Parse error code and message from the API response if wosError, ok := err.(wos.WosError); ok { fmt.Println(wosError.StatusCode) fmt.Println(wosError.Code) fmt.Println(wosError.Message) } else { fmt.Println(err) } }

オブジェクトを削除

var ak = "*** Provide your Access Key ***" var sk = "*** Provide your Secret Key ***" var endpoint = "https://your-endpoint" wosClient, _ := wos.New(ak, sk, endpoint, wos.WithRegion("your-region")) input := &wos.DeleteObjectInput{} input.Bucket = bucketName input.Key = objectKey output, err := wosClient.DeleteObject(input) if err == nil { fmt.Printf("StatusCode:%d, RequestId:%s\n", output.StatusCode, output.RequestId) } else { // Parse error code and message from the API response if wosError, ok := err.(wos.WosError); ok { fmt.Println(wosError.StatusCode) fmt.Println(wosError.Code) fmt.Println(wosError.Message) } else { fmt.Println(err) } }

マルチパートアップロード

シンプルなマルチパートアップロード

example/simple_multipart_upload_sample.goを参照してください。

同時マルチパートアップロード

example/multipart_upload_sample.goを参照してください。

機能一覧

wos_go_sample.goで例をご覧ください。

名前
リストバケット
ヘッドバケット
SetBucketLifecycleConfiguration
GetBucketLifecycleConfiguration
deleteBucketLifecycleConfiguration
リストオブジェクト
ListObjectV2
ListMultipartUploads
DeleteObject
DeleteObjects
RestoreObject
InitiateMultipartUpload
アップロードパート
コピーパーツ
リストパーツ
AbortMultipartUpload
プットオブジェクト
プットファイル
ヘッドオブジェクト
GetObjectMetadata
GetObject
GetAvinfo

サンプル

サンプル
current_copy_part_sample.go
current_download_object_sample.go
multipart_upload_sample.go
create_folder_sample.go
delete_objects_sample.go
download_sample.go
list_objects_sample.go
list_objects_in_folder_sample.go
object_meta_sample.go
object_operations_sample.go
simple_multipart_upload_sample.go
temporary_signature_sample.go