1. 概览
借助 Cloud Functions,您可以编写单一用途的简单函数,并将这些函数与您的云基础架构和服务发出的事件进行关联。当所监控的事件发生时,您的 Cloud Functions 函数就会被触发。您的代码将在全代管式环境中执行。您无需预配任何基础架构,也不必费心管理任何服务器。
Cloud Functions 函数目前可以使用 JavaScript、Python 或 Go 编写。对于 JavaScript,它们在 Google Cloud Platform 上的 Node.js 环境中执行。您可以在任何标准的 Node.js 运行时环境中运行自己的 Cloud Functions 函数,这样便于轻松进行移植和本地测试。
连接和扩展云服务
Cloud Functions 提供了一个逻辑连接层,使您可以编写代码来连接和扩展云端服务。您可以监听以下事件并对其做出响应:Cloud Storage 中上传了文件、日志更改或收到有关 Cloud Pub/Sub 主题的消息。Cloud Functions 可增强现有云端服务,让您能够通过任意编程逻辑来满足越来越多使用场景的需要。Cloud Functions 可以访问 Google 服务账号凭据,因此能够无缝地通过大多数 Google Cloud Platform 服务(例如 Datastore、Cloud Spanner、Cloud Translation API、Cloud Vision API 以及其他许多)的身份验证。
事件和触发器
云端事件是指在云端环境中发生的事件,例如数据库中的数据发生更改、文件被添加到存储系统或正在创建新的虚拟机实例等。
无论您是否选择响应事件,这些事件都会发生。您可以使用触发器创建对事件的响应。触发器是一种声明,用于表明您对某个事件或一系列事件感兴趣。通过将函数与触发器绑定,您就可以捕获事件并执行事件处理操作。如需详细了解如何创建触发器以及如何将其与函数相关联,请参阅“事件和触发器”。
无服务器
使用 Cloud Functions 后,您无需再管理服务器、配置软件、更新框架和修补操作系统。软件和基础架构完全由 Google 代管,您只需添加代码即可。此外,系统会自动预配资源来响应事件。也就是说,对一个函数的调用次数哪怕从一天几次增加到数百万次,也无需您执行任何操作。
使用情形
异步工作负载(例如轻量级 ETL)或云端自动化(例如触发应用构建)现在不再需要有自己的服务器,也不再需要开发者对其进行绑定。您只需部署 Cloud Functions 函数,使其绑定到您期望的事件,就大功告成了。
Cloud Functions 具备精细、按需的特性,这也使其成为轻量级 API 和 webhook 的绝佳候选对象。此外,部署 HTTP 函数时 HTTP 端点会自动配置,这意味着不像一些其他服务那样需要复杂的配置。
本实操实验将向您介绍如何使用 Google Cloud 控制台创建、部署和测试 Cloud Functions 函数。您将:
- 创建一个 Cloud Functions 函数
- 部署和测试该函数
- 查看日志
2. 设置和要求
自定进度的环境设置
请记住项目 ID,它在所有 Google Cloud 项目中都是唯一的名称(上述名称已被占用,您无法使用,抱歉!)。它稍后将在此 Codelab 中被称为 PROJECT_ID
。
- 接下来,您需要在 Cloud 控制台中启用结算功能,才能使用 Google Cloud 资源。
运行此 Codelab 应该不会产生太多的费用(如果有费用的话)。请务必按照“清理”部分部分,其中会指导您如何关停资源,以免产生超出本教程范围的结算费用。Google Cloud 的新用户符合参与 $300 USD 免费试用计划的条件。
Google Cloud Shell
虽然可以通过笔记本电脑远程操作 Google Cloud 和 Cloud Functions,但在此 Codelab 中,我们将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。
基于 Debian 的这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证。这意味着在本 Codelab 中,您只需要一个浏览器(没错,它适用于 Chromebook)。
- 如需从 Cloud Console 激活 Cloud Shell,只需点击激活 Cloud Shell(预配和连接到环境仅需花费一些时间)。
在连接到 Cloud Shell 后,您应该会看到自己已通过身份验证,并且相关项目已设置为您的 PROJECT_ID
。
gcloud auth list
命令输出
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
命令输出
[core] project = <PROJECT_ID>
如果出于某种原因未设置项目,只需发出以下命令即可:
gcloud config set project <PROJECT_ID>
正在查找您的 PROJECT_ID
?检查您在设置步骤中使用的 ID,或在 Cloud Console 信息中心查找该 ID:
默认情况下,Cloud Shell 还会设置一些环境变量,这对您日后运行命令可能会很有用。
echo $GOOGLE_CLOUD_PROJECT
命令输出
<PROJECT_ID>
- 最后,设置默认可用区和项目配置。
gcloud config set compute/zone us-central1-f
您可以选择各种不同的可用区。如需了解详情,请参阅区域和可用区。
3. 创建函数
在这一步中,您将通过控制台创建一个 Cloud Functions 函数。
- 在控制台中,点击导航菜单 >Cloud Functions
- 点击“创建函数”:
- 将函数命名为
GCFunction
并保留其他默认值:内存分配、HTTP 作为触发器、内嵌编辑器、默认运行时和默认示例代码。
- 仍在“创建函数”中点击底部的“创建”部署该函数:
点击“创建”后,控制台将重定向至“Cloud Functions 概览”页面。
在部署过程中,该函数旁边会显示一个小的旋转图标。部署完成后,该旋转图标会变成绿色的对勾标记。如果出现任何问题,系统会向您发送带有红色图标的通知,以及指向日志的链接,以便您了解问题所在(您的代码中可能存在问题)。
大功告成!您的函数现已生效,可以通过 HTTP 触发了。
4. 测试函数
在 Cloud Functions“概览”页面中,显示您的函数对应的菜单,然后点击测试函数:
在“触发事件”字段中,在方括号 {} 之间输入以下文本,然后点击 Test the function。
在输出字段中,您应该会看到以下消息:Success: Hello World!
在日志字段中,如果状态代码为 200,则表示函数已成功执行。请注意,日志可能需要一分钟才会显示。
5. 查看函数日志
点击蓝色箭头返回 Cloud Functions“概览”页面:
显示您的函数对应的菜单,然后点击查看日志:
以下是日志历史记录的示例:
请注意,您可以按函数、严重级别过滤日志,并通过标签或一些自由格式文本进行搜索。
您的应用已部署并测试,并且您可以查看日志了。
6. 清理资源
由于这是无服务器计算,因此您不需要清理资源:缩减至零意味着费用也会缩减至零。因此,如果您的函数没有获得流量,则不会产生任何费用。此外,每月前 200 万次 Cloud Functions 函数调用免费。如需了解详情,请参阅价格页面。
如果您想删除该函数,只需转到概览页面,选择该函数并点击 删除 :
7. 后续步骤
Cloud Functions 还有更多功能等您探索!请查看其他 Codelab 和产品页面及其文档。
您还应查看以下内容:
- 调用 Cloud Functions 函数(适用于函数调用的触发器)
- 监控 Cloud Functions(日志、错误报告等)
- ... 或“无服务器”类别中的更多 Codelab