このページでは、App Engine フレキシブル環境サービスを内部 IP アドレスでのみ公開するために必要な構成を示します。
デフォルトでは、フレキシブル環境のサービスは、最初のデプロイ時に内部 IP アドレスとエフェメラル外部 IP アドレスの両方を受け取ります。エフェメラル外部 IP アドレスを使用すると、カスタム ドメインやインターネット上のリソースを使用する App Engine サービスにリクエストを送信できます。エフェメラル外部 IP アドレスには費用が発生します。
サービスが外部 IP アドレスを必要としない場合は、サービスがインターネット上のリソースにリクエストを送信しないようにできます。また、サービスが内部 IP アドレスのみを使用するように制限することで、コストを削減できます。サービスの完全修飾ドメインは依然として外部から参照できるため、これによってインターネットや、カスタム ドメインを使用する App Engine サービスからのリクエストを受信できなくなるわけではありません。
制限事項
エフェメラル外部 IP アドレスの無効化には、次の制限があります。
- カスタム ドメインを使用するサービス: カスタム ドメインを使用する App Engine サービスにリクエストを送信するには、Cloud NAT を構成する必要があります。
- 外部リソース: 外部リソースにリクエストを送信するには、Cloud NAT を構成する必要があります。
- 限定公開の Google アクセスの依存関係: IP モードが
internal
に設定されたインスタンスは、ターゲット サブネットワークで限定公開の Google アクセスが必要です。 - レガシー ネットワーク: レガシー ネットワークでは限定公開の Google アクセスを使用できないため、エフェメラル外部 IP アドレスを無効にすることはできません。
始める前に
外部 IP アドレスのないフレキシブル環境アプリをデプロイするには、ターゲット サブネットワークで限定公開の Google アクセスを有効にする必要があります。
- 限定公開の Google アクセスの詳細については、概要をご覧ください。
- 詳しい構成手順については、限定公開の Google アクセスの有効化をご覧ください。
共有 VPC ネットワークを準備する
共有 VPC を使用する場合は、次の手順に沿って共有 VPC ネットワークを準備して構成します。
限定公開の Google アクセスと互換性のあるルートがあることを確認します。通常、ネットワークのデフォルト ルートは限定公開の Google アクセスと互換性があります。他のルートの場合は、ルートが次のように構成されていることを確認します。
Network: SHARED_VPC_NETWORK_NAME Destination IP address range: 0.0.0.0/0 Instance tags: INSTANCE_TAGS Next hop: DEFAULT_INTERNET_GATEWAY
次のように置き換えます。
SHARED_VPC_NETWORK_NAME
: 共有 VPC ネットワークの名前。INSTANCE_TAGS
: インスタンス タグを使用しない場合は、このフィールドに何も指定しないでください。インスタンス タグを使用する場合は、インスタンス タグのリストにaef-instances
を含めます。DEFAULT_INTERNET_GATEWAY
: デフォルトのインターネット ゲートウェイ。
限定公開の Google アクセスと互換性のあるルートの詳細については、限定公開の Google アクセスのドキュメントでルーティング オプションをご覧ください。
限定公開の Google アクセスと互換性のあるファイアウォール ルールがあることを確認します。ファイアウォール ルールは次のように構成する必要があります。
Network: SHARED_VPC_NETWORK_NAME Destination IP address range: 0.0.0.0/0 Destination filter: IP ranges Direction of traffic: Egress Attach on match: Allow Instance tags: INSTANCE_TAGS
次のように置き換えます。
SHARED_VPC_NETWORK_NAME
: 共有 VPC ネットワークの名前。INSTANCE_TAGS
: インスタンス タグを使用しない場合は、このフィールドに何も指定しないでください。インスタンス タグを使用する場合は、インスタンス タグのリストにaef-instances
を含めます。
限定公開の Google アクセスと互換性のあるファイアウォール ルールの詳細については、限定公開の Google アクセスのドキュメントでファイアウォール構成をご覧ください。
内部 IP アドレスのみを使用するようにサービスを構成する
Google Cloud CLI を更新します。これにより、フレキシブル環境のアプリでプライベート IP アドレスをサポートするバージョンの gcloud CLI を使用できます。
gcloud components update
app.yaml
ファイルで、network
セクションにinstance_ip_mode
フィールドを追加し、internal
に設定します。app.yaml
ファイルにすでにnetwork
セクションがある場合は、network
セクション内に次の行を追加します。instance_ip_mode: internal
app.yaml
ファイルにnetwork
セクションがない場合は、次の行を追加してセクションを作成し、インスタンスの IP モードを指定します。network: instance_ip_mode: internal
変更内容を保存します。
サービスをデプロイします。
gcloud beta app deploy
Google Cloud コンソールの [インスタンス] ページをチェックして、構成を確認します。
[インスタンス] テーブル([概要] グラフの下)までスクロールします。[外部 IP] 列に IP アドレスが表示されていないことを確認します。この列に IP アドレスがない場合は、インスタンスに外部 IP アドレスがありません。このフィールドが空であっても、インスタンスには内部 IP アドレスがあります。
外部 IP アドレスなしで外部リクエストを送信する
サービスがリクエストをインターネットに送信するものの、内部 IP アドレスのみを使用するように制限する場合は、Cloud NAT を使用してゲートウェイを作成できます。サービスは、デフォルトのエフェメラル外部 IP アドレスを使用せずに、Cloud NAT ゲートウェイ経由で外部リクエストを送信できます。
内部 IP アドレスのみを使用するようにサービスを構成するの手順を行います。
手順に沿って Cloud NAT を構成します。
このアプローチの詳細については、Cloud Architecture Center のドキュメントで取得用の Cloud NAT のデプロイをご覧ください。