Skip to content

GCSコンテンツアップロードライブラリの使い方

aikizoku edited this page May 23, 2019 · 1 revision

概要

Google Cloud Storage(GCS)にコンテンツをアップロードできるライブラリの使い方を紹介します。

ライブラリ

github.com/aikizoku/merlin/src/lib/cloudstorage

使い方

クライアントを作成する

使い回せるのでdependency.go等で作成するのがオススメです。

// GCPの認証情報が入ったJSONのパスを環境変数等から取得
crePath := os.Getenv("GOOGLE_APPLICATION_CREDENTIALS")
if crePath == "" {
	panic("no config error: GOOGLE_APPLICATION_CREDENTIALS")
}

// 対象のGCSバケット名を環境変数等から取得
gcsBacket := os.Getenv("GCS_BACKET")
if gcsBacket == "" {
	panic("no config error: GCS_BACKET")
}

// GCSのクライアントを作成する
gcsClient := cloudstorage.NewClient(credentialsPath, gcsBacketName)

コンテンツをアップロード

アップロード完了すると、コンテンツのURLが返されます。

[]byte形式のコンテンツのアップロード

url, err := gcsClient.Upload(ctx, "/profile_icon", "my_profile_icon", "image/png", nil, data)
if err != nil {
	return err
}

dataURL形式のコンテンツのアップロード

url, err := gcsClient.UploadForDataURL(ctx, "/profile_icon", "my_profile_icon", nil, dataURL)
if err != nil {
	return err
}

キャッシュ操作

GCSにはデフォルトで強力なGoogleEdgeCacheが以下の内容で自動的に設定されます。

  • バケットの公開範囲が「公開」の時に有効になる
  • キャッシュ有効期限は1時間

もし上記以外の設定にしたい場合は、アップロード関数の第4引数に下記を設定してください。

cacheMode := &cloudstorage.CacheMode{
	Disabled: false,              // キャッシュを有効にする
	Expire: 24 * 365 * time.Hour, // 有効期限を1年間にする
}

その他の設定

ライブラリ内のconst.goを編集する事で下記を設定できます。 たぶん、変更しなくても良いはず。

// BaseURL ... GCSのURL
BaseURL string = "https://storage.googleapis.com"

// ChunkSize ... アップロード時の分割サイズ(メモリ不足になったら調整する)
ChunkSize int = 200