Spanner change stream to Pub/Sub 템플릿은 Spanner 데이터 변경 레코드를 스트리밍하고 Dataflow Runner V2를 사용하여 Pub/Sub 주제에 쓰는 스트리밍 파이프라인입니다.
새 Pub/Sub 주제에 데이터를 출력하려면 먼저 주제를 만들어야 합니다. 만들어진 후에는 Pub/Sub에서 자동으로 구독을 생성하고 새 주제에 연결합니다. 데이터를 존재하지 않는 Pub/Sub 주제에 출력하려고 하면 Dataflow 파이프라인에서 예외가 발생하고 파이프라인이 연결을 계속 시도하므로 파이프라인이 중단됩니다.
필요한 Pub/Sub 주제가 이미 존재하면 데이터를 해당 주제로 출력할 수 있습니다.
자세한 내용은 변경 내역 정보, Dataflow를 사용하여 변경 내역 연결 빌드, 변경 내역 권장사항을 참조하세요.
파이프라인 요구사항
- 파이프라인을 실행하기 전에 Spanner 인스턴스가 있어야 합니다.
- 파이프라인을 실행하기 전에 Spanner 데이터베이스가 있어야 합니다.
- 파이프라인을 실행하기 전에 Spanner 메타데이터 인스턴스가 있어야 합니다.
- 파이프라인을 실행하기 전에 Spanner 메타데이터 데이터베이스가 있어야 합니다.
- 파이프라인을 실행하기 전에 Spanner 변경 내역이 있어야 합니다.
- 파이프라인을 실행하기 전에 Pub/Sub 주제가 있어야 합니다.
템플릿 매개변수
필수 매개변수
- spannerInstanceId: 변경 스트림을 읽어올 Spanner 인스턴스입니다.
- spannerDatabase: 변경 내역을 읽어올 Spanner 데이터베이스입니다.
- spannerMetadataInstanceId: 변경 내역 커넥터 메타데이터 테이블에 사용할 Spanner 인스턴스입니다.
- spannerMetadataDatabase: 변경 내역 커넥터 메타데이터 테이블에 사용할 Spanner 데이터베이스입니다.
- spannerChangeStreamName: 읽어 올 Spanner 변경 내역의 이름입니다.
- pubsubTopic: 변경 내역 출력을 위한 Pub/Sub 주제입니다.
선택적 매개변수
- spannerProjectId: 변경 내역을 읽어 올 프로젝트입니다. 변경 내역 커넥터 메타데이터 테이블이 생성되는 프로젝트이기도 합니다. 이 매개변수의 기본값은 Dataflow 파이프라인이 실행되는 프로젝트입니다.
- spannerDatabaseRole: 템플릿을 실행할 때 사용할 Spanner 데이터베이스 역할입니다. 이 매개변수는 템플릿을 실행하는 IAM 주 구성원이 세분화된 액세스 제어 사용자인 경우에만 필요합니다. 데이터베이스 역할에는 변경 내역에 대한
SELECT
권한과 변경 내역의 읽기 함수에 대한EXECUTE
권한이 있어야 합니다. 자세한 내용은 변경 내역에 대한 세분화된 액세스 제어(https://cloud.google.com/spanner/docs/fgac-change-streams)를 참조하세요. - spannerMetadataTableName: 사용할 Spanner 변경 내역 커넥터 메타데이터 테이블 이름입니다. 제공하지 않으면 Spanner는 파이프라인 흐름 변경 중에 스트림 커넥터 메타데이터 테이블을 자동으로 만듭니다. 기존 파이프라인을 업데이트할 때 이 매개변수를 제공해야 합니다. 다른 경우에는 이 매개변수를 사용하지 마세요.
- startTimestamp: 변경 내역을 읽는 데 사용할 시작 DateTime (https://tools.ietf.org/html/rfc3339)입니다. 예를 들면 ex- 2021-10-12T07:20:50.52Z입니다. 기본값은 파이프라인이 시작되는 시점의 타임스탬프, 즉 현재 시간입니다.
- endTimestamp: 변경 내역을 읽는 데 사용할 종료 DateTime (https://tools.ietf.org/html/rfc3339)입니다. 예를 들면 ex- 2021-10-12T07:20:50.52Z입니다. 기본값은 미래의 무한대 시간입니다.
- spannerHost: 템플릿에서 호출할 Cloud Spanner 엔드포인트입니다. 테스트에만 사용됩니다. 예를 들면
https://spanner.googleapis.com
입니다. 기본값은 https://spanner.googleapis.com입니다. - outputDataFormat: 출력 형식입니다. 출력은 여러 PubsubMessages로 래핑되고 Pub/Sub 주제로 전송됩니다. 허용되는 형식은 JSON 및 AVRO입니다. 기본값은 JSON입니다.
- pubsubAPI: 파이프라인을 구현하는 데 사용되는 Pub/Sub API입니다. 허용되는 API는
pubsubio
및native_client
입니다. 소수의 초당 쿼리 수 (QPS)에서는native_client
지연 시간이 더 짧습니다. 많은 수의 QPS에서pubsubio
가 더 우수하고 안정적인 성능을 제공합니다. 기본값은pubsubio
입니다. - pubsubProjectId: Pub/Sub 주제의 프로젝트입니다. 이 매개변수의 기본값은 Dataflow 파이프라인이 실행되는 프로젝트입니다.
- rpcPriority: Spanner 호출의 요청 우선순위입니다. 허용되는 값은 HIGH, MEDIUM, LOW입니다. 기본값은 HIGH입니다.
- includeSpannerSource: 변경 스트림을 읽을 Spanner 데이터베이스 ID 및 인스턴스 ID를 출력 메시지 데이터에 포함할지 여부입니다. 기본값은 false입니다.
- outputMessageMetadata: 출력 Pub/Sub 메시지의 맞춤 필드 outputMessageMetadata의 문자열 값입니다. 기본값은 비어 있으며 이 값이 비어 있지 않은 경우에만 outputMessageMetadata 필드가 채워집니다. 여기에 값을 입력할 때 특수문자(예: 큰따옴표)를 이스케이프 처리하세요.
템플릿 실행
콘솔
- Dataflow 템플릿에서 작업 만들기 페이지로 이동합니다. 템플릿에서 작업 만들기로 이동
- 작업 이름 필드에 고유한 작업 이름을 입력합니다.
- (선택사항): 리전 엔드포인트의 드롭다운 메뉴에서 값을 선택합니다. 기본 리전은
us-central1
입니다.Dataflow 작업을 실행할 수 있는 리전 목록은 Dataflow 위치를 참조하세요.
- Dataflow 템플릿 드롭다운 메뉴에서 the Cloud Spanner change streams to Pub/Sub template을 선택합니다.
- 제공된 매개변수 필드에 매개변수 값을 입력합니다.
- 작업 실행을 클릭합니다.
gcloud
셸 또는 터미널에서 템플릿을 실행합니다.
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Spanner_Change_Streams_to_PubSub \ --region REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabase=SPANNER_DATABASE,\ spannerMetadataInstanceId=SPANNER_METADATA_INSTANCE_ID,\ spannerMetadataDatabase=SPANNER_METADATA_DATABASE,\ spannerChangeStreamName=SPANNER_CHANGE_STREAM,\ pubsubTopic=PUBSUB_TOPIC
다음을 바꿉니다.
JOB_NAME
: 선택한 고유한 작업 이름VERSION
: 사용할 템플릿 버전다음 값을 사용할 수 있습니다.
latest
: 버킷의 날짜가 지정되지 않은 상위 폴더(gs://dataflow-templates-REGION_NAME/latest/)에서 사용할 수 있는 최신 버전의 템플릿을 사용합니다.- 버전 이름(예:
2023-09-12-00_RC00
): 버킷의 날짜가 지정된 해당 상위 폴더(gs://dataflow-templates-REGION_NAME/)에 중첩되어 있는 특정 버전의 템플릿을 사용합니다.
REGION_NAME
: Dataflow 작업을 배포할 리전(예:us-central1
)SPANNER_INSTANCE_ID
: Spanner 인스턴스 ID입니다.SPANNER_DATABASE
: Spanner 데이터베이스입니다.SPANNER_METADATA_INSTANCE_ID
: Spanner 메타데이터 인스턴스 ID입니다.SPANNER_METADATA_DATABASE
: Spanner 메타데이터 데이터베이스입니다.SPANNER_CHANGE_STREAM
: Spanner 변경 내역입니다.PUBSUB_TOPIC
: 변경 내역 출력을 위한 Pub/Sub 주제
API
REST API를 사용하여 템플릿을 실행하려면 HTTP POST 요청을 전송합니다. API 및 승인 범위에 대한 자세한 내용은 projects.templates.launch
를 참조하세요.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabase": "SPANNER_DATABASE", "spannerMetadataInstanceId": "SPANNER_METADATA_INSTANCE_ID", "spannerMetadataDatabase": "SPANNER_METADATA_DATABASE", "spannerChangeStreamName": "SPANNER_CHANGE_STREAM", "pubsubTopic": "PUBSUB_TOPIC" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Spanner_Change_Streams_to_PubSub", } }
다음을 바꿉니다.
PROJECT_ID
: Dataflow 작업을 실행하려는 Google Cloud 프로젝트 IDJOB_NAME
: 선택한 고유한 작업 이름VERSION
: 사용할 템플릿 버전다음 값을 사용할 수 있습니다.
latest
: 버킷의 날짜가 지정되지 않은 상위 폴더(gs://dataflow-templates-REGION_NAME/latest/)에서 사용할 수 있는 최신 버전의 템플릿을 사용합니다.- 버전 이름(예:
2023-09-12-00_RC00
): 버킷의 날짜가 지정된 해당 상위 폴더(gs://dataflow-templates-REGION_NAME/)에 중첩되어 있는 특정 버전의 템플릿을 사용합니다.
LOCATION
: Dataflow 작업을 배포할 리전(예:us-central1
)SPANNER_INSTANCE_ID
: Spanner 인스턴스 ID입니다.SPANNER_DATABASE
: Spanner 데이터베이스입니다.SPANNER_METADATA_INSTANCE_ID
: Spanner 메타데이터 인스턴스 ID입니다.SPANNER_METADATA_DATABASE
: Spanner 메타데이터 데이터베이스입니다.SPANNER_CHANGE_STREAM
: Spanner 변경 내역입니다.PUBSUB_TOPIC
: 변경 내역 출력을 위한 Pub/Sub 주제
다음 단계
- Dataflow 템플릿 알아보기
- Google 제공 템플릿 목록 참조