Pub/Sub to Redis 템플릿

Pub/Sub to Redis 템플릿은 Pub/Sub 구독에서 메시지를 읽고 Redis에 메시지 페이로드를 쓰는 스트리밍 파이프라인입니다. 이 템플릿의 가장 일반적인 사용 사례는 고급 검색 기반 로그 분석을 위해 실시간으로 로그를 Redis Enterprise로 내보내는 것입니다.

  • Redis에 쓰기 전에 JavaScript 사용자 정의 함수를 메시지 페이로드에 적용할 수 있습니다.
  • 처리 실패가 발생한 메시지는 추가적인 문제 해결 및 재처리를 위해 Pub/Sub 처리 불가 주제로 전달됩니다.
  • 보안이 강화되도록 데이터베이스 엔드포인트 연결을 설정할 때 SSL 연결을 사용 설정합니다. 이 템플릿은 상호 TLS를 지원하지 않습니다.

파이프라인 요구사항

  • 파이프라인을 실행하기 전에 소스 Pub/Sub 구독이 있어야 합니다.
  • 파이프라인을 실행하기 전에 Pub/Sub 처리되지 않은 주제가 있어야 합니다.
  • Dataflow 작업자 서브네트워크에서 Redis 데이터베이스 엔드포인트에 액세스할 수 있어야 합니다.

템플릿 매개변수

필수 매개변수

  • inputSubscription: projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID> 형식으로 입력을 읽어올 Pub/Sub 구독입니다(예: projects/your-project-id/subscriptions/your-subscription-name).
  • redisHost: Redis 데이터베이스 호스트입니다. (예: your.cloud.db.redislabs.com). 기본값은 127.0.0.1입니다.
  • redisPort: Redis 데이터베이스 포트입니다. (예: 12345). 기본값은 6379입니다.
  • redisPassword: Redis 데이터베이스 비밀번호입니다. 기본값은 빈 값입니다.

선택적 매개변수

  • sslEnabled: Redis 데이터베이스 SSL 매개변수입니다. 기본값은 false입니다.
  • redisSinkType: Redis 싱크입니다. 지원되는 값은 STRING_SINK, HASH_SINK, STREAMS_SINK, and LOGGING_SINK입니다. (예: STRING_SINK). 기본값은 STRING_SINK입니다.
  • connectionTimeout: Redis 연결 제한 시간(밀리초)입니다. (예: 2000). 기본값은 2000입니다.
  • ttl: 키 만료 시간(초)입니다. HASH_SINKttl 기본값은 -1이며 이는 결코 만료되지 않음을 의미합니다.
  • javascriptTextTransformGcsPath: 사용할 JavaScript 사용자 정의 함수(UDF)를 정의하는 .js 파일의 Cloud Storage URI입니다. (예: gs://my-bucket/my-udfs/my_file.js).
  • javascriptTextTransformFunctionName : 사용할 JavaScript 사용자 정의 함수(UDF)의 이름입니다. 예를 들어 JavaScript 함수가 myTransform(inJson) { /*...do stuff...*/ }이면 함수 이름은 myTransform입니다. 샘플 JavaScript UDF는 UDF 예시(https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples)를 참조하세요.
  • javascriptTextTransformReloadIntervalMinutes: UDF를 새로고침할 빈도(분)를 지정합니다. 값이 0보다 크면 Dataflow가 Cloud Storage에서 UDF 파일을 주기적으로 검사하고 파일이 수정된 경우 UDF를 새로고침합니다. 이 매개변수를 사용하면 파이프라인이 실행 중일 때 작업을 다시 시작할 필요 없이 UDF를 업데이트할 수 있습니다. 값이 0이면 UDF 새로고침이 사용 중지됩니다. 기본값은 0입니다.

사용자 정의 함수

선택적으로 사용자 정의 함수(UDF)를 작성하여 이 템플릿을 확장할 수 있습니다. 템플릿이 각 입력 요소에 대해 UDF를 호출합니다. 요소 페이로드는 JSON 문자열로 직렬화됩니다. 자세한 내용은 Dataflow 템플릿에 대한 사용자 정의 함수 만들기를 참조하세요.

함수 사양

UDF의 사양은 다음과 같습니다.

  • 입력: JSON 문자열
  • 출력: 문자열 또는 문자열화된 JSON 객체

템플릿 실행

콘솔

  1. Dataflow 템플릿에서 작업 만들기 페이지로 이동합니다.
  2. 템플릿에서 작업 만들기로 이동
  3. 작업 이름 필드에 고유한 작업 이름을 입력합니다.
  4. (선택사항): 리전 엔드포인트의 드롭다운 메뉴에서 값을 선택합니다. 기본 리전은 us-central1입니다.

    Dataflow 작업을 실행할 수 있는 리전 목록은 Dataflow 위치를 참조하세요.

  5. Dataflow 템플릿 드롭다운 메뉴에서 the Pub/Sub to Redis template을 선택합니다.
  6. 제공된 매개변수 필드에 매개변수 값을 입력합니다.
  7. 작업 실행을 클릭합니다.

gcloud

셸 또는 터미널에서 템플릿을 실행합니다.

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_PubSub_to_Redis \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       inputSubscription=INPUT_SUBSCRIPTION,\
       redisHost=REDIS_HOST,\
       redisPort=REDIS_PORT,\
       redisPassword=REDIS_PASSWORD,\

다음을 바꿉니다.

  • JOB_NAME: 선택한 고유한 작업 이름
  • VERSION: 사용할 템플릿 버전

    다음 값을 사용할 수 있습니다.

  • REGION_NAME: Dataflow 작업을 배포할 리전(예: us-central1)
  • INPUT_SUBSCRIPTION: Pub/Sub 입력 구독입니다.
  • REDIS_HOST: Redis DB 호스트입니다.
  • REDIS_PORT: Redis DB 포트입니다.
  • REDIS_PASSWORD: Redis DB 비밀번호입니다.

API

REST API를 사용하여 템플릿을 실행하려면 HTTP POST 요청을 전송합니다. API 및 승인 범위에 대한 자세한 내용은 projects.templates.launch를 참조하세요.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "inputSubscription": "INPUT_SUBSCRIPTION",
       "redisHost": "REDIS_HOST",
       "redisPort": "REDIS_PORT",
       "redisPassword": "REDIS_PASSWORD",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_PubSub_to_Redis",
     "environment": { "maxWorkers": "10" }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: Dataflow 작업을 실행하려는 Google Cloud 프로젝트 ID
  • JOB_NAME: 선택한 고유한 작업 이름
  • VERSION: 사용할 템플릿 버전

    다음 값을 사용할 수 있습니다.

  • LOCATION: Dataflow 작업을 배포할 리전(예: us-central1)
  • INPUT_SUBSCRIPTION: Pub/Sub 입력 구독입니다.
  • REDIS_HOST: Redis DB 호스트입니다.
  • REDIS_PORT: Redis DB 포트입니다.
  • REDIS_PASSWORD: Redis DB 비밀번호입니다.

다음 단계