LoginSignup
15
12

More than 5 years have passed since last update.

GCE から GCS へのファイルアクセス

Posted at

漢なら GCE(Google Compute Engine) から GCS(Cloud Storage) に, 安全かつお手軽にアクセスしたいですよね!

GCE インスタンス起動

GCE インスタンス起動時に, cloud storage へのアクセスが出来る様ようにしておきます.

を参考に, scopes の devstorage.full_control あたりです.

GCE から GCS にアクセスしてみる.

GCE のインスタンスに gcutil ssh INSTANCE-NAME でログインし, 内部から OAuth アクセストークンをメタデータサーバから取得してみます(curl がインストールされていると仮定).

$ curl "http://metadata/computeMetadata/v1/instance/service-accounts/default/token" -H "X-Google-Metadata-Request: True"

以下のようなレスポンスが得られれば成功です.

{"access_token":"XXXXXXXXXX","expires_in":3599,"token_type":"Bearer"}

ファイルをアップロードしてみる.

適当にファイルを作り…

$ echo bora > muda.txt

curl でアップロードしてみます.

$ curl -X PUT --data-binary @muda.txt -H "x-goog-api-version: 2" -H "Authorization: OAuth XXXXXXXXXXX" "http://storage.googleapis.com/MY-BUCKET/muda.txt"

MY-BUCKET にはあらかじめ作っておいた bucket の名前を指定します.

Google Developers Console などで muda.txt が生成されているのを確認します.

ファイル(の内容)を取得してみる.

$ curl -H "x-goog-api-version: 2" -H "Authorization: OAuth XXXXXXXXXXXXXXXXX" "http://storage.googleapis.com/MY-BUCKET/muda.txt"

bora

テキストのデータがそのまま(?)で取得されました. Cool!

これで GCE での計算結果を, 特段ツールをインストールしなくてもGCS に置く, などの活用ができますね.

TODO

  • エラーハンドリング
  • 内部間通信でも https のほうが安全?
  • REST でアクセスしたときは, エラーなどの response が GCS だと JSON ではなくて XML になるようで謎…
15
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
12