이 튜토리얼에서는 주제 설정 및 템플릿 구성 방법을 포함하여 Pub/Sub에 대한 Bigtable 변경 내역 템플릿을 사용하는 방법을 보여줍니다. 원하는 경우 이벤트 스트림에 의해 트리거되는 Cloud Run 함수를 원하는 프로그래밍 언어로 만들 수 있습니다.
이 튜토리얼은 Bigtable, 코드 작성, 이벤트 스트리밍 서비스에 익숙한 기술 사용자를 대상으로 합니다.
Pub/Sub 주제 만들기
Google Cloud 콘솔에서 Pub/Sub 주제 페이지로 이동합니다.
주제 만들기를 클릭합니다.
ID를
bigtable-change-stream-topic
으로 설정합니다.스키마 사용을 선택합니다.
Pub/Sub 스키마 선택 드롭다운에서 새 스키마 만들기를 클릭합니다. 그러면 스키마를 정의하는 새 탭이 열립니다.
- 스키마 ID를
bigtable-change-stream-schema
로 설정합니다. - 스키마 유형을 Avro로 설정합니다.
- 다음을 스키마 정의로 붙여넣습니다. 스키마에 대한 자세한 내용은 템플릿 문서 페이지를 참조하세요.
{ "name" : "ChangelogEntryMessage", "type" : "record", "namespace" : "com.google.cloud.teleport.bigtable", "fields" : [ { "name" : "rowKey", "type" : "bytes"}, { "name" : "modType", "type" : { "name": "ModType", "type": "enum", "symbols": ["SET_CELL", "DELETE_FAMILY", "DELETE_CELLS", "UNKNOWN"]} }, { "name": "isGC", "type": "boolean" }, { "name": "tieBreaker", "type": "int"}, { "name": "columnFamily", "type": "string"}, { "name": "commitTimestamp", "type" : "long"}, { "name" : "sourceInstance", "type" : "string"}, { "name" : "sourceCluster", "type" : "string"}, { "name" : "sourceTable", "type" : "string"}, { "name": "column", "type" : ["null", "bytes"]}, { "name": "timestamp", "type" : ["null", "long"]}, { "name": "timestampFrom", "type" : ["null", "long"]}, { "name": "timestampTo", "type" : ["null", "long"]}, { "name" : "value", "type" : ["null", "bytes"]} ] }
- 만들기를 클릭하여 스키마를 만듭니다.
- 스키마 ID를
스키마 만들기 탭을 닫고 스키마 목록을 새로고침한 후 새로 정의된 스키마를 선택합니다.
만들기를 클릭하여 주제를 만듭니다.
선택사항: Cloud Run 함수 만들기
Cloud Run 함수로 Pub/Sub 스트림을 처리할 수 있습니다.
bigtable-change-stream-topic
주제의 세부정보 페이지에서 Cloud 함수 트리거를 클릭합니다.- 함수 이름 필드에
bt-ps-tutorial-function
이라는 이름을 입력합니다. - 소스 코드 섹션에서 런타임 드롭다운을 클릭한 후 원하는 런타임과 프로그래밍 언어를 선택합니다. 변경 내역이 들어오면 해당 변경 내역을 스트림을 출력하는
hello world
가 생성됩니다. Cloud Run Functions 작성에 대한 자세한 내용은 문서를 참조하세요. - 다른 모든 필드에 대해서는 기본값을 사용합니다.
- 함수 배포를 클릭합니다.
변경 내역이 사용 설정된 테이블 만들기
Google Cloud 콘솔에서 Bigtable 인스턴스 페이지로 이동합니다.
이 튜토리얼에서 사용 중인 인스턴스의 ID를 클릭합니다.
사용 가능한 인스턴스가 없는 경우 가까운 리전의 기본 구성으로 인스턴스를 만듭니다.
왼쪽 탐색창에서 테이블을 클릭합니다.
테이블 만들기를 클릭합니다.
테이블 이름을
change-streams-pubsub-tutorial
로 지정합니다.cf
라는 column family를 추가합니다.변경 내역 사용 설정을 선택합니다.
만들기를 클릭합니다.
변경 내역을 캡처하도록 데이터 파이프라인 초기화
- Bigtable 테이블 페이지에서
change-streams-pubsub-tutorial
테이블을 찾습니다. - 변경 내역 열에서 연결을 클릭합니다.
- 대화상자에서 Pub/Sub을 선택합니다.
- Dataflow 작업 만들기를 클릭합니다.
- Dataflow 작업 만들기 페이지에서 출력 Pub/Sub 주제 이름을
bigtable-change-stream-topic
으로 설정합니다. - Bigtable 애플리케이션 프로필 ID를
default
로 설정합니다. - 작업 실행을 클릭합니다.
- 작업 상태가 시작 중 또는 실행 중이 될 때까지 기다린 후에 진행합니다. 작업이 큐에 추가되면 5분 정도 걸립니다.
Bigtable에 일부 데이터 쓰기
Cloud Shell에서 변경 로그가 일부 데이터를 Pub/Sub 스트림에 쓸 수 있도록 행 몇 개를 Bigtable에 씁니다. 작업이 생성된 후 데이터를 쓰면 변경사항이 표시됩니다. 작업 상태가
running
이 될 때까지 기다릴 필요가 없습니다.cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user123 cf:col1=abc cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user546 cf:col1=def cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \ set change-streams-pubsub-tutorial user789 cf:col1=ghi
Pub/Sub에서 변경 로그 보기
Google Cloud 콘솔에서 Pub/Sub 구독 페이지로 이동합니다.
주제
bigtable-change-stream-topic
에 대해 자동으로 생성된 구독을 클릭합니다. 이름은bigtable-change-stream-topic-sub
여야 합니다.메시지 탭으로 이동합니다.
가져오기를 클릭합니다.
메시지 목록을 탐색하고 작성한 데이터를 봅니다.
선택사항: Cloud Run Functions 로그에서 변경사항 보기
Cloud Run Functions를 만들었으면 로그에서 변경사항을 볼 수 있습니다.
Google Cloud 콘솔에서 Cloud Run 함수로 이동합니다.
bt-ps-tutorial-function
함수를 클릭합니다.로그 탭으로 이동합니다.
로그를 볼 수 있도록 심각도가 최소한 정보 이상으로 설정되어 있는지 확인합니다.
로그를 살펴보고 작성한 데이터를 봅니다.
결과는 다음과 유사합니다.
Pub/Sub message: {"rowKey":"user789","modType":"SET_CELL","isGC":false,"tieBreaker":0,"columnFamily":"cf","commitTimestamp":1695653833064548,"sourceInstance":"YOUR-INSTANCE","sourceCluster":"YOUR-INSTANCE-c1","sourceTable":"change-streams-pubsub-tutorial","column":{"bytes":"col1"},"timestamp":{"long":1695653832278000},"timestampFrom":null,"timestampTo":null,"value":{"bytes":"ghi"}}