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

1. 始める前に

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

前提条件

  • Google Cloud コンソールの操作能力。

学習内容

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

必要なもの

2. セットアップする

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

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

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

Google Cloud の

[New Project] ペイン

[Project name]、[Organization]、[Location] の各フィールドが表示されている [New Project] ペイン。

[プロジェクト名] フィールドの下に表示されるプロジェクト ID を覚えておいてください。ID は、すべての Google Cloud プロジェクト全体で一意の名前です(上記の名前はすでに使用されています)。この ID は、この Codelab の後半で 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 コンソールから 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. [API とサービス] を選択します。

API とダッシュボードを表示している Cloud コンソールのメインメニューサービス] オプションを使用します。

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

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

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

[有効にする] ボタンと [この API を試す] ボタンが表示されている Cloud Natural Language API ペイン。

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

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

API キーを作成する

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

  1. Cloud コンソールのナビゲーション メニューで、API とサービス >認証情報

API と表示があるナビゲーション メニューService と Credentials のオプション。

  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 のリクエストを作成する。パラメータの詳細については、メソッド: documentation.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 ファイルの出力の詳細は、メソッド: documentation.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 を呼び出す方法について学びました。