Cloud Run 函数 (HTTP) 使用入门

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 来查看所有可用项目的列表。