API Gateway のデプロイモデル

API コンポーネントについて

API Gateway で定義された API は、次の 2 つの主要コンポーネントで構成されています。

  1. API 構成: API 定義をアップロードしたときに作成される API 構成。API 定義を OpenAPI 仕様として作成します。API が Cloud Run で gRPC サービスを管理する場合は、gRPC サービスの定義と構成を使用して API を定義できます。

    API 定義をアップロードするたびに、API ゲートウェイは新しい API 構成を作成します。つまり、API 構成を作成することはできますが、後で変更することはできません。後で OpenAPI 仕様または gRPC サービス定義で API 定義を編集し、編集した API 定義をアップロードする場合は、新しい API 構成を作成します。

  2. ゲートウェイ: デプロイされた API 構成をホストする、Envoy ベースの高パフォーマンスでスケーラブルなプロキシ。API 構成をゲートウェイにデプロイすると、API クライアントが API へのアクセスに使用する外部 URL が作成されます。

次の図は、これらのコンポーネントを示しています。

[API Gateway] ペインの API 定義には、3 つの API 構成コンポーネントと 3 つのゲートウェイ コンポーネントが表示されています。

ゲートウェイへの API 構成のデプロイについて

API クライアントが API にアクセスできるように、API 構成をゲートウェイにデプロイします。

3 つのサンプル API では、API 構成がゲートウェイにデプロイされ、API クライアントが API にアクセスできるようになります。

ゲートウェイ:

  • 特定の Google Cloud リージョンにデプロイされている。リージョンとは、リソースをデプロイできる、 Google Cloud の特定の地理的なリージョンです。

  • API 構成をホストする必要があります。API 構成のない空のゲートウェイを作成することはできません。ただし、ゲートウェイを作成した後は、ゲートウェイを更新して、ある API 構成を別の API 構成に置き換えることができます。

  • ホストできる API 構成は 1 つだけです。同じゲートウェイに複数の API 構成をデプロイすることはできません。

デプロイされた各ゲートウェイを個別に管理します。ゲートウェイごとに、次のことができます。

  • ゲートウェイを開始 / 停止 / 削除する
  • ログと指標の表示
  • トレース情報を表示する

Google Cloud リージョンの選択

各ゲートウェイは、 Google Cloudの特定の地理的リージョンにデプロイされます。API Gateway は、次のデプロイ Google Cloud リージョンをサポートしています。

  • asia-northeast1
  • australia-southeast1
  • europe-west1
  • europe-west2
  • us-east1
  • us-east4
  • us-central1
  • us-west2
  • us-west3
  • us-west4

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

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

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

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

例:

my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

API 構成をデプロイするためのサービス アカウントの構成

ゲートウェイにデプロイされた API 構成は、API 構成の作成に使用されたサービス アカウントに付与されたロールに関連付けられた権限で実行されます。したがって、通常は API 構成の作成用に別のサービス アカウントを定義します。このサービス アカウントは、バックエンド サービスへのアクセスに必要なロールにのみ割り当てられます。これにより、API 構成に関連付けられる権限を制限できます。

サービス アカウントには、バックエンド サービスへのアクセスに必要なロールに加えて、次の権限が付与されている必要があります。

  • iam.serviceAccounts.actAs 権限。 この権限は、サービス アカウント ユーザーのロールに含まれています。

  • バックエンド サービスにアクセスするために必要な権限。たとえば、バックエンドが Cloud Functions の関数として実装されている場合は、サービス アカウントに少なくとも Cloud Functions 起動元のロールが割り当てられている必要があります。Cloud Run バックエンドの場合、ロールは Cloud Run 起動元です。API 構成に関連付けられた権限を制限することで、バックエンド システムのセキュリティを強化できます。

詳細については、開発環境の構成をご覧ください。

ゼロへのスケーリングについて

API Gateway はゼロ スケーリングのサービスです。つまり、トラフィックがない場合はすべてのゲートウェイ インスタンスが削除され、トラフィックが増加すると、負荷を処理するために新しいインスタンスがオンデマンドで作成されます。ゼロへのスケーリングは Google Cloudによって自動的に制御されます。ユーザーが構成や管理を行う必要はありません。

ロードバランサの使用

リージョンにデプロイされた各ゲートウェイには、ゲートウェイにデプロイされた API へのクライアント リクエストを管理するための統合されたロードバランサが含まれています。ゲートウェイごとに個別のロードバランサを作成する必要はありません。

異なるリージョンにあるゲートウェイに同じ API をデプロイする場合は、ロードバランサを作成する必要があります。ロードバランサは、API リクエストを異なるリージョンに転送します。詳細については、API を複数のリージョンにデプロイするをご覧ください。

API への SSL アクセスを構成する

API Gateway は、ゲートウェイにデプロイされた API への HTTPS アクセスをサポートしています。API は gateway.dev ドメインにデプロイされるため、Google はゲートウェイと統合されたロードバランサで SSL 証明書を作成して管理します。独自の証明書を作成またはアップロードしていただく必要はありません。

ドメイン ネームサーバーの構成

デフォルトでは、API クライアントは、上記に示すように、デプロイされた API にアクセスするための