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 클라이언트)는 CDNetwork Object Storage 에 접속하기 위한 Go 클라이언트입니다. 호출자가 WOS 서비스와 상호 작용하고 Object Storage 에 있는 버킷 및 객체와 같은 리소스를 관리하고 운영할 수 있도록 다양한 인터페이스를 제공합니다.
WOS Go SDK를 사용하여 요청(Request)하려면 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))

파라미터

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
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.