【Go 언어(golang)】GCP의 Cloud Storage에서 파일을 얻는 방법

9233 단어 5GCSCloudStoragegcp
Cloud Storage 공식 문서을 기반으로 바이너리 파일을 검색하고 싶습니다.

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 참조 에서 찾아 보면 좋다고 생각합니다.

좋은 웹페이지 즐겨찾기