arrow_back

Cloud Functions:Qwik Start - 命令行

加入 登录
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cloud Functions:Qwik Start - 命令行

Lab 30 分钟 universal_currency_alt 1 个积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP080

Google Cloud 自定进度实验

概述

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

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

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

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

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

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

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

您将执行的操作

  • 创建简单的 Cloud Functions 函数
  • 部署和测试该函数
  • 查看日志

设置

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

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

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

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

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

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示登录页面。

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

    注意:如果您看见选择帐号对话框,请点击使用其他帐号
  3. 如有必要,请从实验详细信息面板复制用户名,然后将其粘贴到登录对话框中。点击下一步

  4. 请从实验详细信息面板复制密码,然后将其粘贴到欢迎对话框中。点击下一步

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

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

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

注意:您可以点击左上角的导航菜单来查看列有 Google Cloud 产品和服务的菜单。 “导航菜单”图标

激活 Cloud Shell

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

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

如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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

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

  2. 现在,输出的内容应如下所示:

输出:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出

[core] project = <project_ID>

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 Note: For full documentation of gcloud, in Google Cloud, refer to the gcloud CLI overview guide.

任务 1. 创建一个函数

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

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

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

为创建 Cloud Functions 函数,请执行以下操作:

  1. 在 Cloud Shell 中,运行以下命令以设置默认区域:
gcloud config set compute/region {{{project_0.default_region |REGION}}}
  1. 为函数代码创建目录:
mkdir gcf_hello_world
  1. 转移到 gcf_hello_world 目录:
cd gcf_hello_world
  1. 创建并打开 index.js 以进行修改:
nano index.js
  1. 将以下内容复制到 index.js 文件中:
/** * Background Cloud Function to be triggered by Pub/Sub. * This function is exported by index.js, and executed when * the trigger topic receives a message. * * @param {object} data The event payload. * @param {object} context The event metadata. */ exports.helloWorld = (data, context) => { const pubSubMessage = data; const name = pubSubMessage.data ? Buffer.from(pubSubMessage.data, 'base64').toString() : "Hello World"; console.log(`My Cloud Function: ${name}`); };
  1. 退出 nano (Ctrl+x) 并保存 (Y) 文件。

任务 2. 创建 Cloud Storage 存储桶

  • 使用以下命令,为您的函数创建新的 Cloud Storage 存储桶:
gsutil mb -p [PROJECT_ID] gs://[BUCKET_NAME]
  • PROJECT_ID 是本实验左侧的“实验详细信息”面板中的项目 ID:

  • BUCKET_NAME 是您为存储桶指定的名称。您可以使用项目 ID 作为存储桶名称,以确保该名称在全局始终是唯一的:

如需详细了解如何命名存储桶,请参阅 Cloud Storage 文档中的存储桶命名准则

测试已完成的任务

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

创建 Cloud Storage 存储桶。

任务 3:部署函数

部署新函数时,必须指定 --trigger-topic--trigger-bucket--trigger-http。部署对现有函数的更新时,除非另行指定,否则函数将保留其当前触发器。

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

  1. 将该函数部署到名为 hello_world 的 Pub/Sub 主题,并将 [BUCKET_NAME] 替换为您的存储桶的名称:
gcloud functions deploy helloWorld \ --stage-bucket [BUCKET_NAME] \ --trigger-topic hello_world \ --runtime nodejs20 注意:如果您收到 OperationError,请忽略警告并重新运行该命令。

如果出现提示,请输入 Y 以允许在未通过身份验证的情况下调用新函数。

  1. 验证函数的状态:
gcloud functions describe helloWorld

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

entryPoint: helloWorld eventTrigger: eventType: providers/cloud.pubsub/eventTypes/topic.publish failurePolicy: {} resource: ... status: ACTIVE ...

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

测试已完成的任务

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

部署该函数。

任务 4:测试函数

您在部署函数并知悉函数有效后,需要测试该函数是否会在检测到事件时将消息写入到云日志。

  • 输入以下命令以创建该函数的消息测试:
DATA=$(printf 'Hello World!'|base64) && gcloud functions call helloWorld --data '{"data":"'$DATA'"}'

如果 Cloud 工具返回该函数的执行 ID,就意味着消息已被写入到日志。

输出示例:

executionId: 3zmhpf7l6j5b

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

任务 5:查看日志

  • 检查日志以通过日志历史记录查看您的消息:
gcloud functions logs read helloWorld

如果该函数成功执行,日志中的消息将如下所示:

LEVEL: D NAME: helloWorld EXECUTION_ID: 4bgl3jw2a9i3 TIME_UTC: 2023-03-23 13:45:31.545 LOG: Function execution took 912 ms, finished with status: 'ok' LEVEL: I NAME: helloWorld EXECUTION_ID: 4bgl3jw2a9i3 TIME_UTC: 2023-03-23 13:45:31.533 LOG: My Cloud Function: Hello World! LEVEL: D NAME: helloWorld EXECUTION_ID: 4bgl3jw2a9i3 TIME_UTC: 2023-03-23 13:45:30.633 LOG: Function execution started 注意:日志大约需要 10 分钟才会显示。此外,查看日志的另一种方法是转到 Logging > Logs Explorer

您的应用部署并测试后,您就可以查看日志了。

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

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

恭喜!

完成挑战任务

本自学实验是以下挑战任务的组成部分:基准:部署和开发基准:基础架构优化 Google Cloud 费用。一项挑战任务就是一系列相关的实验,学习时按部就班地完成这些实验即可。完成挑战任务即可赢得一枚徽章,以表彰您取得的成就。您可以公开展示徽章,还可以在您的在线简历或社交媒体账号中加入指向徽章的链接。欢迎注册参加任何包含此实验的挑战任务,完成后就能立即获得相应的积分。请参阅 Google Cloud Skills Boost 目录,查看提供的所有挑战任务。

参与下一项实验

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

后续步骤/了解详情

Google Cloud 培训和认证

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

上次更新手册的时间:2023 年 8 月 10 日

上次测试实验的时间:2023 年 8 月 10 日

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