CloudStorageへAPI経由でファイルをuploadする

はじめに

Google Cloud StorageへAPI経由でファイルをuploadする。

Introduction to APIs in Google を受講して、基本的な使い方を覚えたのでメモを残す

https://www.qwiklabs.com/focuses/3473?catalog_rank=%7B%22rank%22%3A15%2C%22num_filters%22%3A0%2C%22has_search%22%3Atrue%7D&locale=ja&parent=catalog&search_id=2013206

前準備

OAuthのアクセストークンを生成する

https://developers.google.com/oauthplayground/

 

 

バケットの作成

頻繁に使うので認証を環境変数に入れる

export OAUTH2_TOKEN=<YOUR_TOKEN>

プロジェクトIDも入れる

export PROJECT_ID=<YOUR_PROJECT_ID>

バケット生成の定義のjsonファイルを作成、読み込む

{  "name": "<YOUR_BUCKET_NAME>",
   "location": "us",
   "storageClass": "multi_regional"
}

curl -X POST --data-binary @values.json \
    -H "Authorization: Bearer $OAUTH2_TOKEN" \
    -H "Content-Type: application/json" \
    "https://www.googleapis.com/storage/v1/b?project=$PROJECT_ID"

画像をuploadする

wget https://gcpstaging-qwiklab-website-prod.s3.amazonaws.com/bundles/assets/138f92c75d08d0705e3853c1d790453f37fdfff38afad7fb4b431b9fa690f1fc.png
mv 138f92c75d08d0705e3853c1d790453f37fdfff38afad7fb4b431b9fa690f1fc.png demo-image.png

フルパスを確認する

realpath demo-image.png

結果を環境変数に入れる

export OBJECT=<DEMO_IMAGE_PATH>

バケット名を環境変数に入れる
(先ほど作成したやつ)

export BUCKET_NAME=<YOUR_BUCKET>

cloud storageにuploadする

curl -X POST --data-binary @$OBJECT \
    -H "Authorization: Bearer $OAUTH2_TOKEN" \
    -H "Content-Type: image/png" \
    "https://www.googleapis.com/upload/storage/v1/b/$BUCKET_NAME/o?uploadType=media&name=demo-image"

 

参考情報

JSONの構文チェックに便利なサイト

https://jsonlint.com/

 

Cloud StorageのAPIリファレンス(英語)

https://cloud.google.com/storage/docs/json_api/v1/