파이프라인은 버스를 타겟 대상으로 연결하고 이벤트 메시지를 해당 대상으로 라우팅합니다. 특정 형식의 이벤트 데이터를 예상하도록 파이프라인을 구성하거나 이벤트가 대상에 전송되기 전에 지원되는 형식에서 다른 형식으로 이벤트 데이터를 변환할 수 있습니다. 예를 들어 Avro 데이터만 허용하는 엔드포인트로 이벤트를 라우팅해야 할 수 있습니다.
지원되는 형식
다음과 같은 형식 변환이 지원됩니다.
- Avro에서 JSON
- Avro에서 Protobuf
- JSON에서 Avro
- JSON에서 Protobuf로
- Protobuf에서 Avro
- Protobuf에서 JSON
다음에 유의하세요.
- 이벤트 형식을 변환하면 전체 이벤트 메시지가 아닌 이벤트 페이로드만 변환됩니다. 
- 파이프라인에 인바운드 데이터 형식이 지정된 경우 모든 이벤트가 해당 형식과 일치해야 합니다. 예상 형식과 일치하지 않는 이벤트는 지속적인 오류로 처리됩니다. 
- 파이프라인에 인바운드 데이터 형식이 지정되지 않은 경우 아웃바운드 형식을 설정할 수 없습니다. 
- 특정 대상에 대해 이벤트 형식이 변환되기 전에 구성된 모든 데이터 변환이 먼저 적용됩니다. 
- 메시지 바인딩을 지정하지 않는 한 이벤트는 항상 바이너리 콘텐츠 모드에서 HTTP 요청을 사용하는 CloudEvents 형식으로 전송됩니다. 
- JSON 스키마는 동적으로 감지됩니다. Protobuf 스키마 정의의 경우 최상위 유형을 하나만 정의할 수 있으며 다른 유형을 참조하는 가져오기 문은 지원되지 않습니다. - syntax식별자가 없는 스키마 정의는 기본적으로- proto2입니다. 스키마 크기 제한이 있다는 점에 유의하세요.
이벤트를 포맷하도록 파이프라인 구성
Google Cloud 콘솔 또는 gcloud CLI를 사용하여 특정 형식의 이벤트 데이터를 예상하거나 이벤트 데이터를 한 형식에서 다른 형식으로 변환하도록 파이프라인을 구성할 수 있습니다.
콘솔
- Google Cloud 콘솔에서 Eventarc > 파이프라인 페이지로 이동합니다. 
- 파이프라인을 만들거나 파이프라인을 업데이트하는 경우 파이프라인의 이름을 클릭합니다. 
- 파이프라인 세부정보 페이지에서 수정을 클릭합니다. 
- 이벤트 미디에이션 창에서 다음을 수행합니다. 
- 대상 창에서 다음을 수행합니다. - 해당하는 경우 아웃바운드 형식 목록에서 형식을 선택합니다. - 파이프라인에 인바운드 데이터 형식이 지정되지 않은 경우 아웃바운드 형식을 설정할 수 없습니다. 
- 선택사항: 메시지 바인딩을 적용합니다. 자세한 내용은 메시지 바인딩을 참조하세요. 
 
- 저장을 클릭합니다. - 파이프라인을 업데이트하는 데 몇 분 정도 걸릴 수 있습니다. 
gcloud
- 터미널을 엽니다. 
- 파이프라인을 만들거나 - gcloud eventarc pipelines update명령어를 사용하여 파이프라인을 업데이트할 수 있습니다.- gcloud eventarc pipelines update PIPELINE_NAME \ --location=REGION \ --INPUT_PAYLOAD_FLAG \ --destinations=OUTPUT_PAYLOAD_KEY - 다음을 바꿉니다. - PIPELINE_NAME: 파이프라인의 ID 또는 정규화된 이름
- REGION: 지원되는 Eventarc Advanced 위치- 또는 gcloud CLI 위치 속성을 설정할 수 있습니다. - gcloud config set eventarc/location REGION
- INPUT_PAYLOAD_FLAG: 다음 중 하나일 수 있는 입력 데이터 형식 플래그입니다.- --input-payload-format-avro-schema-definition
- --input-payload-format-json
- --input-payload-format-protobuf-schema-definition
 - 파이프라인에 입력 데이터 형식이 지정된 경우 모든 이벤트가 해당 형식과 일치해야 합니다. 예상 형식과 일치하지 않는 이벤트는 지속적인 오류로 처리됩니다. 
- OUTPUT_PAYLOAD_KEY: 다음 중 하나일 수 있는 출력 데이터 형식 키입니다.- output_payload_format_avro_schema_definition
- output_payload_format_json
- output_payload_format_protobuf_schema_definition
 - 출력 데이터 형식 키를 설정하는 경우 입력 데이터 형식 플래그도 지정해야 합니다. 
 - 파이프라인을 업데이트하는 데 몇 분 정도 걸릴 수 있습니다. - 예:- 다음 예시에서는 - --input-payload-format-protobuf-schema-definition플래그를 사용하여 파이프라인이 특정 스키마가 있는 Protobuf 데이터 형식의 이벤트를 예상해야 한다고 지정합니다.- gcloud eventarc pipelines update my-pipeline \ --input-payload-format-protobuf-schema-definition \ ' syntax = "proto3"; message schema { string name = 1; string severity = 2; } ' - 다음 예시에서는 - output_payload_format_avro_schema_definition키와- --input-payload-format-avro-schema-definition플래그를 사용하여 Avro 형식의 이벤트를 예상하고 동일한 형식으로 출력하는 파이프라인을 만듭니다.- gcloud eventarc pipelines create my-pipeline \ --location=us-central1 \ --destinations=http_endpoint_uri='https://example-endpoint.com',output_payload_format_avro_schema_definition='{"type": "record", "name": "my_record", "fields": [{"name": "my_field", "type": "string"}]}' \ --input-payload-format-avro-schema-definition='{"type": "record", "name": "my_record", "fields": [{"name": "my_field", "type": "string"}]}' - 다음 예시에서는 - output_payload_format_protobuf_schema_definition키와- --input-payload-format-avro-schema-definition플래그를 사용하여 파이프라인을 업데이트하고 스키마 정의를 사용하여 이벤트 데이터를 Avro에서 Protobuf로 변환합니다.- gcloud eventarc pipelines update my-pipeline \ --location=us-central1 \ --destinations=output_payload_format_protobuf_schema_definition='message MessageProto {string prop1 = 1; string prop2 = 2;}' \ --input-payload-format-avro-schema-definition= \ ' { "type": "record", "name": "MessageProto", "fields": [ { "name" : "prop1", "type": "string" }, { "name" : "prop2", "type": "string" }, ] } '