将 App Engine 任务添加到 Cloud Tasks 队列
本快速入门介绍了如何使用 Cloud Tasks API 将 App Engine 任务添加到 Cloud Tasks 队列。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Resource Manager and Cloud Tasks API:
gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Resource Manager and Cloud Tasks API:
gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- 当您使用 App Engine 时,系统会自动创建 App Engine 默认服务账号。您可以使用
服务账号。不过,默认服务账号可能不会自动获得项目的
Editor
角色,具体取决于您的组织政策配置。如果是这种情况,您必须向服务账号授予以下角色:- Artifact Registry Administrator (
roles/artifactregistry.admin
) - Artifact Registry Create-on-Push Writer (
roles/artifactregistry.createOnPushWriter
) - Compute Admin (
roles/compute.admin
) - Logs Writer (
roles/logging.logWriter
) - Storage Object Viewer (
roles/storage.objectViewer
)
- Artifact Registry Administrator (
添加 App Engine 应用
确定某个 App Engine 任务的目标时,以及可以将应用部署到 App Engine 标准环境,则必须添加一个 App Engine 应用 添加到您的项目中。
在 Google Cloud 控制台中,进入 App Engine 页面。
在欢迎使用 App Engine 对话框中,执行以下操作之一:
如果您已创建 App Engine 应用,并且系统显示了 Your App Engine application has been created 消息,则可以跳过本部分中的其余步骤,继续执行安装和部署示例部分中的步骤。
或
如果您尚未创建 App Engine 应用,请点击 创建应用并继续执行本部分中的其余步骤。
为您的配置选择一个区域 并记录下来
请注意,系统会分别调用
europe-west
和us-central
,europe-west1
和us-central1
。请勿选择服务账号;系统会使用默认的 App Engine 服务账号。
点击下一步。
已配置并创建应用。此过程可能需要几分钟的时间。
请勿下载 Cloud SDK,而是点击以后再说。
您应该会看到一条消息,告知您您的 App Engine 应用已创建。
安装和部署示例
本快速入门中使用的 Node.js 示例包含两个文件:
createTask.js
作为命令行工具在本地运行,用于创建和添加任务
任务队列;server.js
在 App Engine 上部署为
工作器服务来处理任务。
在您的终端中,将示例应用代码库克隆到本地 虚拟机。
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
前往包含示例代码的目录。
cd nodejs-docs-samples/cloud-tasks/snippets
使用 Node.js 软件包管理器安装所有依赖项。
您可以使用 NPM:
npm install
或者,您也可以使用 Yarn:
yarn install
将工作器服务 (
server.js
) 部署到 App Engine 标准环境 环境gcloud app deploy app.yaml
确保包含该服务的应用正在运行。
gcloud app browse
在浏览器中,转到所提供的链接。例如:
https://PROJECT_ID.uc.r.appspot.com/
您应该会看到
Hello, World!
。
创建 Cloud Tasks 队列
使用 gcloud tasks queues create
命令在您准备好的环境中创建队列。
在终端中,创建一个用于记录所有操作的队列。
gcloud tasks queues create QUEUE_NAME \ --log-sampling-ratio=1.0 \ --location=REGION
替换以下内容:
QUEUE_NAME
:您的 Cloud Tasks 的名称 队列REGION
:您部署应用的区域
等待队列初始化,然后验证队列是否已成功创建。
gcloud tasks queues describe QUEUE_NAME \ --location=REGION
输出应类似如下所示:
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_NAME rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
向 Cloud Tasks 队列添加任务
创建任务,将其添加到您创建的队列中,然后将该任务提交给 工作器服务。
设置以下环境变量。客户端会使用这些信息 创建请求
export PROJECT_ID=PROJECT_ID export LOCATION_ID=REGION export QUEUE_ID=QUEUE_NAME
创建一个载荷为
hello
的任务,并将该任务添加到队列中。负载可以是工作器服务处理任务所需的请求中的任何数据。node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
通过显示工作器的日志来验证任务是否已执行 服务。
gcloud app logs read
日志应如下所示:
2024-06-20 15:00:00 default[20240620t143852] "POST /log_payload HTTP/1.1" 200 2024-06-20 15:00:00 default[20240620t143852] App listening on port 8081 2024-06-20 15:00:00 default[20240620t143852] Press Ctrl+C to quit. 2024-06-20 15:00:00 default[20240620t143852] Received task with payload: hello
清理
为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
或者,您也可以删除自己创建的资源:
删除 Cloud Tasks 队列:
gcloud tasks queues delete QUEUE_NAME \ --location=REGION