LoginSignup
17
24

More than 5 years have passed since last update.

[GoogleCloudPlatform] API Client Libraryを用いてGoogle Cloud APIを利用する

Posted at

はじめに

  • 例としてAPI Client Library for PythonでCompute Engine APIを操作する方法を説明します。その他の言語やGoogle Cloud APIでも流れは同様のはずです。

想定する環境

  • Redhat系Linux / MacOSX ※debian系についても、ツールの導入方法が多少違う程度のはず
  • Python 2.6, 2.7, 3.3, or 3.4(2015/9現在)および pip が導入済み
  • この記事を書くために使用した検証環境は以下の通り
$ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
$ python -V
Python 2.7.5
$ pip -V
pip 7.1.0 from /usr/lib/python2.7/site-packages (python 2.7)

準備

  • API Client Library for Python をインストールする。
$ sudo pip install --upgrade google-api-python-client


  • (オプション)Google Cloud SDKをインストールする。
$ sudo curl https://sdk.cloud.google.com | bash
 → 途中の質問は全て Y またはデフォルト値のままでOK。
$ exec -l $SHELL


  • 自分のプロジェクトのGoogle Developer Consoleで "APIと認証 - API - APIライブラリ" から "Compute Engine API" を選択して、APIが有効であることを確認する(無効であれば”APIを有効にする”というボタンが表示されるため、クリックして有効にする)。 api.png

認証

2つの方法を説明します。

1. サービスアカウントを利用する方法

自分のgoogleアカウントの代わりのアプリケーション用アカウントを作成する方法。当然自分(達)が使うアプリケーション用の仕組みなので、人に配布したりしないように注意。

  • 自分のプロジェクトのGoogle Developer Consoleで "APIと認証 - 認証情報" から "認証情報を追加 - サービス アカウント" を選択する。
    sa.png

  • キーのタイプに "JSON" を指定して "作成" を選択する。
    sa1.png

  • "プロジェクト名-xxx.json" という名前でクレデンシャルファイルがダウンロードされるので、これをAPI Client Libraryを使うホストの任意のパスに保存する(※取り扱い注意※) 。

  • 環境変数 GOOGLE_APPLICATION_CREDENTIALS に、先ほどのクレデンシャルファイルのパスを設定する。必要に応じて、.bash_profileその他に記載しておくとよい。

$ export GOOGLE_APPLICATION_CREDENTIALS='/xxx/xxx/プロジェクト名-xxx.json'

2. gcloudコマンドで認証する方法

自分のgoogleアカウントで認証して、ホスト上にクレデンシャルを保存しておく方法。

  • 以下のコマンドを実行し、ホストに認証情報をセットする。
$ gcloud auth login
Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?redirect_uri=xxx...
    → 表示されたURLに、自分のプロジェクトに対してアクセス権限があるgoogleアカウントでログインしたWebブラウザで接続する。

Enter verification code: ※上記URLにて表示された認証コードを入力する
Saved Application Default Credentials.

動作確認

  • 以下のサンプルコードを保存する。
    • シェバン行は環境に合わせて変更
    • 3~6行目はコピペでOK
    • 8行目以降はCompute Engine APIを用いてインスタンス情報を取得するだけのサンプル
sample.py
 1  #!/usr/bin/python
 2
 3  from oauth2client.client import GoogleCredentials
 4  from googleapiclient.discovery import build
 5
 6  credentials = GoogleCredentials.get_application_default()
 7  
 8  compute = build('compute', 'v1', credentials=credentials)
 9  project = 'プロジェクトID'
10  zone = 'ゾーン名'
11  
12  print compute.instances().list(project=project, zone=zone).execute()
  • 実行し、GCEのインスタンス情報がずらずら表示されたら動作確認OK。

  • ここまできたら何も怖くない。適宜リファレンスを参照しながら気のきいたコードを書くのみ。

余談と補足

  • ちょっとした操作であればgcloudコマンドで事足りるが、ちょっと気のきいたことをしたくなることもある。
  • しかしそのために必要なOAuth認証の手続きが、それならいいやと諦める人が一定数いる程度には面倒であった(個人の感想)が、この話(http://googlecloudplatform-japan.blogspot.jp/2015/07/application-default-credentials-google.html) 以降ずいぶん楽になっていてありがたい。

  • この内容は2015年9月時点のものです。google関連は変化が速いため、何か変わっていても焦らず最新の1次情報にあたってください。


※参考文献
https://cloud.google.com/compute/docs/tutorials/python-guide
https://developers.google.com/api-client-library/python/?hl=ja

17
24
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
17
24