最終更新日: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インスタンスを初期化し、必要に応じてクライアント構成パラメータを調整する必要があります。
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 |