本文档介绍了如何更新 Pub/Sub 订阅的单条消息转换 (SMT)。对 SMT 所做的更改会在几分钟内生效。对于订阅 SMT,更改会在 UDF 更新后对交付给订阅的新消息生效。
如需更新订阅 SMT,您可以使用 Google Cloud 控制台、Google Cloud CLI、客户端库或 Pub/Sub API。
所需的角色和权限
如需获得更新订阅 SMT 所需的权限,请让您的管理员为您授予项目的 Pub/Sub Editor (roles/pubsub.editor
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含更新订阅 SMT 所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需更新订阅 SMT,您需要具备以下权限:
-
授予对订阅的更新订阅权限:
projects.subscriptions.patch
-
授予视图对项目的订阅权限。只有在使用 Google Cloud 控制台时,才需要此权限:
pubsub.subscriptions.view
您可以在项目级层和个别资源级层配置访问权限控制。
更新订阅 SMT
如需更新订阅 SMT,请按以下步骤操作:
控制台
-
在 Google Cloud 控制台中,前往 Pub/Sub 订阅页面。
-
点击要修改 SMT 的订阅。
-
在订阅详情页面中,点击修改。
转换标签页会列出附加到订阅的所有 SMT。
-
在“修改订阅”页面中,您可以执行以下任务:
-
添加新的 SMT。点击添加转换。
-
修改现有 SMT。展开任意 SMT 以修改该 SMT。
-
重新排列 SMT。使用向上和向下箭头键。
-
删除 SMT。点击“删除”按钮。
-
-
点击更新。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
运行
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 或名称。
-