1. 简介
概览
Cloud Run functions 是一种使用熟悉的 GCF 事件处理范式和函数签名来部署工作负载的新方式。Cloud Run functions 不会使用我们主观的构建流程和部署配置,而是让您直接控制在 Cloud Run 上创建的底层服务。
借助 Cloud Run functions,我们提供简单的 Cloud Run 源代码部署用户体验,让开发者能够使用 Cloud Run 配置完全控制其工作负载。
此 Codelab 使用了以下示例中的 Node.js 示例。不过,您可以使用所选语言的 Cloud Functions 第 2 代代码示例:
学习内容
- 如何部署由 HTTP 请求触发的 Cloud Run 函数
2. 设置环境变量并启用 API
升级 gcloud CLI
首先,您需要安装最新版本的 gcloud CLI。您可以运行以下命令来更新 CLI:
gcloud components update
设置环境变量
您可以设置本 Codelab 中全程使用的环境变量。
PROJECT_ID=<YOUR_PROJECT_ID> REGION=<YOUR_REGION, e.g. us-central1> gcloud config set project $PROJECT_ID SERVICE_NAME=crf-http-codelab
启用 API
在开始使用此 Codelab 之前,您需要启用多个 API。此 Codelab 需要使用以下 API。您可以运行以下命令来启用这些 API:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
storage.googleapis.com \
artifactregistry.googleapis.com
3. 创建 HTTP 函数
首先,创建一个用于存放源代码的目录,然后通过 cd 命令进入该目录。
mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_
然后,创建一个包含以下内容的 package.json 文件:
{
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
}
}
接下来,创建一个包含以下内容的 index.js 文件:
const functions = require("@google-cloud/functions-framework");
functions.http("helloHttp", (req, res) => {
res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});
4. 部署函数
现在,您可以运行以下命令来部署 Cloud Run 函数:
gcloud beta run deploy $SERVICE_NAME \
--source . \
--function helloHttp \
--region us-central1 \
--no-allow-unauthenticated
此命令使用 Buildpack 将函数源代码转换为可用于生产用途的容器映像。
请注意以下事项:
- -source 标志用于告知 Cloud Run 将函数构建为可运行的基于容器的服务
- -function 标志(新)用于将新服务的入口点设置为您希望调用的函数签名
- (可选)使用 –no-allow-unauthenticated 可防止您的函数被公开调用
5. 测试函数
部署完成后,您将看到服务网址。如需调用该函数,您需要发送经过身份验证的请求,其中包含您的身份令牌或具有 Cloud Run Invoker 角色的主账号的身份令牌,如下所示:
# get the Service URL SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')" # invoke the service curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
6. 恭喜!
恭喜您完成此 Codelab!
建议您查看有关 Cloud Run functions 的文档
所学内容
- 如何部署由 HTTP 请求触发的 Cloud Run 函数
7. 清理
为避免意外产生费用(例如,如果 Cloud Run 服务的调用次数意外超过免费层级中每月 Cloud Run 调用次数的分配额),您可以删除 Cloud Run 或删除您在第 2 步中创建的项目。
如需删除 Cloud Run 函数,请前往 Cloud Run Cloud 控制台 (https://console.cloud.google.com/run),然后删除 crf-http-codelab 服务。
如果您选择删除整个项目,可以前往 https://console.cloud.google.com/cloud-resource-manager,选择您在第 2 步中创建的项目,然后选择“删除”。如果您删除项目,则需要在 Cloud SDK 中更改项目。您可以运行 gcloud projects list 查看所有可用项目的列表。