ゲートウェイへの API のデプロイ

前提条件

API Gateway に API 構成をデプロイする前に、次のことを確認してください。

Gateway ID の要件

以下に示す gcloud コマンドの多くでは、GATEWAY_ID の形式でゲートウェイの ID を指定する必要があります。API Gateway では、ゲートウェイ ID に次の要件が適用されます。

  • 値の最大長は 49 文字です。
  • 使用できるのは小文字、数字、ダッシュのみです。
  • ダッシュで始めることはできません。
  • アンダースコアを含めることはできません。

デプロイされた API 構成のエンドポイントの定義

ゲートウェイに API 構成をデプロイすると、API Gateway は gateway.dev ドメインにゲートウェイの一意の URL を作成します。次に、API クライアントは、以下の形式の URL を使用して、デプロイされた API 構成にアクセスします。

https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev

ここで、GATEWAY_ID はゲートウェイの名前、HASH は API のデプロイ時に生成された一意のハッシュコード、REGION_CODEGCP リージョン(ゲートウェイをデプロイした場所)のコードです。

次に例を示します。

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

ゲートウェイに API 構成をデプロイする

Google Cloud CLI を使用して、API 構成をゲートウェイにデプロイします。API 構成をデプロイする際には、API の名前を指定する必要があります。API 用のゲートウェイが存在しない場合は、このコマンドによって作成も行われます。

ゲートウェイに API 構成をデプロイするには:

  1. 次のコマンドで返されるプロジェクト ID を検証して、ゲートウェイが間違ったプロジェクト内に作成されないようにします。

    gcloud config list project

    デフォルト プロジェクトを変更する必要がある場合は、次のコマンドを実行します。このとき PROJECT_ID を、サービスを作成する Google Cloud プロジェクトの ID に置き換えます。

    gcloud config set project PROJECT_ID
  2. gateway create コマンドのヘルプを表示します。

    gcloud api-gateway gateways create --help
  3. 次のコマンドを実行して、API 構成をゲートウェイにデプロイします。

    gcloud api-gateway gateways create GATEWAY_ID \
      --api=API_ID --api-config=CONFIG_ID \
      --location=GCP_REGION --project=PROJECT_ID

    ここで

    • GATEWAY_ID は、新しいゲートウェイの ID を指定します。ゲートウェイがまだ存在しない場合は、このコマンドによって作成されます。
    • API_ID は、このゲートウェイに関連付けられた API Gateway API の ID を指定します。
    • CONFIG_ID は、ゲートウェイにデプロイされた API 構成の ID を指定します。ゲートウェイを作成するときに API 構成を指定する必要があります。
    • GCP_REGION は、デプロイされるゲートウェイの GCP リージョンを指定します。

    • PROJECT_ID は、Google Cloud プロジェクト ID を指定します。

    ゲートウェイの作成時に、gcloud がターミナルに情報を出力します。

  4. 正常に完了すると、次のコマンドを使用してゲートウェイの詳細を表示できます。

    gcloud api-gateway gateways describe GATEWAY_ID \
      --location=GCP_REGION --project=PROJECT_ID

    このコマンドを実行すると、次のようなフィード レスポンスが返されます。

    apiConfig: projects/PROJECT_ID/locations/global/apis/API_ID/configs/CONFIG_ID
    createTime: '2020-02-05T13:44:12.997862831Z'
    defaultHostname: my-gateway-a12bcd345e67f89g0h.uc.gateway.dev
    displayName: GATEWAY_ID
    name: projects/PROJECT_ID/locations/GCP_REGION/gateways/GATEWAY_ID
    serviceAccount:
      email: gateway-111111@222222-tp.iam.gserviceaccount.com
    state: ACTIVE
    updateTime: '2020-02-05T13:45:00.844705087Z'

    defaultHostname プロパティの値をメモします。これは、ゲートウェイ URL のホスト名の部分です。このゲートウェイにデプロイされた API 構成にアクセスするには、次の形式の URL を使用します。

    https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

Google Cloud CLI には、gcloud リファレンスで説明されているオプションなど、多くのオプションがあります。さらに、API Gateway では、ゲートウェイの作成時に次のオプションを設定できます。

  • --async: オペレーションの完了を待たずに、直ちに制御をターミナルに戻します。
  • --display-name=NAME: ゲートウェイの表示名、つまり、UI に表示される名前を指定します。名前にスペースを使用しないでください。代わりにハイフンとアンダースコアを使用してください。デフォルト値は GATEWAY_ID です。
  • --labels=KEY1=VALUE1,KEY2=VALUE2,...: ゲートウェイに関連付けられたラベルを指定します。

ゲートウェイの一覧表示

特定のプロジェクトのゲートウェイを一覧表示するには:

gcloud api-gateway gateways list --project=PROJECT_ID

このコマンドは、次の形式の出力を返します。

GATEWAY_ID        LOCATION       DISPLAY_NAME     STATE     CREATE_TIME          UPDATE_TIME
my-gateway        us-central1    my-gateway       ACTIVE    2021-01-07T00:04:19  2022-05-21T00:33:46

特定のプロジェクトとリージョンのゲートウェイを一覧表示するには、次のようにします。

gcloud api-gateway gateways list --location=GCP_REGION --project=PROJECT_ID

filter 式を使用して、特定の API に関連付けられたゲートウェイを一覧表示します。

gcloud api-gateway gateways list \
  --filter="apiConfig:projects/PROJECT_ID/locations/global/apis/API_ID/*" \
  --project=PROJECT_ID

または、この filter を使用して、特定の API 構成のゲートウェイを一覧表示します。

gcloud api-gateway gateways list \
  --filter="apiConfig:projects/PROJECT_ID/locations/global/apis/API_ID/configs/CONFIG_ID" \
  --project=PROJECT_ID

プロジェクト、リージョン、ゲートウェイ ID を使用して、ゲートウェイにデプロイされた API 構成の ID など、ゲートウェイに関する詳細情報を取得します。

gcloud api-gateway gateways describe GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

ゲートウェイの更新

ゲートウェイを更新して、次のことを行います。

  • ゲートウェイに別の API 構成をデプロイする
  • 表示名を更新する
  • ラベルを更新する

既存のゲートウェイを更新するには、次の gcloud コマンドを使用します。ここで、UPDATE_OPTIONS は、更新するゲートウェイのオプション フラグと値に置き換えます。

gcloud api-gateway gateways update GATEWAY_ID \
  UPDATE_OPTIONS --api=API_ID --location=GCP_REGION --project=PROJECT_ID  

たとえば、ゲートウェイにデプロイされた API 構成を更新するには、次のようにします。

gcloud api-gateway gateways update GATEWAY_ID \
  --api-config=NEW_CONFIG_ID --api=API_ID --location=GCP_REGION --project=PROJECT_ID 

ここで、NEW_CONFIG_ID はゲートウェイにデプロイする新しい API 構成を指定します。

使用可能な更新フラグと引数の完全なリストについては、gcloud api-gateway gateways update リファレンスを参照するか、次のコマンドを使用してすべての更新オプションを表示します。

gcloud api-gateway gateways update --help

ゲートウェイを削除する

既存のゲートウェイを削除するには、次の gcloud コマンドを使用します。

gcloud api-gateway gateways delete GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

次のステップ