ネットワークとサブネットワークの指定

このドキュメントでは、Dataflow ジョブの実行時にネットワーク、サブネットワーク、またはその両方を指定する方法について説明します。

このドキュメントは、Google Cloud ネットワークとサブネットワークの作成方法を理解していることを前提としています。また、次のセクションで説明するネットワークの用語についても理解しておく必要があります。

Google Cloud ネットワークの用語

  • VPC ネットワーク。VPC ネットワーク(単にネットワークと呼ぶこともあります)は、プロジェクト内のリソースを接続します。

    VPC の詳細については、VPC ネットワークの概要をご覧ください。

  • 共有 VPC ネットワーク。共有 VPC ネットワークは、組織内の個別のプロジェクト(ホスト プロジェクト)にあるネットワークです。共有 VPC 管理者からサービス プロジェクト管理者として指定されているユーザーには、ホスト プロジェクトのネットワーク内にあるサブネットワークの少なくとも一部を使用する権限が与えられます。

    共有 VPC の詳細については、共有 VPC の概要をご覧ください。

  • VPC Service Controls。Dataflow VPC Service Controls は、パイプラインのリソースとサービスを保護します。

    VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。VPC Service Controls とともに Dataflow を使用する際の制限事項については、サポートされているプロダクトと制限事項をご覧ください。

Dataflow ジョブのネットワークとサブネットワーク

Dataflow ジョブを作成するときに、ネットワークかサブネットワークのいずれか、または両方を指定できます。

次のガイドラインを参考にしてください。

  • どちらのパラメータを使用するかを判断できない場合は、サブネットワーク パラメータだけを指定してください。ネットワーク パラメータは暗黙的に指定されます。

  • サブネットワークとネットワークのどちらのパラメータも指定しない場合、Google Cloud では default という名前の自動モード VPC ネットワークの使用が想定されます。

  • サブネットワークとネットワークのどちらのパラメータも指定しない場合、プロジェクトに default というネットワークが存在しないとエラーが発生します。

ネットワーク パラメータを指定するためのガイドライン

  • ネットワーク パラメータを使用すると、プロジェクト内の自動モード ネットワークを選択できます。

  • 完全な URL ではなく、名前のみを使用してネットワークを指定できます。

  • また、次の条件が両方とも該当すれば、ネットワーク パラメータを使用して共有 VPC ネットワークを選択できます。

    • 選択した共有 VPC ネットワークは、自動モードのネットワークです。

    • 共有 VPC ホスト プロジェクト全体に対するプロジェクト レベルの権限を持つサービス プロジェクト管理者である。つまり、共有 VPC 管理者からホスト プロジェクト全体に対する Compute ネットワーク ユーザーのロールを与えられているので、ホスト プロジェクトのすべてのネットワークとサブネットワークを使用できる立場にある。

  • それ以外の場合はサブネットワークを指定する必要があります

サブネットワーク パラメータを指定するためのガイドライン

  • サブネットワークを指定すると、ネットワークは自動的に選択されます。そのため、サブネットワークを指定した場合は、ネットワーク パラメータを省略できます。

  • ネットワーク内の特定のサブネットワークを選択するには、subnetwork パラメータを使用します。

  • サブネットワークを指定するには、URL 全体または短縮形のパスを指定します。

  • Dataflow ワーカーを実行するゾーンと同じリージョンにあるサブネットワークを選択する必要があります。たとえば、subnetwork パラメータは次の状況で指定する必要があります。

    • 指定するサブネットワークがカスタムモードのネットワークである。

    • 共有 VPC ホスト プロジェクト内の特定のサブネットワークに対するサブネット レベルの権限を持つサービス プロジェクト管理者である。

  • サブネットワークのサイズは、使用可能な IP アドレスの数によってインスタンス数を制限するだけです。このサイズ設定は Dataflow VPC Service Controls のパフォーマンスに影響しません。

共有 VPC のサブネットワーク パラメータを指定するためのガイドライン

  • 共有 VPC のサブネットワーク URL を指定する場合は、HOST_PROJECT_ID が VPC をホストしているプロジェクトであることを確認します。

  • サブネットワークが共有 VPC ネットワーク内にある場合は、URL 全体を使用する必要があります。

  • Dataflow サービス アカウントワーカー サービス アカウントの両方で、指定したサブネットに Compute ネットワーク ユーザーのロールが割り当てられていることを確認します。ロールを有効にしない場合は、「Error: Message: Required 'compute.subnetworks.get' permission」というエラー メッセージが表示されます。

ネットワークとサブネットワークの仕様の例

サブネットワークを指定した完全な URL の例:

https://www.googleapis.com/compute/v1/projects/`HOST_PROJECT_ID`/regions/`REGION_NAME`/subnetworks/`SUBNETWORK_NAME`

次のように置き換えます。

  • HOST_PROJECT_ID: ホスト プロジェクト ID
  • REGION_NAME: Dataflow ジョブのリージョン エンドポイント
  • SUBNETWORK_NAME: Compute Engine サブネットワークの名前

次の URL の例では、ホスト プロジェクト ID が my-cloud-project、リージョンが us-central1、サブネットワーク名が mysubnetwork です。

 https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

サブネットワークを指定した短い形式の例を以下に示します。

regions/`REGION_NAME`/subnetworks/`SUBNETWORK_NAME`

次のように置き換えます。

networksubnetwork を指定してパイプラインを実行する

共有 VPC ネットワーク内の特定のサブネットワークを使用する権限だけを持つサービス プロジェクト管理者は、その特定のサブネットワークを明示する subnetwork パラメータを指定する必要があります。

次の例は、コマンドラインまたは REST API を使用して、パイプラインを実行する方法を示しています。この例では、サブネットワークを指定しています。ネットワークを指定することもできます。

Java

mvn compile exec:java \
    -Dexec.mainClass=com.example.WordCount \
    -Dexec.args="--project=my-cloud-project \
        --stagingLocation=gs://my-wordcount-storage-bucket/staging/ \
        --output=gs://my-wordcount-storage-bucket/output \
        --runner=DataflowRunner \
        --subnetwork=https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

Python

python -m apache_beam.examples.wordcount \
    --project my-cloud-project \
    --runner DataflowRunner \
    --staging_location gs://my-wordcount-storage-bucket/staging \
    --temp_location gs://my-wordcount-storage-bucket/temp \
    --output gs://my-wordcount-storage-bucket/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork

API

REST API を使用して Dataflow テンプレートを実行する場合は、networksubnetwork の一方または両方を environment オブジェクトに追加します。

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "my_job",
    "parameters": {
       "inputFile" : "gs://dataflow-samples/shakespeare/kinglear.txt",
       "output": "gs://my-wordcount-storage-bucket/output"
    },
    "environment": {
       "tempLocation": "gs://my-wordcount-storage-bucket/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork",
       "zone": "us-central1-f"
    }
}

外部 IP アドレスをオフにする

外部 IP アドレスをオフにするには、インターネット アクセスとファイアウォール ルールを構成するをご覧ください。