【Go 언어(golang)】GCP의 Cloud Storage에서 파일을 얻는 방법
9233 단어 5GCSCloudStoragegcp
※ Go 참조 의 샘플 코드를 사용합니다
※Cloud Storage에는 이미 이미지가 들어 있는 상태로 합니다(이번은 hoge.txt와 fuga.pdf를 넣고 있습니다)
서비스 계정 얻기
GCP: 서비스 계정으로 인증의 절차에 따라 먼저 서비스 계정 JSON 파일을 가져옵니다.
코드를 작성하고 검색하는 방법도 있지만 초보자는 "서비스 계정 키 만들기"에서 GCP 콘솔에서 검색하는 것이 좋습니다!
JSON 파일을 얻을 수 있으면 ok입니다.
준비
JSON 파일을 얻을 수 있으면, 드디어 Go로의 코딩입니다.
이 때, 환경 변수
GOOGLE_APPLICATION_CREDENTIALS
에 취득한 json의 패스가 들어가지 않으면 실패합니다.환경 변수로 설정할 수 없는 사람은 다음과 같이 export 명령으로 환경 변수로 설정하십시오.
※이 명령은 환경 변수에 JSON까지의 경로를 등록하고 있습니다.
파일 목록을 얻는 방법
package main
import (
"cloud.google.com/go/storage"
"context"
"fmt"
"google.golang.org/api/iterator"
"log"
)
func main() {
// clientを作成します
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
log.Fatal(err)
}
// bucketを作成します
bkt := client.Bucket("bucket名を入れます")
// 絞って検索したい人はqueryを設定します
query := &storage.Query{Prefix: ""}
// Storageに登録されているファイルの一覧を取得します
var names []string
it := bkt.Objects(ctx, query)
for {
attrs, err := it.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatal(err)
}
names = append(names, attrs.Name)
}
fmt.Println(names)
}
// [hoge.txt fuga.pdf]
txt 파일의 내용을 얻는 방법
// hoge.txtの中身
これはテストです
package main
import (
"cloud.google.com/go/storage"
"context"
"fmt"
"io/ioutil"
"log"
)
func main() {
// clientを作成します
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
log.Fatal(err)
}
// バケットからtxtファイルを取得
rc, err := client.Bucket("test0308").Object("hoge.txt").NewReader(ctx)
if err != nil {
log.Fatal(err)
}
// 取得したファイルのファイル形式(拡張子)とバイナリを取得
et := rc.Attrs.ContentType
bi, err := ioutil.ReadAll(rc)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%v\n", et) // text/plain
fmt.Printf("%v\n", string(bi)) // これはテストです
}
사이고에게
어땠습니까?
cloud storage의 사용법에 헤매고 있는 사람의 도움이 된다고 생각합니다.
할 수 있는 일은 아직도 많이 있으므로, Go 참조 에서 찾아 보면 좋다고 생각합니다.
Reference
이 문제에 관하여(【Go 언어(golang)】GCP의 Cloud Storage에서 파일을 얻는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kttgu/items/6c0a266bc593e1e63689텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)