更新主題 SMT

本文說明如何更新 Pub/Sub 主題的單一訊息轉換 (SMT)。SMT 的變更會在幾分鐘內生效。如果是主題 SMT,變更會套用至 SMT 更新後發布的新訊息。

如要更新主題 SMT,可以使用 Google Cloud 控制台、Google Cloud CLI、用戶端程式庫或 Pub/Sub API。

必要角色和權限

如要取得更新主題 SMT 所需的權限,請要求系統管理員授予您專案的 Pub/Sub 編輯者 (roles/pubsub.editor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備 pubsub.topics.update 權限,可更新主題 SMT。

您或許還可透過自訂角色或其他預先定義的角色取得這項權限。

您可以在專案層級和個別資源層級設定存取權控管。

更新主題 SMT

如要更新主題 SMT,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的 Pub/Sub「Topics」(主題) 頁面。

    前往「主題」

  2. 按一下要編輯 SMT 的主題。

  3. 在主題詳細資料頁面中,按一下「編輯」

    「轉換」分頁會列出附加至主題的所有 SMT。

  4. 在「編輯主題」頁面中,您可以執行下列工作:

    1. 新增 SMT。按一下「新增轉換作業」

    2. 編輯現有的 SMT。展開任一 SMT 即可編輯。

    3. 重新排列 SMT。使用向上鍵和向下鍵。

    4. 刪除 SMT。按一下「刪除」按鈕。

  5. 按一下「Update」

gcloud

  1. 在 Google Cloud 控制台中啟用 Cloud Shell。

    啟用 Cloud Shell

    Google Cloud 主控台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 執行 gcloud pubsub topics update 指令:

    gcloud pubsub topics update 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
      - javascriptUdf:
          code: >
              function filterHighAmount(message, metadata) {
                const data = JSON.parse(message.data);
                if (data['amount'] > 100 ) { return null; }
                return message;
              }
          functionName: filterHighAmount

    如要清除主題中的所有 SMT,請使用下列指令:

    gcloud pubsub topics update TOPIC_ID --clear-message-transforms

    TOPIC_ID 替換為要更新的主題 ID 或名稱。

後續步驟