更改订阅类型

创建订阅后,您可以将传送方式更改为推送、拉取或导出。

准备工作

所需的角色和权限

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

此预定义角色包含更改订阅类型所需的 pubsub.subscriptions.update 权限, which is required to change a subscription type.

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

您可以在项目级层和个别资源级层配置访问权限控制。您可以在一个项目中创建订阅,并将其附加到位于不同项目中的主题。 确保您拥有每个项目所需的权限。

更改订阅的传送类型

如需更改订阅的传送类型,请执行以下步骤。

控制台

  1. 在 Google Cloud 控制台中,前往 订阅 页面。

    前往订阅页面

  2. 点击要更新的订阅的名称。

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

  4. 对于传送类型,选择新的传送类型。

  5. 填写新订阅类型的属性。如需了解详情,请参阅以下主题:

  6. 可选。根据需要更新其他订阅属性。

  7. 点击更新

gcloud

如需更改传送类型,请使用 gcloud pubsub subscriptions update 命令。清除当前传送类型的配置,并设置新类型的配置,如下所示:

gcloud pubsub subscriptions update SUBSCRIPTION_ID \
  CLEAR_CONFIG_FLAG \
  NEW_CONFIG_FLAGS

替换以下内容:

  • SUBSCRIPTION_ID:要 更新的订阅的名称。

  • CLEAR_CONFIG_FLAG:用于清除传送类型的现有 配置的标志。根据当前的传送类型,使用以下标志之一:

    • 拉取订阅:--no-enable-exactly-once-delivery

    • 推送订阅:--push-endpoint=""

    • BigQuery 订阅:--clear-bigquery-config

    • Bigtable 订阅:--clear-bigtable-config

    • Cloud Storage 订阅:--clear-cloud-storage-config

  • NEW_CONFIG_FLAGS:用于配置新 传送类型的标志。如需了解详情,请参阅 gcloud pubsub subscriptions update 命令的文档。

示例

将 BigQuery 订阅更改为拉取订阅:

gcloud pubsub subscriptions update SUBSCRIPTION_ID \
  --clear-bigquery-config

将推送订阅更改为 BigQuery 订阅:

gcloud pubsub subscriptions update SUBSCRIPTION_ID \
  --push-endpoint="" \
  --bigquery-table=BIGQUERY_TABLE

更新推送订阅端点

如需更新端点网址,请执行以下步骤。

控制台

如需修改端点网址,请完成以下步骤。

  1. 在 Google Cloud 控制台中,前往 订阅 页面。

    前往订阅页面

  2. 点击要更新的订阅旁边的
  3. 传送类型 中,选择传送方式。
  4. 根据需要填写其他订阅属性。
  5. 点击更新

gcloud

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

    激活 Cloud Shell

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

  2. 如需修改端点网址,请运行 gcloud pubsub subscriptions modify-push-config 命令:

    gcloud pubsub subscriptions modify-push-config SUBSCRIPTION_ID \
      --push-endpoint=PUSH_ENDPOINT

    如果订阅已使用拉取传送,则设置推送端点 会将传送方式切换为推送传送。

    您可以通过将推送端点更改为 空字符串来将推送切换为拉取。

REST

如需修改订阅的推送配置,请使用 projects.subscriptions.modifyPushConfig 方法:

请求:

必须使用 Authorization 标头中的访问令牌对请求进行身份验证。如需获取当前 应用默认凭据的访问令牌,请运行以下命令:gcloud auth application-default print-access-token

POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID:modifyPushConfig
Authorization: Bearer ACCESS_TOKEN
  

请求正文:

{
"pushConfig": {
  "pushEndpoint": "PUSH_ENDPOINT"
}
}

其中:

  • PROJECT_ID 是项目 ID。
  • SUBSCRIPTION_ID 是订阅 ID。
  • PUSH_ENDPOINT 是您要应用为新推送端点的修改后的网址。例如,https://myproject.appspot.com/myhandler
  • 回答:

    如果请求成功,响应将为空的 JSON 对象。

    C++

    在尝试此示例之前,请按照《快速入门:使用客户端库》中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档

    namespace pubsub_admin = ::google::cloud::pubsub_admin;
    namespace pubsub =