네트워크 및 서브네트워크 지정

이 문서에서는 Dataflow 작업을 실행할 때 네트워크 또는 서브네트워크를 지정하거나 둘 다 지정하는 방법을 설명합니다.

이 문서를 사용하려면 Google Cloud 네트워크 및 서브네트워크를 만드는 방법을 알고 있어야 합니다. 또한 다음 섹션에서 설명하는 네트워크 용어에 대한 지식이 필요합니다.

default 네트워크는 Dataflow 작업을 실행할 수 있도록 구성되어 있습니다. 그러나 다른 서비스에서도 이 네트워크를 사용할 수 있습니다. default 네트워크의 변경사항이 모든 서비스와 호환되는지 확인합니다. 또는 Dataflow에 대한 네트워크를 별도로 만드세요.

네트워킹 문제를 해결하는 방법은 Dataflow 네트워킹 문제 해결을 참조하세요.

Google Cloud 네트워크 용어

  • VPC 네트워크. 경우에 따라 네트워크라고도 하는 VPC 네트워크는 프로젝트의 리소스에 대한 연결을 제공합니다.

    VPC에 대한 자세한 내용은 VPC 네트워크 개요를 참조하세요.

  • 공유된 VPC 네트워크. 공유 VPC 네트워크는 호스트 프로젝트라고도 하는 조직 내 별도의 프로젝트에 있는 네트워크입니다. 공유 VPC 관리자가 사용자를 서비스 프로젝트 관리자로 정의한 경우 사용자에게는 최소한 호스트 프로젝트의 네트워크에 있는 일부 서브네트워크를 사용할 수 있는 권한이 있습니다.

    공유 VPC에 대한 자세한 내용은 공유 VPC 개요를 참조하세요.

  • VPC 서비스 제어. Dataflow VPC 서비스 제어는 파이프라인 리소스 및 서비스를 보호합니다.

    VPC 서비스 제어에 대한 자세한 내용은 VPC 서비스 제어 개요를 참조하세요. VPC 서비스 제어에 Dataflow를 사용할 때의 제한 사항을 자세히 알아보려면 지원되는 제품 및 제한 사항을 참조하세요.

Dataflow 작업을 위한 네트워크 및 서브네트워크

Dataflow 작업을 만들 때 네트워크, 서브네트워크 또는 둘 다 지정할 수 있습니다.

다음 가이드라인을 고려하세요.

  • 사용해야 할 매개변수를 잘 모르는 경우 서브네트워크 매개변수만 지정하세요. 그런 후 네트워크 매개변수가 암시적으로 지정됩니다.

  • 서브네트워크와 네트워크 매개변수를 모두 생략하면 Google Cloud는 개발자가 default라는 자동 모드 VPC 네트워크를 사용한다고 가정합니다. 프로젝트에 default라는 네트워크가 없으면 대체 네트워크 또는 서브네트워크를 지정해야 합니다.

네트워크 매개변수 지정 가이드라인

  • 네트워크 매개변수를 사용하여 프로젝트에서 자동 모드 VPC 네트워크를 선택할 수 있습니다.

  • 전체 URL이 아닌 이름만 사용하여 네트워크를 지정할 수 있습니다.

  • 다음 두 조건에 모두 해당하는 경우에 한해 네트워크 매개변수를 사용하여 공유 VPC 네트워크를 선택할 수 있습니다.

    • 선택한 공유 VPC 네트워크는 자동 모드 VPC 네트워크입니다.

    • 전체 공유 VPC 호스트 프로젝트에 대한 프로젝트 수준 권한이 있는 서비스 프로젝트 관리자입니다. 즉 공유 VPC 관리자가 전체 호스트 프로젝트에 대한 Compute Network 사용자 역할을 부여했으며 모든 네트워크 및 하위 네트워크를 사용할 수 있습니다.

  • 다른 모든 경우에는 서브네트워크를 지정해야 합니다.

서브네트워크 매개변수 지정 가이드라인

  • 서브네트워크를 지정할 경우 Dataflow가 자동으로 네트워크를 선택합니다. 따라서 서브네트워크를 지정할 때 네트워크 매개변수를 생략할 수 있습니다.

  • 네트워크에서 특정 서브네트워크를 선택하려면 서브네트워크 매개변수를 사용합니다.

  • 전체 URL 또는 약식 경로를 사용하여 서브네트워크를 지정합니다. 서브네트워크가 공유 VPC 네트워크에 있는 경우 전체 URL을 사용해야 합니다.

  • Dataflow 작업자를 실행하는 영역과 같은 리전에서 서브네트워크를 선택해야 합니다. 예를 들어 다음과 같은 상황에서는 서브네트워크 매개변수를 지정해야 합니다.

    • 지정하는 서브네트워크가 커스텀 모드 VPC 네트워크에 있습니다.

    • 공유 VPC 호스트 프로젝트의 특정 서브네트워크에 대한 서브넷 수준 권한이 있는 서비스 프로젝트 관리자입니다.

  • 서브네트워크 크기는 사용 가능한 IP 주소 수로만 인스턴스 수를 제한합니다. 이러한 크기 조정은 Dataflow VPC 서비스 제어 성능에 영향을 주지 않습니다.

공유 VPC의 서브네트워크 매개변수 지정 가이드라인

  • 공유 VPC에 대해 서브네트워크 URL을 지정할 때 HOST_PROJECT_ID가 VPC가 호스팅되는 프로젝트인지 확인합니다.

  • 서브네트워크가 공유 VPC 네트워크에 있는 경우 전체 URL을 사용해야 합니다.

  • 공유 VPC 서브네트워크가 Dataflow 서비스 계정과 공유되어 있고 지정된 서브넷에 Compute 네트워크 사용자 역할이 할당되어 있는지 확인합니다. Compute 네트워크 사용자 역할을 호스트 프로젝트의 Dataflow 서비스 계정에 할당해야 합니다.

    • Google Cloud 콘솔에서 공유 VPC 페이지로 이동하여 서브넷을 검색합니다. 공유 대상 열에서 VPC 서브네트워크가 Dataflow 서비스 계정과 공유되었는지 여부를 확인할 수 있습니다.
    • 네트워크가 공유되지 않으면 다음 오류 메시지가 표시됩니다. 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

다음을 바꿉니다.

  • REGION_NAME: Dataflow 작업의 리전
  • SUBNETWORK_NAME: Compute Engine 서브네트워크의 이름

지정된 네트워크를 사용하여 파이프라인 실행

Google Cloud에서 만든 기본 네트워크 이외의 네트워크를 사용하려면 대부분의 경우 서브네트워크를 지정해야 합니다. 네트워크는 지정된 서브네트워크에서 자동으로 추론됩니다. 자세한 내용은 이 문서의 네트워크 매개변수 지정 가이드라인을 참조하세요.

다음 예시는 명령줄로부터 또는 REST API를 사용하여 파이프라인을 실행하는 방법을 보여줍니다. 이 예시에서는 네트워크를 지정합니다.

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --network=NETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

Go

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

API

REST API를 사용하여 Dataflow 템플릿을 실행하는 경우, environment 객체에 network 또는 subnetwork를 추가합니다.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "network": "NETWORK_NAME",
       "zone": "us-central1-f"
    }
}

다음을 바꿉니다.

  • JOB_NAME: Dataflow 작업의 이름(API만 해당)
  • INPUT_PATH: 소스 경로
  • HOST_PROJECT_ID: 호스트 프로젝트 ID
  • REGION: Dataflow 리전(예: us-central1)
  • STORAGE_BUCKET: 스토리지 버킷
  • NETWORK_NAME: Compute Engine 네트워크의 이름

지정된 서브네트워크를 사용하여 파이프라인 실행

공유 VPC 네트워크에서 특정 서브네트워크를 사용할 수 있는 권한만 가진 서비스 프로젝트 관리자인 경우 사용 권한이 있는 서브네트워크의 subnetwork매개변수를 지정해야 합니다.

다음 예시는 명령줄로부터 또는 REST API를 사용하여 파이프라인을 실행하는 방법을 보여줍니다. 이 예시는 서브네트워크를 지정합니다. 네트워크를 지정할 수도 있습니다.

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --subnetwork=https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

Go

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

API

REST API를 사용하여 Dataflow 템플릿을 실행하는 경우, environment 객체에 network 또는 subnetwork를 추가합니다.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME",
       "zone": "us-central1-f"
    }
}

다음을 바꿉니다.

  • JOB_NAME: Dataflow 작업의 이름(API만 해당)
  • INPUT_PATH: 소스 경로
  • HOST_PROJECT_ID: 호스트 프로젝트 ID
  • REGION: Dataflow 리전(예: us-central1)
  • STORAGE_BUCKET: 스토리지 버킷
  • SUBNETWORK_NAME: Compute Engine 서브네트워크의 이름

외부 IP 주소 사용 중지

외부 IP 주소를 사용 중지하려면 인터넷 액세스 및 방화벽 규칙 구성을 참조하세요.