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

このページでは、Cloud Dataflow ジョブの実行時におけるネットワークとサブネットワークの指定方法について説明します。

VPC と共有 VPC

VPC ネットワーク(単にネットワークとも呼ぶこともあります)はプロジェクト内のリソースを接続します。VPC ネットワークの詳細については、VPC ネットワークの概要をご覧ください。

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

VPC Service Controls

Cloud Dataflow VPC Service Controls は、パイプラインのリソースとサービスのセキュリティを強化します。VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。

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

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

Cloud Dataflow ジョブを作成するときに、ネットワークかサブネットワークのいずれかを指定できます。この後のセクションで、それぞれのパラメータをどのような場合に使用するかを説明します。

サブネットワークとネットワークのどちらのパラメータも指定しない場合、GCP では、default という名前の自動モード VPC ネットワークの使用が想定されます。サブネットワークとネットワークのどちらのパラメータも指定しない場合、プロジェクトに default というネットワークが存在しなければエラーが発生します。

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

ネットワーク パラメータ

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

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

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

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

サブネットワーク パラメータ

ネットワーク内の特定のサブネットワークを選択する必要がある場合は、subnetwork パラメータを指定します。必ず、Cloud Dataflow ジョブを実行するゾーンと同じリージョンにあるサブネットワークを選択してください。たとえば、サブネットワーク パラメータは次の状況で指定する必要があります。

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

サブネットワークを指定するには、URL 全体または短縮形のパスを指定します。サブネットワークが共有 VPC ネットワーク内にある場合は、URL 全体を使用する必要があります。

  • URL 全体を指定する場合:
    https://www.googleapis.com/compute/v1/projects/<HOST_PROJECT>/regions/<REGION>/subnetworks/<SUBNETWORK>
  • 短縮形を指定する場合:
    regions/<REGION>/subnetworks/<SUBNETWORK>

subnetwork を指定すると、network は自動的に選択されます。そのため、subnetwork を指定した場合は network パラメータを省略できます。

パブリック IP パラメータ

パブリック IP パラメータは、パブリック IP アドレスを Cloud Dataflow ワーカーに割り当てるかどうかを Cloud Dataflow サービスに指示します。デフォルトでは、Cloud Dataflow サービスは、パブリック IP アドレスとプライベート IP アドレスの両方をワーカーに割り当てます。パブリック IP アドレスをオフにすると、Cloud Dataflow パイプラインは次の場所のリソースにのみアクセスできます。

パブリック IP をオフにしても、引き続き管理タスクとモニタリング タスクを実行できます。上記のオプションで SSH を使用することによって、ワーカーにアクセスできます。ただし、パイプラインはインターネットやその他の GCP ネットワークにアクセスできず、インターネット ホストは Cloud Dataflow ワーカーにアクセスできません。

パブリック IP をオフにすると、データ処理インフラストラクチャのセキュリティを強化できます。また、Cloud Dataflow ワーカーにパブリック IP アドレスを使用しないことで、GCP プロジェクトの割り当ての対象として消費するパブリック IP アドレスの数を減らすこともできます。

Java

パブリック IP をオフにするには:

  1. ネットワークまたはサブネットワークで限定公開の Google アクセスを有効にします。
  2. Cloud Dataflow ジョブのパラメータに、--usePublicIps=false--network=[NETWORK] または --subnetwork=[SUBNETWORK] を指定します。

Python

パブリック IP パラメータを使用するには Beam SDK for Python が必要です。Cloud Dataflow SDK for Python では、このパラメータはサポートされていません。パブリック IP をオフにするには:

  1. Apache Beam パイプラインの依存関係に関する指示に従って、すべての Python パッケージの依存関係をステージングします。
  2. ネットワークまたはサブネットワークで限定公開の Google アクセスを有効にします。
  3. Cloud Dataflow ジョブのパラメータに、--no_use_public_ips--network=[NETWORK] または --subnetwork=[SUBNETWORK] を指定します。

ネットワークとサブネットワークを指定してパイプラインを実行する

次の例は、network パラメータと subnetwork パラメータを指定して Cloud Dataflow サービスでパイプラインを実行する方法を示しています。

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

コマンドラインの使用

次の例は、コマンドラインからサブネットワークを指定してパイプラインを実行する方法を示しています。サブネットワークを指定すると、ネットワークが暗黙的に指定されます。

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"

REST API の使用

次の例は、テンプレートを実行し、サブネットワークを指定する方法を示しています。サブネットワークを指定すると、ネットワークが暗黙的に指定されます。

REST API を使用して Cloud 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"
    }
}
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。