티스토리 뷰
Google cloud client library (Golang) 사용하기
Reo Dongmin Lee 2019. 9. 4. 01:30Google Cloud client library 사용하여 토이 프로젝트 하다가 처음 문서찾으며 헤메던 부분이 있어서 정리.
API 테스트
Google Cloud는 서비스 종류가 많은 만큼 API도 방대하다.
Google Cloud API documentation 사이트에서 직접 API를 호출 테스트를 해볼 수 있다.
아래는 Compute Engine API 중 instance list를 가져오는 API의 documentation과 테스트 화면.
Try This API 창 우측 상단의 확대 버튼을 누르면 아래와 같이 사용 예제 코드도 볼 수 있다.
Google Cloud Client Library
Google Cloud는 개발 편의와 효율성을 위해서 각 언어별 Client Library를 제공한다.
GCP의 모든 API는 HTTP, JSON 기반으로 전통적 방식의 HTTP request 방식으로 호출하고 응답을 받아 parsing 하는 방법으로도 사용 가능하다.
하지만 Client Library를 사용하면 자신이 익숙한 프로그래밍 언어로 라이브러리 호출 방식으로 쉽게 API를 호출할 수 있고
작성해야 하는 코드양도 줄고 훨씬 직관적인 코드를 작성할 수 있다.
Authentication 같은 작업도 Client Library를 사용하면 훨씬 더 간편하게 처리 할 수 있다.
현재 Client Library가 제공되는 언어는 다음과 같다. 많이 쓰이는 언어는 대부분 지원한다.
더 자세한 내용은 다음 링크를 참고. Google Cloud Client Library
Install Google Cloud Client Library for Go
Google Cloud Client Library for Go의 repo는 다음과 같다. Github Repo
이 포스팅에서는 Storage Client Library를 사용할 예정인데 다음의 명령어로 손쉽게 설치가 가능하다.
go get -u cloud.google.com/go/storage
설치된 패키지를 사용하려면 아래와 같이 import 한다.
import "cloud.google.com/go/storage"
Authentication
내 Google Cloud 계정의 리소스를 아무나 API를 호출해서 생성하고 삭제하면 안되기 때문에
Client library 를 통해 API 호출을 하기 위해선 그 API를 호출할 수 있는 권한이 있다고 입증을 해야한다.
Authentication 방법은 크게 3가지인데
해당 API 호출 권한이 있는 role으로 service account를 생성하여 이용하거나
직접 secret key를 읽는 방법, 또는 oauth2 서비스를 사용하는 방법으로 가능 하다.
개인적으로 service account를 생성하고 Application Default Credential 기능을 이용하는 방법이 제일 간편한 것 같다.
공식 Document에서 해당 방법을 권장한다.
Google cloud client library를 사용하는 어플리케이션 코드가 instance 위에서 실행 될경우 따로 authentication 부분을 구현하지 않아도 해당 compute engine instance의 service account 의 credential을 default로 사용한다.
만약 클라우드 리소스 위에서가 아니라 내 로컬 머신에서 구동하는 코드라면 환경변수 GOOGLE_APPLICATION_CREDENTIALS 에 service account secret key의 path를 지정해주면 된다.
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
위와 같이 환경변수에 secret key path를 지정해주면 따로 코드에서 key를 읽는 부분이나
oauth2 서비스 사용부분을 구현하지 않고도 client library를 통해 api 호출이 가능하다.
Example: Client Library로 cloud storage bucket 생성하기
다음과 같이 main.go 파일 생성
package main
import (
"context"
"fmt"
"log"
"cloud.google.com/go/storage"
)
func main() {
ctx := context.Background()
// Sets your Google Cloud Platform project ID.
projectID := "terraform-reo"
// Creates a client.
client, err := storage.NewClient(ctx)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
// Sets the name for the new bucket.
bucketName := "terraform-reo-new-bucket-20190903"
// Creates a Bucket instance.
bucket := client.Bucket(bucketName)
// Creates the new bucket.
if err := bucket.Create(ctx, projectID, nil); err != nil {
log.Fatalf("Failed to create bucket: %v", err)
}
fmt.Printf("Bucket %v created.\n", bucketName)
}
go run 명령어로 바로 실행 해보자.
Bucket 이 생성되었는지 GCP 콘솔로 확인해보자.
이처럼 Client library를 사용하여 코드를 통해 Cloud service api를 호출할 수 있다.
References
https://cloud.google.com/storage/docs/reference/libraries
https://cloud.google.com/docs/authentication/production#auth-cloud-explicit-go
'Cloud > Google Cloud Platform' 카테고리의 다른 글
Google Cloud Shell 의 vim 설정 바꾸기 (2) | 2019.08.07 |
---|---|
Google Cloud Certified Professional Cloud Network Engineer 자격증 후기 (2) | 2019.07.05 |
[GCP] Load Balancing (2/3) - SSL/TCP Proxy Load Balancing (0) | 2019.07.03 |
[GCP] Load Balancing (1/3) - HTTP(S) Load Balancing (0) | 2019.07.01 |
GCP 자격증 후기 (Google Cloud Certified Professional Cloud Architect) (33) | 2019.05.29 |
- Total
- Today
- Yesterday
- 2022 회고
- AWS 입사
- AWS 취업 후기
- oracle
- 구글 이직
- Terraform GCP
- ProFrame
- AWS 면접
- 아마존 입사
- AWS 인터뷰
- 아마존 이직
- Terraform
- 오라클
- AWS 이직
- GCP 자격증 후기
- AWS 신입
- dbio
- SA란
- 구글 입사 후기
- AWS TECH U
- AWS Associate Solution Architect
- 뱅크샐러드 면접
- GCP 이직
- expect 스크립트
- AWS 문화
- gcp 자격증
- AWS 신입 채용
- AWS 후기
- 프로프레임
- TECH U ASA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |