개요
토픽, 서브스크립션의 생성/삭제는 카카오클라우드 콘솔에서만 가능합니다.
사전 작업
Pub/Sub에서 제공하는 SDK를 사용하기 위해서는 다음의 사전 작업을 수행해야 합니다.
액세스 키 발급하기
사용자 인증 토큰(API 인증 토큰)을 획득하기 위해서는 먼저 액세스 키를 발급받은 후, 액세스 키 ID와 보안 액세스 키를 발급합니다.
액세스 키를 발급받은 프로젝트에 속해있는 리소스에만 접근할 수 있습니다.
-
카카오클라우드 콘솔 > 사용자 프로필 > 액세스 키 탭에서 사용자의 자격 증명으로 액세스 키를 발급합니다.
-
사용자 액세스 Key를 발급한 후, API 사용 준비를 참고하여 액세스 키 ID와 보안 액세스 키를 발급합니다.
Go SDK 요구사항
SDK Go를 사용하기 위해서는 다음과 같은 사전 요구사항을 충족해야 합니다.
-
Go Package(1.19 이상)를 다운로드합니다.
Go Package 다운로드wget https://objectstorage.kr-central-1.kakaocloud.com/v1/e9130193fc734337b2b0c1da50e44395/pub-sub-go-sdk/v0.1.5/pubsub.tgz
tar -xf pubsub.tgz
cd {your-project}
go mod edit -require github.kakaoenterprise.in/cloud-platform/kc-pub-sub-sdk-go@v0.1.5
go mod edit -replace github.kakaoenterprise.in/cloud-platform/kc-pub-sub-sdk-go@v0.1.5={pubsub-sdk-path}go.mod 파일 결과module ...
require (
github.kakaoenterprise.in/cloud-platform/kc-pub-sub-sdk-go v0.1.5
)
replace github.kakaoenterprise.in/cloud-platform/kc-pub-sub-sdk-go v0.1.5 => {pubsub-sdk-path}안내kc-pub-sub-sdk-go v0.1.4 이전 버전의 경우 아래와 같이 token server 변경이 필요합니다.
opts := []option.ClientOption{
option.WithTokenServer("https://iam.kakaocloud.com"),
}
client, err := pubsub.NewClient(ctx, domainID, projectID, opts...) -
액세스 키 발급하기를 참고하여 Credentials 키를 발급받습니다. 기본적으로 SDK에서는 액세스 키를 이용해 인증을 시도합니다. 인증은
CredentialsProvider
유형을 사용하며, 기본적으로 다음과 같이DefaultCredentialsProvider
에credential-id
,credential-secret
을 설정하여 사용합니다.Credentials 키를 사용한 예제accessKey := pubsub.AccessKey{CredentialID: "credentialID", CredentialSecret: "credentialSecret"}
opts := []option.ClientOption{
option.WithAccessKey(accessKey),
}
client, err := pubsub.NewClient(ctx, domainID, projectID, opts...)
액세스 키를 발급받은 프로젝트에 속해있는 리소스에만 접근할 수 있습니다.
따라서 API 호출 시에 domain, project는 발급받은 액세스 키가 포함되어 있는 정보로 설정해야 합니다.
Client
토픽과 서브스크립션을 조작하고 메시지를 전송 및 수신할 때 사용하는 객체입니다.
아래 항목들의 정보로 토픽과 서브스크립션을 조작하고 메시지를 전송 및 수신할 수 있습니다.
- domainID
- projectID
Client 객체는 스레드와 같은 리소스를 해제시켜야 하기 때문에, 반드시 close() 메서드를 호출해야 합니다.
close()
import (
"context"
"fmt"
"github.kakaoenterprise.in/cloud-platform/kc-pub-sub-sdk-go"
)
func test(domainID, projectID, name string) error {
ctx := context.Background()
client, err := pubsub.NewClient(ctx, domainID, projectID)
if err != nil {
return fmt.Errorf("pubsub.NewClient: %v", err)
}
// do something
err = client.Close()
return err
}
사용자 지정 설정값
Client에서 인증 및 엔드포인트 등과 같은 값은 ClientOption을 통해 관리합니다. Client 객체 생성 시 직접 ClientOption을 생성하여 사용자가 임의로 값을 설정할 수 있습니다.
Default endpoint는 kr-central-1 리전의 엔드포인트로, kr-central-2 사용 시에는 엔드포인트 변경이 필요합니다.
opts := []option.ClientOption{
option.WithEndpoint("{endpoint-url}:10443"),
}
client, err := pubsub.NewClient(ctx, domainID, projectID, opts...)