Pub/Sub 到 Redis 範本

「Pub/Sub 到 Redis 範本」是串流管道,可從 Pub/Sub 訂閱項目讀取訊息,並將訊息酬載寫入 Redis。這個範本最常見的用途是將記錄匯出至 Redis Enterprise,以便即時進行進階搜尋式記錄分析。

  • 為提升安全性,請在設定資料庫端點連線時啟用 SSL 連線。 這個範本不支援相互 TLS。

管道相關規定

  • 執行管道之前,來源 Pub/Sub 訂閱項目必須已經存在。
  • Dataflow 工作站的子網路必須能存取 Redis 資料庫端點。

範本參數

必要參數

  • inputSubscription:要讀取輸入內容的 Pub/Sub 訂閱項目。例如:projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID>。
  • redisHost:Redis 資料庫主機。例如,your.cloud.db.redislabs.com。預設值為 127.0.0.1。
  • redisPort:Redis 資料庫連接埠。例如,12345。預設值為 6379。
  • redisPassword:Redis 資料庫密碼。預設值為 empty。

選用參數

  • 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_SINK 的 ttl 預設值為 -1,表示永不過期。
  • outputDeadletterTopic:要將無法處理的訊息轉送至的 Pub/Sub 主題。如果訊息無法完成 UDF 轉換,就會轉送至此處。使用 JavaScript UDF 時,這是必填欄位。例如:projects/<PROJECT_ID>/topics/<TOPIC_NAME>。
  • javascriptTextTransformGcsPath:定義要使用的 JavaScript user-defined function (UDF) 的 .js 檔案 Cloud Storage URI。例如:gs://my-bucket/my-udfs/my_file.js。
  • javascriptTextTransformFunctionName:要使用的 JavaScript user-defined function (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。

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(依據範本建立工作) 頁面。
  2. 前往「依範本建立工作」
  3. 在「Job name」(工作名稱) 欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1。

    如需可執行 Dataflow 工作的區域清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中,選取「Pub/Sub to Redis」(Pub/Sub 到 Redis) 範本。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)。

gcloud

在殼層或終端機中執行範本:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates/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:您要使用的範本版本

    您可以使用下列值:

    • latest,使用範本的最新版本,該版本位於 bucket 中非依日期命名的上層資料夾:gs://dataflow-templates/latest/
    • 版本名稱,例如 2023-09-12-00_RC00,可使用特定版本的範本,該範本會以巢狀結構存放在 bucket 中相應的依日期命名上層資料夾中:gs://dataflow-templates/
  • REGION_NAME:您要部署 Dataflow 工作的區域,例如 us-central1
  • INPUT_SUBSCRIPTION:Pub/Sub 輸入訂閱項目
  • REDIS_HOST:Redis 資料庫主機
  • REDIS_PORT:Redis 資料庫通訊埠
  • REDIS_PASSWORD:Redis 資料庫密碼

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/VERSION/flex/Cloud_PubSub_to_Redis",
     "environment": { "maxWorkers": "10" }
  }
}

更改下列內容:

  • PROJECT_ID:您要執行 Dataflow 工作的 Google Cloud 專案 ID
  • JOB_NAME:您選擇的不重複工作名稱
  • VERSION:您要使用的範本版本

    您可以使用下列值:

    • latest,使用範本的最新版本,該版本位於 bucket 中非依日期命名的上層資料夾:gs://dataflow-templates/latest/
    • 版本名稱,例如 2023-09-12-00_RC00,可使用特定版本的範本,該範本會以巢狀結構存放在 bucket 中相應的依日期命名上層資料夾中:gs://dataflow-templates/
  • LOCATION:您要部署 Dataflow 工作的區域,例如 us-central1
  • INPUT_SUBSCRIPTION:Pub/Sub 輸入訂閱項目
  • REDIS_HOST:Redis 資料庫主機
  • REDIS_PORT:Redis 資料庫通訊埠
  • REDIS_PASSWORD:Redis 資料庫密碼

後續步驟