이 문서에서는 단일 메시지 변환 (SMT)을 사용하여 Pub/Sub 주제를 만드는 방법을 설명합니다.
주제 SMT를 사용하면 Pub/Sub 내에서 직접 메시지 데이터와 속성을 간편하게 수정할 수 있습니다. 이 기능을 사용하면 메시지가 주제에 게시되기 전에 데이터 정리, 필터링 또는 형식 변환을 할 수 있습니다.
SMT가 포함된 주제를 만들려면 Google Cloud 콘솔, Google Cloud CLI, 클라이언트 라이브러리 또는 Pub/Sub API를 사용하면 됩니다.
시작하기 전에
Pub/Sub 서비스 및 용어에 대해 알아봅니다.
SMT에 대해 알아보기
필수 역할 및 권한
SMT를 사용하여 주제를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Pub/Sub 편집자 (roles/pubsub.editor
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 SMT로 주제를 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
SMT가 포함된 주제를 만들려면 다음 권한이 필요합니다.
-
프로젝트에 주제 만들기 권한을 부여합니다.
pubsub.topics.create
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
프로젝트 수준 및 개별 리소스 수준에서 액세스 제어를 구성할 수 있습니다.
SMT로 주제 만들기
SMT로 주제를 만들기 전에 주제의 속성 문서를 검토하세요.
다음 샘플에서는 이 사용자 정의 함수 (UDF) SMT로 주제를 만들고자 한다고 가정합니다. UDF에 관한 자세한 내용은 UDF 개요를 참고하세요.
function redactSSN(message, metadata) {
const data = JSON.parse(message.data);
delete data['ssn'];
message.data = JSON.stringify(data);
return message;
}
콘솔
Google Cloud 콘솔에서 Pub/Sub 주제 페이지로 이동합니다.
-
주제 만들기를 클릭합니다.
주제 만들기 페이지가 열립니다.
-
주제 ID 필드에 주제의 ID를 입력합니다. 주제 이름 지정에 대한 자세한 내용은 이름 지정 가이드라인을 참고하세요.
-
변환에서 변환 추가를 클릭합니다.
-
함수 이름을 입력합니다. 예를 들면
redactSSN
입니다. -
주제에 SMT를 즉시 사용하지 않으려면 변환 사용 중지 옵션을 클릭합니다. 이렇게 하면 SMT가 저장되지만 메시지가 주제를 통해 전달될 때 실행되지는 않습니다.
-
새 변환을 입력합니다. 예를 들면 다음과 같습니다.
function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; }
-
Pub/Sub는 SMT를 검증할 수 있는 validate 함수를 제공합니다. 검증을 클릭하여 변환을 검증합니다.
-
다른 변환을 추가하려면 변환 추가를 클릭합니다.
- 모든 SMT를 특정 순서로 정렬하려면 위쪽 및 아래쪽 화살표를 사용하면 됩니다. SMT를 삭제하려면 삭제 버튼을 클릭합니다.
-
Pub/Sub는 샘플 메시지에서 SMT 실행 결과를 확인할 수 있는 테스트 함수를 제공합니다. SMT를 테스트하려면 변환 테스트를 클릭합니다.
-
Test transform 창에서 테스트할 함수를 선택합니다.
-
메시지 입력 창에 샘플 메시지를 입력합니다.
-
메시지 속성을 추가하려면 속성 추가를 클릭하고 키-값 쌍을 하나 이상 입력합니다.
-
테스트를 클릭합니다. 메시지에 SMT를 적용한 결과가 표시됩니다.
-
창을 닫아 샘플 메시지에서 SMT 테스트를 중지합니다.
-
만들기를 클릭하여 주제를 만듭니다.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Pub/Sub는 SMT를 검증할 수 있는 validate 함수를 제공합니다.
gcloud pubsub message-transforms validate
명령어를 실행합니다.gcloud pubsub message-transforms validate --message-transform-file=TRANSFORM_FILE
다음을 바꿉니다.
-
TRANSFORM_FILE: 단일 SMT가 포함된 YAML 또는 JSON 파일의 경로입니다.
다음은 YAML 변환 파일의 예입니다.
javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
-
Pub/Sub는 샘플 메시지에서 하나 이상의 SMT를 실행한 결과를 확인할 수 있는 테스트 함수를 제공합니다.
gcloud pubsub message-transforms test
명령어를 실행합니다.gcloud pubsub message-transforms test --message-transforms-file=TRANSFORMS_FILE
다음을 바꿉니다.
-
TRANSFORMS_FILE: 하나 이상의 SMT가 포함된 YAML 또는 JSON 파일의 경로입니다.
다음은 YAML 변환 파일의 예입니다.
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
-
주제를 만들려면
gcloud pubsub topics create
명령어를 실행합니다.gcloud pubsub topics create TOPIC_ID \ --message-transforms-file=TRANSFORMS_FILE
다음을 바꿉니다.
-
TOPIC_ID: 만들려는 주제의 ID 또는 이름입니다. 주제 이름 지정 방법에 관한 가이드라인은 리소스 이름을 참고하세요. 주제 이름은 변경할 수 없습니다.
-
TRANSFORMS_FILE: 하나 이상의 SMT가 포함된 YAML 또는 JSON 파일의 경로입니다.
다음은 YAML 변환 파일의 예입니다.
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
Java
이 샘플을 사용해 보기 전에 Pub/Sub 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Java API 참고 문서를 확인하세요.
Pub/Sub에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
이 샘플을 사용해 보기 전에 Pub/Sub 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Python API 참고 문서를 확인하세요.
Pub/Sub에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
이 샘플을 사용해 보기 전에 Pub/Sub 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Go API 참고 문서를 확인하세요.
Pub/Sub에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.