更新订阅 SMT

本文档介绍了如何更新 Pub/Sub 订阅的单条消息转换 (SMT)。对 SMT 所做的更改会在几分钟内生效。对于订阅 SMT,更改会在 UDF 更新后传递到订阅的新消息中生效。

如需更新订阅 SMT,您可以使用 Cloud de Confiance 控制台、Google Cloud CLI、 客户端库或 Pub/Sub API。

所需的角色和权限

如需获得更新订阅 SMT 所需的权限,请让您的管理员为您授予项目的Pub/Sub Editor (roles/pubsub.editor) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含 更新订阅 SMT 所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需更新订阅 SMT,您需要具备以下权限:

  • 授予对订阅的更新订阅权限: projects.subscriptions.patch
  • 授予对项目的查看订阅权限。仅当您使用 Cloud de Confiance 控制台时,才需要此权限: pubsub.subscriptions.view

您也可以使用自定义角色或其他预定义角色来获取这些权限。

您可以在项目级层和个别资源级层配置访问权限控制。

更新订阅 SMT

如需更新订阅 SMT,请按照以下步骤操作:

控制台

  1. 在 Cloud de Confiance 控制台中,前往 Pub/Sub 订阅 页面。

    前往“订阅”

  2. 点击您要为其修改 SMT 的订阅。

  3. 在订阅详情页面中,点击修改

    转换 标签页列出了附加到订阅的所有 SMT。

  4. 在“修改订阅”页面中,您可以执行以下任务:

    1. 添加新的 SMT。点击添加转换

    2. 修改现有 SMT。展开任何 SMT 以修改 SMT。

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

    4. 删除 SMT。点击“删除”按钮。

  5. 点击更新

gcloud

  1. 在 Cloud de Confiance 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在控制台的底部启动,并显示命令行提示符。 Cloud de Confiance Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境 。该会话可能需要几秒钟来完成初始化。

  2. 运行 gcloud pubsub subscriptions update命令:

    gcloud pubsub subscriptions update SUBSCRIPTION_ID \
        --message-transforms-file=TRANSFORMS_FILE

    替换以下内容:

    • SUBSCRIPTION_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 subscriptions update SUBSCRIPTION_ID --clear-message-transforms

    SUBSCRIPTION_ID 替换为您要更新的订阅的 ID 或名称。

后续步骤