本教程介绍如何在 App Engine 应用中使用 Cloud Tasks 触发 Cloud Run 函数并发送定时发送的邮件。
目标
- 了解每个组件中的代码。
- 创建一个 SendGrid 账号。
- 下载源代码。
- 部署 Cloud Run 函数,以接收 Cloud Tasks 请求并通过 SendGrid API 发送电子邮件。
- 创建 Cloud Tasks 队列。
- 创建服务账号以对您的 Cloud Tasks 请求进行身份验证。
- 部署允许用户发送电子邮件的客户端代码。
费用
Cloud Tasks、Cloud Run 函数和 App Engine 具有免费层级,因此只要您在给定产品的免费层级中运行教程,就不会产生额外费用。如需了解详情,请参阅价格。
准备工作
选择或创建 Google Cloud 项目。
在您的项目中初始化 App Engine 应用:
在欢迎使用 App Engine网页点击创建应用。
为您的应用选择一个区域。此位置将用作 Cloud Tasks 请求的
LOCATION_ID参数,因此请记下该位置。请注意,App Engine 命令中名为 europe-west 和 us-central 的两个位置在 Cloud Tasks 命令中分别称为 europe-west1 和 us-central1。选择 Node.js 作为语言,选择标准作为环境。
如果系统弹出启用结算窗口,请选择您的结算账号。如果您目前没有结算账号,请点击创建结算账号并按照向导中的说明操作。
在开始页面,点击下一页。您稍后会处理此内容。
启用 Cloud Run 函数和 Cloud Tasks API。
安装并初始化 gcloud CLI。
了解代码
此部分介绍了应用代码及其工作原理。
创建任务
索引页面使用 app.yaml 中的处理程序提供。创建任务所需的变量将作为环境变量传入。
此代码会创建端点 /send-email。此端点会处理从索引页面提交的表单,并将该数据传递给任务创建代码。
此代码实际上会创建任务并将其发送到 Cloud Tasks 队列。代码通过以下方式构建任务:
将目标类型指定为
HTTP Request。指定要使用的
HTTP method和目标的URL。将
Content-Type标头设置为application/json,以便下游应用可以解析结构化载荷。添加服务账号电子邮件,以便 Cloud Tasks 可以向请求目标提供凭据,这需要身份验证。此服务账号是单独创建的。
检查以确保用户输入日期不超过 30 天,并将其作为字段
scheduleTime添加到请求中。