최신 업데이트: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 클라이언트)는 CDNetwork Object Storage 에 접속하기 위한 Go 클라이언트입니다. 호출자가 WOS 서비스와 상호 작용하고 Object Storage 에 있는 버킷 및 객체와 같은 리소스를 관리하고 운영할 수 있도록 다양한 인터페이스를 제공합니다.
WOS Go SDK를 사용하여 요청(Request)하려면 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))
method | 설명 | 추천 |
---|---|---|
WithSignature(서명 서명 유형) | 인증 서명 유형입니다. 기본값은 WOS 인증입니다(wos.SignatureWos). aws-v2(wos.SignatureV2) 또는 aws-v4(wos.SignatureV4)로 구성할 수도 있습니다. | N/A |
WithSslVerifyAndPemCerts(sslVerify bool, pemCerts []byte) | 서버 인증서의 검증을 위한 파라미터를 설정합니다. 기본값은 검증 없음입니다. | N/A |
WithHeaderTimeout(headerTimeout int) | 응답 헤더 검색 시간 초과를 설정합니다. 기본값은 60초입니다. | 10, 60 |
WithMaxConnections(maxIdleConns int) | 최대 유휴 HTTP 연결 수를 설정합니다. 기본값은 1000입니다. | N/A |
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(proxyUrl 문자열) | HTTP 프록시를 구성합니다. | N/A |
WithHttpTransport(transport *http.Transport) | 사용자 정의 전송을 구성합니다. | N/A |
WithRequestContext(ctx context.Context) | 각 HTTP 요청에 대한 컨텍스트를 설정합니다. | N/A |
WithMaxRedirectCount(maxRedirectCount int) | HTTP/HTTPS 요청의 최대 리디렉션 수를 설정합니다. 기본값은 3회입니다. | 1, 5 |
WithRegion(지역 문자열) | S3의 지역을 설정합니다 | N/A |
WithPathStyle(pathStyle 부울) | 서비스에 접근할 때 경로 스타일 URL을 사용할지 가상 호스트 스타일 URL을 사용할지 여부입니다. 비활성화되면 서비스 액세스에 bucketName.endpoint 형식 URL을 사용합니다. 활성화되면 서비스 액세스에 endpoint/bucketName 형식 URL을 사용합니다. 기본적으로 비활성화되어 있습니다. | N/A |
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 에서 예시를 참조하십시오
이름 |
---|
ListBuckets |
HeadBucket |
SetBucketLifecycleConfiguration |
GetBucketLifecycleConfiguration |
deleteBucketLifecycleConfiguration |
ListObjects |
ListObjectV2 |
ListMultipartUploads |
DeleteObject |
DeleteObjects |
RestoreObject |
InitiateMultipartUpload |
UploadPart |
CopyPart |
ListParts |
AbortMultipartUpload |
PutObject |
PutFile |
HeadObject |
GetObjectMetadata |
GetObject |
GetAvinfo |
샘플 |
---|
concurrent_copy_part_sample.go |
concurrent_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 |