本教程页面介绍了如何部署使用 Pub/Sub 接收事件的未经身份验证的 Cloud Run 服务。
目标
在此教程中,您将学习以下操作:
将事件接收器服务部署到 Cloud Run。
创建事件触发器。
向 Pub/Sub 主题发布消息以生成事件,并在 Cloud Run 日志中查看事件。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
准备工作
- 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
-
启用 Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
-
启用 Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API。
- 安装并初始化 Google Cloud CLI。
- 更新 gcloud 组件:
gcloud components update
- 使用您的帐号登录:
gcloud auth login
- 设置本教程中使用的配置变量:
gcloud config set project PROJECT_ID gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
其中,PROJECT_ID 是您的 Google Cloud 项目 ID。
将事件接收器部署到 Cloud Run
部署接收和记录事件的 Cloud Run 服务。
要部署示例事件接收器服务,请执行以下操作:
克隆代码库:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。
切换到包含 Cloud Run 示例代码的目录:
Node.js
cd nodejs-docs-samples/eventarc/pubsub/
Python
cd python-docs-samples/eventarc/pubsub/
Go
cd golang-samples/eventarc/pubsub/
Java
cd java-docs-samples/eventarc/pubsub/
Ruby
cd ruby-docs-samples/eventarc/pubsub/
C#
cd dotnet-docs-samples/eventarc/pubsub/
构建容器并将其上传到 Cloud Build:
gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/events-pubsub
将容器映像部署到 Cloud Run:
gcloud run deploy helloworld-events-pubsub-tutorial \ --image gcr.io/$(gcloud config get-value project)/events-pubsub \ --allow-unauthenticated
当您看到服务网址时,表示部署完成。
创建 Eventarc 触发器
当消息发布到 Pub/Sub 主题时,事件触发器会将消息发送到部署在 Cloud Run 上的事件接收器服务。
要创建 Eventarc Pub/Sub 触发器,请执行以下操作:
创建一个触发器来监听 Pub/Sub 消息:
新的 Pub/Sub 主题
gcloud eventarc triggers create events-pubsub-trigger \ --destination-run-service=helloworld-events-pubsub-tutorial \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
这会创建一个新的 Pub/Sub 主题和一个名为
events-pubsub-trigger
的触发器。现有 Pub/Sub 主题
gcloud eventarc triggers create events-pubsub-trigger \ --destination-run-service=helloworld-events-pubsub-tutorial \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME
请替换以下内容:
PROJECT_ID
是您的 Google Cloud 项目 IDTOPIC_NAME
是现有 Pub/Sub 主题的名称。
这将为现有 Pub/Sub 主题创建一个名为
events-pubsub-trigger
的触发器。确认触发器已成功创建:
gcloud eventarc triggers list --location=us-central1
查找 Pub/Sub 主题并将其设置为环境变量:
export RUN_TOPIC=$(gcloud eventarc triggers describe events-pubsub-trigger \ --format='value(transport.pubsub.topic)')
向 Pub/Sub 主题发送消息以生成事件:
gcloud pubsub topics publish $RUN_TOPIC --message "Runner"
事件会被发送到 Cloud Run 服务,该服务会记录事件消息。
如要查看事件消息,请转到 Cloud Run 服务日志:
- 前往 Google Cloud Console
- 点击
helloworld-events-pubsub-tutorial
服务。 选择日志标签页。
您可能需要等待一些时间才能看到日志。如果您没有立即看到日志,请稍等片刻再检查一次。
查找“Hello Runner!”消息。
清除数据
如果您为本教程创建了一个新项目,请删除项目。 如果您使用的是现有项目,希望保留此项目且不保留本教程中添加的任何更改,请删除为教程创建的资源。
删除项目
为了避免产生费用,最简单的方法是删除您为本教程创建的项目。
要删除项目,请执行以下操作:
- 在 Google Cloud 控制台中,转到管理资源页面:
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
删除教程资源
删除您在本教程中部署的 Cloud Run 服务:
gcloud run services delete SERVICE_NAME
其中,
SERVICE_NAME
是您选择的服务名称。您还可以从 Google Cloud Console 中删除 Cloud Run 服务。
移除您在教程设置过程中添加的任何 gcloud CLI 默认配置。
例如:
gcloud config unset run/region
或
gcloud config unset project
删除在本教程中创建的其他 Google Cloud 资源:
- 删除 Eventarc 触发器:
gcloud eventarc triggers delete TRIGGER_NAME
将TRIGGER_NAME
替换为您的触发器的名称。
- 从 Container Registry 中删除名为
gcr.io/PROJECT_ID/events-pubsub
的容器映像。
- 删除 Eventarc 触发器: