このドキュメントでは、Google Compute Engine の Google Python クライアント ライブラリを使用する方法を示します。ここで説明するのは、リクエストを承認する方法と、インスタンスを作成、一覧取得、削除する方法です。この演習では、google-api-python-client ライブラリを使用して Google Compute Engine リソースにアクセスします。このサンプルが正しく認証されると、サンプルをローカルマシンまたは VM インスタンスで実行できます。
他の Google クライアント ライブラリやサードパーティのオープンソース ライブラリを含む使用可能なすべてのクライアント ライブラリについては、クライアント ライブラリのページをご覧ください。
演習をスキップして完全なコード例を確認する場合は、GitHub の GoogleCloudPlatform/python-docs-samples のページをご覧ください。
目標
- oauth2client ライブラリを使用して OAuth 2.0 認証を実行する
- google-python-client ライブラリを使用してインスタンスを作成する
- google-python-client ライブラリを使用してインスタンスの一覧を取得する
- google-python-client ライブラリを使用してインスタンスを削除する
料金
このチュートリアルでは、Cloud Platform の課金対象となるコンポーネント(Compute Engine を含む)を使用しています。
Cloud Platform を初めて使用される方は、無料トライアルをご利用いただけます。始める前に
-
Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
GCP Console のプロジェクト セレクタのページで、GCP プロジェクトを選択または作成します。
-
Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 詳しくは、課金を有効にする方法をご覧ください。
- Cloud SDK をインストールします。
- インストール後、
gcloud auth application-default login
を実行します。 - google-api-python-client ライブラリをインストールします。通常、次のコマンドを実行します。
$ pip install --upgrade google-api-python-client
このライブラリをインストールする方法の詳細については、インストール手順をご覧ください。また、Google Python クライアント ライブラリを実行するには Python 2.7 または 3.3 以降が必要です。
- Google Cloud Storage API を有効にします。
- ストレージ バケットを作成し、バケットの名前をメモします。
リクエストの承認
このサンプルでは、OAuth 2.0 認証を使用します。OAuth 2.0 を使用してリクエストを承認する方法は多数ありますが、この例では、アプリケーションのデフォルト認証情報を使用します。これにより、ローカルのワークステーションでサンプルを実行するときに、gcloud
ツールから認証情報を再利用できます。また、Compute Engine または App Engine 内でサンプルを実行する場合には、サービス アカウントから認証情報を再利用できます。始める前にで説明している gcloud
ツールをインストールし、承認しておく必要があります。
アプリケーションのデフォルトの認証情報は、Google API クライアント ライブラリで自動的に提供されます。必要な作業は、この API のビルドと初期化です。
compute = googleapiclient.discovery.build('compute', 'v1')
たとえば、次のスニペットはこのサンプルのメインメソッドで、API のビルドと初期化を行い、インスタンスの作成、一覧取得、削除を実行するために呼び出しを行います。
インスタンスの一覧取得
Python クライアント ライブラリを使用すると、compute.instances().list
メソッドでインスタンスの一覧を取得できます。インスタンスの一覧を取得するプロジェクト ID とゾーンを入力する必要があります。次に例を示します。
インスタンスの追加
インスタンスを追加するには、instances().insert
メソッドを使用し、新しいインスタンスのプロパティを指定します。これらのプロパティは、リクエストの本文で指定します。各プロパティの詳細については、instances.insert
の API リファレンスをご覧ください。
新しいインスタンスの作成時に、少なくとも次のプロパティの値をリクエストで指定する必要があります。
- インスタンス名
- ルート永続ディスク
- マシンタイプ
- ゾーン
- ネットワーク インターフェース
このサンプルは、選択したゾーンで次のプロパティを持つインスタンスを開始します。
- マシンタイプ: n1-standard-1
- ルート永続ディスク: 最新の Debian 8 イメージに基づく新しい永続ディスク
次のスコープを持つ Compute Engine デフォルト サービス アカウント
https://www.googleapis.com/auth/devstorage.read_write
- インスタンスで Google Cloud Storage のファイルを読み書きできるようにするためhttps://www.googleapis.com/auth/logging.write
- インスタンスのログを Google Cloud Logging にアップロードできるようにするため
起動時にインスタンスで実行する必要があるコマンドを指定するためのメタデータ
以下のセクションでは、インスタンス作成パラメータについて説明します。
ルート永続ディスク
すべてのインスタンスはルート永続ディスクから起動する必要があります。ルート永続ディスクには、インスタンスの起動に必要なすべてのファイルが含まれます。ルート永続ディスクを作成する場合は、ディスクに適用する必要があるソース OS イメージを指定する必要があります。上の例では、インスタンスと同時に、Debian 8 に基づいて新しいルート永続ディスクを作成しました。ただし、ディスクを事前に作成し、インスタンスに接続することもできます。
インスタンス メタデータ
インスタンスを作成するときに、起動スクリプト、構成変数、SSH 認証鍵などのインスタンス メタデータを含めることもできます。上の例では、リクエストの本文で metadata
フィールドを使用してインスタンスの起動スクリプトを指定し、構成変数を Key-Value ペアとして指定しました。以下に記載されている起動スクリプトは、これらの変数を読み込んで使用し、テキストを画像に適用して Google Cloud Storage にアップロードする方法を示しています。
インスタンスの削除
インスタンスを削除するには、instances().delete
メソッドを呼び出し、削除するインスタンスの名前、ゾーン、プロジェクト ID を指定する必要があります。起動ディスクに対して autoDelete
パラメータが設定されているため、インスタンスを削除すると、ディスクも削除されます。この設定はデフォルトではオフになっていますが、ディスクとインスタンスを同時に削除する必要がある場合に使用すると便利です。
サンプルの実行
完全なサンプルを実行するには、コードをダウンロードして、コマンドラインで実行します。create_instance.py
ファイルと startup-script.sh
ファイルをダウンロードしてください。サンプルの実行方法:
python create_instance.py --name [INSTANCE_NAME] --zone [ZONE] [PROJECT_ID] [CLOUD_STORAGE_BUCKET]
ここで:
[INSTANCE_NAME]
は、作成するインスタンスの名前です。[ZONE]
は、このリクエストのゾーンです。[PROJECT_ID]
は、プロジェクト ID です。[CLOUD_STORAGE_BUCKET]
は、最初の設定したバケットの名前です。ただし、gs://
接頭辞は付けません。
例:
python python-example.py --name example-instance --zone us-central1-a example-project my-gcs-bucket
オペレーション完了の待機
インスタンスなどのリソースを変更する Google Compute Engine API へのリクエストでは、リクエストの受信を確認するレスポンスがすぐに返されます。この確認応答で、リクエストしたオペレーションのステータスを確認できます。オペレーションの完了には数分かかることがあるため、多くの場合は、オペレーションが完了するまで待機してから続行したほうが簡単です。このヘルパー メソッドは、オペレーションが完了するまで待機してから制御を返します。
クリーンアップ
このチュートリアルで使用するリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。
Cloud Storage バケットの削除
Cloud Storage バケットを削除するには:
- GCP Console で、Cloud Storage ブラウザページに移動します。
- 削除するバケットのチェックボックスをクリックします。
- バケット削除するには、[削除](delete)をクリックします。
次のステップ
- 完全なコードサンプルをダウンロードして確認する。完全なサンプルには、これらすべてのメソッドを同時に使用する一例が含まれています。自由にダウンロードし、ニーズに合わせて変更し、実行してください。
- API リファレンスで API を使用した他のタスクの実行方法を確認する。
- 独自のアプリケーションを作成する。