サービス間の通信

リージョン ID

REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。

詳しくは、リージョン ID をご覧ください。

App Engine サービス間や App Engine サービスと他のサービス(Google Cloud サービスや外部アプリケーションなど)間での通信には、多様な方法を使用できます。

App Engine サービスと通信する最も簡単な方法は、URL にリソースの名前または ID を含めてターゲット設定した HTTP リクエストを送信することです。たとえば、該当する Google Cloud プロジェクト ID に加え、サービスまたはバージョンの ID を含めてターゲット設定できます。


https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

なお、フレキシブル環境では、VERSION-dot-SERVICE-dot-PROJECT_IDVERSION はバージョンの名前、SERVICE はサービス名、PROJECT_ID はプロジェクト ID)全体の長さを 63 文字以下にする必要があります。また、名前の先頭や末尾にハイフンは使用できません。すべて含めた長さが 63 文字を超える場合、エラー DNS address could not be found. が表示されることがあります。

App Engine におけるリクエストの詳細:

App Engine サービスは、App Engine を含むプロセス間で信頼性の高い非同期多対多メッセージングを提供する Pub/Sub を使用して通信することもできます。これらのプロセスは、アプリケーション、サービス、さらには外部アプリケーションの個別インスタンスである可能性があります。

データベースと、App Engine アプリや他の外部アプリケーションとの間でデータを共有するには、データとファイルの保存についてをご覧ください。

レガシー バンドル サービスを使用している場合は、URL 取得 API を使用してサービス間やサービスから外部エンドポイントにリクエストを渡すこともできます。

さらに、同じ Google Cloud プロジェクト内にあるスタンダード環境のサービスで、App Engine API のいずれかを使用して次のタスクに対応することもできます。

  • 1 つの memcache インスタンスを共有する。
  • タスクキューでサービス間の作業を割り当てて、共同作業する。

プライベート通信

同一プロジェクト内のサービス間の通信

App Engine スタンダード サービスで、宛先サービスを公共のインターネットに公開することなく、同じプロジェクト内の別の App Engine サービスと通信ができるようにすることが可能です。

同じプロジェクト内のサービス間の通信を許可するには:

  1. 宛先サービスの上り(内向き)設定を調整して、「内部」トラフィックのみを許可するように、上り(内向き)制御を構成します。

    「内部」設定では、プロジェクトの VPC ネットワークからのリクエストのみが許可されます。これには、下り(外向き)トラフィックがコネクタ経由でルーティングされる場合、同じネットワーク上のクライアント アプリの App Engine リソースが含まれます。インターネットまたは他の Google Cloud プロジェクト(他の App Engine サービスを含む)からの他のすべてのトラフィックはブロックされます。

  2. サーバーレス VPC アクセス コネクタ経由でトラフィックをルーティングします。

    1. 他のアプリ エンドポイントに非公開トラフィックを送信する App Engine のバージョンごとに、共有 VPC ネットワークではなく、いずれかの Google Cloud プロジェクト独自のネットワークに属するサーバーレス VPC アクセス コネクタにそのバージョンをアタッチします。

    2. サーバーレス VPC アクセス コネクタで使用されるサブネットで、限定公開の Google アクセスが有効になっていることを確認します。

    3. 次のいずれかを構成します。

      • クライアントは、宛先ホスト名の DNS エントリを追加して、private.googleapis.com IP 範囲の使用をリクエストします。DNS 構成に沿って DNS ホスト名を追加しますが、限定公開ゾーンは googleapis.com ではなく appspot.com 用に構成してください。また、トラフィックがカスタム ドメインではなく宛先アプリの appspot.com アドレスに送信されていることを確認します。アプリには、この appspot.com ドメインを使用して、private.googleapis.com IP 範囲でのみアクセスできます。

      • クライアント アプリが、private.googleapis.com IP 範囲を使用するようにリクエストを構成する代わりに、サーバーレス VPC アクセス コネクタ経由で all-traffic送信します。

異なるプロジェクトのサービス間の通信

プロジェクトで実行されているアプリが属している共有 VPC ネットワークが、その共有 VPC ネットワークのホスト プロジェクトで実行されているアプリを呼び出すように構成されている場合、Google Cloud プロジェクト間でプライベート アクセスが可能です。

このパターンを使用するには、前述の同じプロジェクト内のサービス間の通信の手順を実施します。スタンダード環境では、各クライアント バージョンを共有 VPC ネットワーク上のサーバーレス VPC アクセス コネクタにアタッチします。

App Engine では、内部アクセスを使用してプロジェクト間でその他の方法で通信することはできません。

予約済みの URL パス

次の URL パスは使用できません。

  • /eventlog で終わるパス
  • /_ah/ で始まるパス
  • 末尾が z のパス