이 문서에서는 Pub/Sub 주제의 스키마 버전을 커밋하는 방법을 보여줍니다.
시작하기 전에
- Pub/Sub 스키마의 작동 방식을 이해합니다.
- 스키마를 만듭니다.
필수 역할 및 권한
스키마 버전을 커밋하고 스키마를 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Pub/Sub 편집자(roles/pubsub.editor
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 스키마 버전을 커밋하고 스키마를 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
스키마 버전을 커밋하고 스키마를 관리하려면 다음 권한이 필요합니다.
-
스키마 만들기:
pubsub.schemas.create
-
주제에 스키마 연결:
pubsub.schemas.attach
-
스키마 버전 커밋:
pubsub.schemas.commit
-
스키마 또는 스키마 버전 삭제:
pubsub.schemas.delete
-
스키마 또는 스키마 버전 가져오기:
pubsub.schemas.get
-
스키마 나열:
pubsub.schemas.list
-
스키마 버전 나열:
pubsub.schemas.listRevisions
-
스키마 롤백:
pubsub.schemas.rollback
-
메시지 유효성 검사:
pubsub.schemas.validate
-
스키마의 IAM 정책 가져오기:
pubsub.schemas.getIamPolicy
-
스키마의 IAM 정책 구성:
pubsub.schemas.setIamPolicy
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
사용자, 그룹, 도메인, 서비스 계정과 같은 주 구성원에 역할 및 권한을 부여할 수 있습니다. 한 프로젝트에서 스키마를 만들고 이를 다른 프로젝트에 있는 주제에 연결할 수 있습니다. 각 프로젝트에 필요한 권한이 있는지 확인합니다.
스키마 수정
Google Cloud 콘솔, gcloud CLI, Pub/Sub API, Cloud 클라이언트 라이브러리를 사용하여 스키마 버전을 커밋할 수 있습니다.
다음은 스키마 버전 커밋에 대한 몇 가지 가이드라인입니다.
특정 제약조건 내에서 스키마를 수정할 수 있습니다.
프로토콜 버퍼 스키마의 경우 선택적인 필드를 추가하거나 삭제할 수 있습니다. 다른 필드는 추가하거나 삭제할 수 없습니다. 또한 기존 필드를 수정할 수 없습니다.
Avro 스키마의 경우 스키마 해결 규칙은 Avro 문서를 참조하세요. 새 버전은 읽기 역할 스키마와 쓰기 역할 스키마 모두인 것처럼 규칙을 따라야 합니다.
스키마에는 동시에 최대 20개의 버전이 포함될 수 있습니다. 이 제한을 초과할 경우에는 새 버전을 만들기 전에 기존 스키마 버전을 삭제합니다.
각 버전에는 고유한 버전 ID가 연결되어 있습니다. 버전 ID는 자동으로 생성되는 8자로 된 UUID입니다.
주제 유효성 검사에 사용되는 스키마의 버전 또는 버전 범위를 업데이트할 때는 변경사항이 적용되는 데 몇 분 정도 걸릴 수 있습니다.
콘솔
스키마 버전을 만들려면 다음 단계별 안내를 따르세요.
Google Cloud 콘솔에서 Pub/Sub 스키마 페이지로 이동합니다.
기존 스키마의 스키마 ID를 클릭합니다.
스키마의 스키마 세부정보 페이지가 열립니다.
버전 만들기를 클릭합니다.
스키마 버전 만들기 페이지가 열립니다.
필요에 따라 항목을 변경합니다.
예를 들어 스키마 만들기에서 만든 Avro 샘플 스키마의 경우
Price
라는 선택적인 추가 필드를 다음과 같이 추가할 수 있습니다.{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false }, { "name": "Price", "type": "double", "default": "0.0" } ] }
스키마 정의가 올바른지 확인하려면 정의 유효성 검사를 클릭합니다.
또한 스키마 메시지의 유효성을 검사할 수 있습니다.
메시지 테스트를 클릭하여 샘플 메시지를 테스트합니다.
메시지 테스트 창에서 메시지 인코딩 유형을 선택합니다.
메시지 본문에 테스트 메시지를 입력합니다.
예를 들어 다음은 테스트 스키마의 샘플 메시지입니다. 이 예시에서는 메시지 인코딩을
JSON
으로 선택합니다.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}
테스트를 클릭합니다.
커밋을 클릭하여 스키마를 저장합니다.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
각 항목의 의미는 다음과 같습니다.
- SCHEMA_TYPE은
avro
또는protocol-buffer
입니다. - SCHEMA_DEFINITION은 스키마 정의를 포함하는
string
으로, 선택한 스키마 유형에 따라 형식이 지정됩니다.
파일에서 스키마 정의를 지정할 수도 있습니다.
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
각 항목의 의미는 다음과 같습니다.
- SCHEMA_TYPE은
avro
또는protocol-buffer
입니다. - SCHEMA_DEFINITION_FILE은 선택한 스키마 유형에 따라 형식이 지정된 스키마 정의가 있는 파일 경로가 포함되어 있는
string
입니다.
REST
스키마 버전을 커밋하려면 다음과 같이 POST 요청을 보냅니다.
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID:commit Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
요청 본문에 다음 필드를 지정합니다.
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE "name": SCHEMA_NAME }
각 항목의 의미는 다음과 같습니다.
- SCHEMA_TYPE은
AVRO
또는PROTOCOL_BUFFER
입니다. - SCHEMA_DEFINITION은 스키마 정의를 포함하는 문자열로, 선택한 스키마 유형에 따라 형식이 지정됩니다.
- SCHEMA_NAME은 기존 스키마 이름입니다.
응답 본문에는 스키마 리소스의 JSON 표현이 포함되어야 합니다. 예를 들면 다음과 같습니다.
{ "name": SCHEMA_NAME, "type": SCHEMA_TYPE, "definition": SCHEMA_DEFINITION "revisionId": REVISION_ID "revisionCreateTime": REVISION_CREATE_TIME }
각 항목의 의미는 다음과 같습니다.
- REVISION_ID는 해당 버전에 대한 서버 생성 ID입니다.
- REVISION_CREATE_TIME은 버전이 생성된 ISO 8601 타임스탬프입니다.
Go
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Go API 참조 문서를 참조하세요.
Avro
Proto
C++
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 C++ 설정 안내를 따르세요. 자세한 내용은 Pub/Sub C++ API 참조 문서를 확인하세요.
Avro
Proto
자바
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Java API 참조 문서를 참조하세요.
Avro
Proto
Python
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Python API 참조 문서를 참조하세요.
Avro
Proto
Node.js
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Node.js API 참조 문서를 참조하세요.
Avro
Proto
Node.js
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Node.js API 참조 문서를 참조하세요.
Avro
Proto
스키마 버전을 커밋한 후 스키마 페이지에서 새 버전의 세부정보를 볼 수 있습니다.