arrow_back

Cloud Run 函数:Qwik Start - 命令行

登录 加入
访问 700 多个实验和课程

Cloud Run 函数:Qwik Start - 命令行

实验 30 分钟 universal_currency_alt 1 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP080

Google Cloud 自学实验的徽标

概览

Cloud Run 函数是为了响应事件(如 HTTP 请求、通讯服务消息或文件上传)而运行的代码段。云端事件是指在云端环境中发生的事件,这些事件可能包括数据库中的数据更改、文件添加到存储系统或正在创建新的虚拟机实例等。

Cloud Run 函数由事件驱动,因而在事件发生时才会运行。这类函数非常适合执行需要快速完成的任务或不需要一直运行的任务。

例如,您可以使用 Cloud Run 函数来执行以下任务:

  • 自动为上传到 Cloud Storage 的图片生成缩略图。
  • 在 Pub/Sub 中收到新消息时向用户的手机发送通知。
  • 处理来自 Cloud Firestore 数据库的数据并生成报告。

您可以使用任何支持 Node.js 的语言来编写代码,然后只需简单点击几下即可将代码部署到云端。在完成部署后,Cloud Run 函数在有事件发生时就会自动开始运行。

本实操实验将向您介绍如何使用 Google Cloud 控制台创建、部署和测试 Cloud Run 函数。

本实操实验将向您介绍如何使用 Google Cloud Shell 命令行创建、部署和测试 Cloud Run 函数。

您将执行的操作

  • 创建 Cloud Run 函数
  • 部署和测试该 Cloud Run 函数
  • 查看日志

设置

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

任务 1. 创建一个函数

首先,您需要创建一个名为 helloWorld 的简单函数。当该函数被 Cloud Run 函数事件触发时,会向 Cloud Run functions 日志写入一条消息。该函数还接受回调函数,回调函数用于发出信号来指示函数已完成运行。

在本实验中,Cloud Run 函数事件为 Pub/Sub 主题事件。Pub/Sub 是一种消息传递服务,其中消息的发送者与接收者各自独立。当有消息发送或发布时,接收者需要拥有订阅才能收到提醒并接收消息。如需详细了解 Pub/Sub,请参阅 Pub/Sub 指南中的 Pub/Sub:Google 级规模的传递服务

如需详细了解事件参数和回调参数,请参阅 Cloud Run functions 文档中的后台函数

如需创建 Cloud Run 函数,请执行以下操作:

  1. 在 Cloud Shell 中,运行以下命令以设置默认区域:

    gcloud config set run/region {{{project_0.default_region |REGION}}}
  2. 为函数代码创建目录:

    mkdir gcf_hello_world && cd $_
  3. 创建并打开 index.js 以进行修改:

    nano index.js
  4. 将以下内容复制到 index.js 文件中:

    const functions = require('@google-cloud/functions-framework'); // Register a CloudEvent callback with the Functions Framework that will // be executed when the Pub/Sub trigger topic receives a message. functions.cloudEvent('helloPubSub', cloudEvent => { // The Pub/Sub message is passed as the CloudEvent's data payload. const base64name = cloudEvent.data.message.data; const name = base64name ? Buffer.from(base64name, 'base64').toString() : 'World'; console.log(`Hello, ${name}!`); });
  5. 退出 nano (Ctrl+x) 并保存 (Y) 文件。

  6. 创建并打开 package.json 文件以进行修改:

  7. 将以下内容复制到 package.json 文件中:

    { "name": "gcf_hello_world", "version": "1.0.0", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { "@google-cloud/functions-framework": "^3.0.0" } }
  8. 退出 nano (Ctrl+x) 并保存 (Y) 文件。

  9. 安装软件包依赖项

    npm install

    预期输出:

    added 140 packages, and audited 141 packages in 9s 27 packages are looking for funding run `npm fund` for details found 0 vulnerabilities

任务 2. 部署函数

在本实验中,您需要将 --trigger-topic 设置为 cf_demo

注意:
Cloud Run 函数是由事件驱动的,这意味着必须指定触发器类型。 部署新函数时,“--trigger-topic”“--trigger-bucket”或“--trigger-http”是常见的触发器事件。 部署对现有函数的更新时,除非另行指定,否则函数将保留其现有触发器。
  1. nodejs-pubsub-function 函数部署到名为 cf-demo 的 Pub/Sub 主题

    gcloud functions deploy nodejs-pubsub-function \ --gen2 \ --runtime=nodejs20 \ --region={{{ project_0.default_region | REGION }}} \ --source=. \ --entry-point=helloPubSub \ --trigger-topic cf-demo \ --stage-bucket {{{ project_0.project_id | PROJECT_ID }}}-bucket \ --service-account cloudfunctionsa@{{{ project_0.project_id | PROJECT_ID }}}.iam.gserviceaccount.com \ --allow-unauthenticated 注意
    如果您收到服务账号 serviceAccountTokenCreator 通知,请选择“n”
  2. 验证函数的状态:

    gcloud functions describe nodejs-pubsub-function \ --region={{{ project_0.default_region | REGION }}}

    “ACTIVE”状态表示该函数已部署。

    预期输出:

    BuildConfig: automaticUpdatePolicy: {} build: projects/630521560493/locations/{{{ project_0.default_region | REGION }}}/builds/7ff9d415-50d9-4557-9bcd-5afad42a6390 dockerRegistry: ARTIFACT_REGISTRY dockerRepository: projects/{{{ project_0.project_id | PROJECT_ID }}}/locations/{{{ project_0.default_region | REGION }}}/repositories/gcf-artifacts entryPoint: helloPubSub ... State: ACTIVE ... UpdateTime: '2024-08-05T13:51:05.317298824Z' Url: https://{{{ project_0.default_region | REGION }}}-{{{ project_0.project_id | PROJECT_ID }}}.cloudfunctions.net/nodejs-pubsub-function

发布到此主题的每条消息都将触发函数的执行,同时,消息内容将作为输入数据进行传递。

测试完成的任务

点击检查我的进度,验证您完成的任务。 如果您成功完成了任务,系统会给出评分。

部署该函数。

任务 3. 测试函数

在部署函数并确认函数有效后,您需要测试该函数,看它能否在检测到事件时将消息写入云日志。

  1. 使用一些数据调用 PubSub。

    gcloud pubsub topics publish cf-demo --message="Cloud Function Gen2"

    输出示例

    messageIds: - '11927162971409664'

查看日志,确认其中有包含该执行 ID 的日志消息。

任务 4. 查看日志

  1. 检查日志以通过日志历史记录查看您的消息:

    gcloud functions logs read nodejs-pubsub-function \ --region={{{ project_0.default_region | REGION }}} 注意
    日志可能大约需要 10 分钟才会显示。 此外,查看日志的另一种方法是转到 Logging > Logs Explorer

    此 Cloud Run 函数将输出类似于以下内容的信息:

    LEVEL: NAME: nodejs-pubsub-function EXECUTION_ID: h4v6akxf4sxt TIME_UTC: 2024-08-05 15:15:25.723 LOG: Hello, Cloud Function Gen2! LEVEL: I NAME: nodejs-pubsub-function EXECUTION_ID: TIME_UTC: 2024-08-05 15:15:25.711 LOG: LEVEL: NAME: nodejs-pubsub-function EXECUTION_ID: h4oxfjn7zlyu TIME_UTC: 2024-08-05 15:10:34.303 LOG: Hello, Friend! LEVEL: I NAME: nodejs-pubsub-function EXECUTION_ID: TIME_UTC: 2024-08-05 15:10:34.291 LOG: LEVEL: NAME: nodejs-pubsub-function EXECUTION_ID: h4fjhyfxua3k TIME_UTC: 2024-08-05 15:03:16.342 LOG: Hello, "SGVsbG8gZnJvbSB0aGUgY29tbWFuZCBsaW5l"!

您的应用得到部署和测试,并且您可以查看其日志。

任务 5. 检验您的掌握情况

  1. 我们在下方准备了一些单选题,以加强您对本实验所涉概念的理解。请尽您所能回答。

恭喜!

您已使用 Google Cloud 控制台,通过命令行创建、部署和测试了一个 Cloud Run 函数。

参与下一项实验

本实验是 Qwik Starts 系列实验的其中一项。通过这些实验,您可以一窥 Google Cloud 的诸多功能。请在实验目录中搜索“Qwik Starts”,找到您要参与的下一项实验!

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2025 年 1 月 20 日

上次测试实验的时间:2025 年 1 月 20 日

版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。