1. 简介
概览
Cloud Run 函数是一种使用熟悉的 GCF 事件范例和函数签名部署工作负载的新方式。借助 Cloud Run 函数,您可以直接控制在 Cloud Run 上创建的底层 Service,而不必使用我们专业的构建流程和部署配置。
借助 Cloud Run 函数,我们为 Cloud Run 源代码部署提供简单的用户体验,让开发者能够使用 Cloud Run 配置完全控制其工作负载。
此 Codelab 在下面的示例中使用了 nodejs 示例。不过,您可以选择以自己偏好的语言使用 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 函数的文档
所学内容
- 如何部署由 HTTP 请求触发的 Cloud Run 函数
7. 清理
为避免产生意外费用(例如,如果意外调用 Cloud Run 服务的次数超过免费层级中的每月 Cloud Run 调用次数),您可以删除 Cloud Run 或删除在第 2 步中创建的项目。
如需删除 Cloud Run 函数,请前往 https://console.cloud.google.com/run 前往 Cloud Run Cloud 控制台,然后删除 crf-http-codelab
服务。
如果您选择删除整个项目,可以前往 https://console.cloud.google.com/cloud-resource-manager,选择您在第 2 步中创建的项目,然后选择“删除”。如果删除项目,则需要在 Cloud SDK 中更改项目。您可以通过运行 gcloud projects list
来查看所有可用项目的列表。