Google Cloud プロジェクトから API を呼び出す

1. 始める前に

この Codelab では、Google Cloud プロジェクトを作成し、そのプロジェクトから Google Cloud API を呼び出す方法について説明します。

前提条件

  • Google Cloud コンソールを操作できること。

学習内容

  • Google Cloud プロジェクトを作成する方法。
  • 請求先アカウントを設定する方法。
  • Cloud Shell の設定方法。
  • API を有効にする方法。
  • API キーを使用して API を承認する方法。
  • サービス アカウントを使用して API を承認する方法。

必要なもの

2. セットアップする

このセクションでは、Google Cloud プロジェクトの作成、請求先アカウントの設定、Cloud Shell の設定を行う方法について説明します。

Google Cloud プロジェクトを作成して請求先アカウントを設定する

  1. Cloud コンソールにログインして、プロジェクトを選択または作成します。

Google Cloud の

[新しいプロジェクト] ペイン

[新しいプロジェクト] ペインに、[プロジェクト名]、[組織]、[場所] の各フィールドが表示されている。

[プロジェクト名] フィールドに表示されているプロジェクト ID を覚えておいてください。ID はすべての Google Cloud プロジェクトを通じて一意の名前にする必要があります(上記の名前はすでに使用されています)。この Codelab では、この ID を PROJECT_ID と呼びます。

  1. 次に、Google Cloud リソースを使用するために、Cloud コンソールで課金を有効にします

この Codelab で費用が生じたとしても、少額です。クリーンアップ セクションの手順に沿ってリソースをシャットダウンし、この Codelab 以外で費用が発生しないようにしてください。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアルをご利用いただけます。

Cloud Shell を設定する

この Codelab では、Google Cloud で実行されるコマンドライン環境である Cloud Shell を使用します。Cloud Shell は、必要なすべての開発ツールが搭載された Debian ベースの仮想マシンです。永続的なホーム ディレクトリが 5 GB 用意されているため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。つまり、この Codelab に必要なのはブラウザだけです。

Cloud Console から Cloud Shell をアクティブにするには:

  1. a8460e837e9f5fda.png 「Cloud Shell をアクティブにする」をクリックします。

環境のプロビジョニングと接続にはしばらく時間がかかることがあります。

[Cloud Shell をアクティブにする] オプション。

コマンドライン プロンプトが表示された Cloud Shell。

Cloud Shell に接続すると、すでに認証は完了しており、プロジェクトに各自の PROJECT_ID が設定されていることがわかります。

  1. 認証情報が保存されているアカウントのリストを生成します。
gcloud auth list

次のような出力が表示されます。

Credentialed accounts:
 - <MY_ACCOUNT>@<MY_DOMAIN>.com (active)
  1. プロジェクトのリストを表示するには、次のコマンドを入力します。
gcloud config list project

次のような出力が表示されます。

[core]
project = <PROJECT_ID>

なんらかの理由でプロジェクトが設定されていない場合は、次のコマンドを実行してプロジェクトを設定します。

gcloud config set project <PROJECT_ID>

PROJECT_ID は、設定手順で使用した ID です。Cloud コンソールのダッシュボードで確認することもできます。

プロジェクト ID が表示されている [プロジェクト情報] ペイン。

Cloud Shell では、デフォルトで環境変数もいくつか設定されます。これらの変数は、以降のコマンドを実行する際に有用なものです。

  1. プロジェクト ID を確認するには、次のコマンドを入力します。
echo $GOOGLE_CLOUD_PROJECT

次の出力が表示されます。

<PROJECT_ID>
  1. 最後に、デフォルトのゾーンとプロジェクト構成を設定します。
gcloud config set compute/zone us-central1-f

さまざまなゾーンを選択できます。詳細については、リージョンとゾーンをご覧ください。

3. プロジェクトから API を呼び出す

この Codelab では、サンプル API(Natural Language API)を使用してテキスト内のエンティティ(人、場所、イベントなど)を見つけ、そのテキストの感情(好意のレベル)を近似する方法を説明します。次の方法について学びます。

  • Google Cloud APIs を有効にします。
  • API キーとサービス アカウントを使用して API の認可を取得します。
  • curl とクライアント ライブラリを使用して API を呼び出します。

API を有効にする

  1. Cloud Console のメインメニューから [API とサービス] を選択します。

Cloud Console のメインメニューに [API とサービス] オプションが表示されている。

  1. 画面上部の [+ API とサービスの有効化] を選択します。

[API とサービスを有効化] オプション。

  1. この時点で、API をフィルタして参照するか、[検索] ボックスを使用して API に直接移動できます。Natural Language を検索して、[Cloud Natural Language API] を選択します。

[ENABLE] ボタンと [TRY THIS API] ボタンが表示されている Cloud Natural Language API ペイン。

  1. [この API を試す] をクリックします。

[この API を試す] ボタンが表示されていない場合は、リストされているメソッドのいずれかをクリックして、そのメソッドを試します。

API キーを作成する

curl を使用して Natural Language API にリクエストを送信するため、リクエスト URL に渡す API キーを生成する必要があります。

  1. Cloud コンソールで、ナビゲーション メニュー > [API とサービス] > [認証情報] を選択します。

[API とサービス] オプションと [認証情報] オプションが表示されているナビゲーション メニュー。

  1. [認証情報を作成] をクリックし、[API キー] を選択します。

[認証情報] ペインに [認証情報を作成] オプションと [API キー] オプションが表示されている。

  1. 生成された API キーをコピーして、[閉じる] をクリックします。

API キーを使用して API を呼び出す

  1. Cloud Shell のコマンドラインで、API キーをエクスポートします。
export API_KEY=<YOUR_API_KEY>

<YOUR_API_KEY> は、前に生成した鍵に置き換えます。

  1. Cloud Shell エディタまたは Linux エディタ(Vim や Emacs など)で、API のリクエストを作成します。パラメータの詳細については、メソッド: documents.analyzeEntities をご覧ください。出力を request.json という名前のファイルに保存します。
{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"Google, headquartered in Mountain View (1600 Amphitheatre Pkwy, Mountain View, CA 940430), unveiled the new Android phone for $799 at the Consumer Electronic Show. Sundar Pichai said in his keynote that users love their new Android phones."
  },
  "encodingType":"UTF8"
}
  1. リクエスト情報を使用して API を呼び出します。
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \
  -s -X POST -H "Content-Type: application/json" --data-binary @request.json
  1. コマンドを再実行し、出力をファイルにリダイレクトして結果を確認します。JSON ファイルの出力の詳細については、メソッド: documents.analyzeEntities をご覧ください。
  2. request.json ファイルで分析するテキストを変更するには、content の値を任意のテキストに置き換えます。

4. サービス アカウントを使用して承認する

サービス アカウントは認証と認可の両方を提供するため、API キーよりも優先されることがよくあります。サービス アカウントは、アプリのメールアドレスと考えることができます。

  1. [API とサービス] メニューの [認証情報] セクションに戻ります。
  2. [認証情報を作成] を選択しますが、今回は [サービス アカウント] を選択します。

[サービス アカウントの詳細] ペイン。

  1. 目的を表すサービス アカウント名(「Natural Language Service Account」など)を入力します。システムによって ID が提案されます。説明を追加することもできます。サービス アカウントの詳細については、サービス アカウントのプロジェクトへのアクセス権を付与し、ユーザーにサービス アカウントへのアクセス権を付与しますが、ここでは [完了] をクリックしてサービス アカウントを作成します。
  2. 使用するサービス アカウントの鍵ペアを作成するには、d489bd059474ae59.png をクリックしてサービス アカウントを編集します。

アカウントのリストが表示されているサービス アカウント ペイン。

サービス アカウントの詳細が表示されます。

Natural Language サービス アカウントの詳細を示すサービス アカウントの詳細ペイン。

  1. サービス アカウントのメールアドレスをコピーして、Cloud Shell に戻ります。
  2. Cloud Shell で、サービス アカウントの鍵ペアを作成し、それを指すように環境変数を設定します。
gcloud iam service-accounts keys create ~/key.json \
  --iam-account <your service account email>
export GOOGLE_APPLICATION_CREDENTIALS="/home/$USER/key.json"

Google Cloud はこの環境変数を使用して認証情報を検索するため、認証情報を API 呼び出しに含める必要はありません。

  1. これで、次のコマンドを使用して API を呼び出せるようになりました。
gcloud ml language analyze-entities --content="Michelangelo Caravaggio, Italian painter, is known for 'The Calling of Saint Matthew'." 

結果は前と同じになります。

多くの API には、これらの詳細情報を抽出するための広範なクライアント ライブラリがあります。クライアント ライブラリの詳細については、Cloud クライアント ライブラリをご覧ください。使用する API のドキュメントを読んで、利用可能なクライアント ライブラリを確認することもできます。

5. クリーンアップ

プロジェクトで制限のない API キーを使用することはおすすめしません。アクセス権を取得したユーザーは、認証を必要とせずに使用できます。

この API キーを削除するには:

  1. f6b6844bf5688982.png ナビゲーション メニュー > [API とサービス] > [認証情報] をクリックします。
  2. [API キー] で、削除するキーを選択し、[247adf2e1d1eae4b.png削除] をクリックします。
  3. 同様に、サービス アカウントの秘密鍵が保護されていないことを心配するのではなく、[サービス アカウント] で、削除するサービス アカウントを選択し、247adf2e1d1eae4b.png削除)をクリックします。

6. 完了

おめでとうございます!Google Cloud プロジェクトの作成方法と、プロジェクト内から API を呼び出す方法について学習しました。