-
Notifications
You must be signed in to change notification settings - Fork 0
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