Cloud Functions 使用入门

1. 概览

Cloud-Functions.png

借助 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 以及其他许多)的身份验证。

907ffb96feada611

事件和触发器

云端事件是指在云端环境中发生的事件,例如数据库中的数据发生更改、文件被添加到存储系统或正在创建新的虚拟机实例等。

无论您是否选择响应事件,这些事件都会发生。您可以使用触发器创建对事件的响应。触发器是一种声明,用于表明您对某个事件或一系列事件感兴趣。通过将函数与触发器绑定,您就可以捕获事件并执行事件处理操作。如需详细了解如何创建触发器以及如何将其与函数相关联,请参阅“事件和触发器”。

无服务器

使用 Cloud Functions 后,您无需再管理服务器、配置软件、更新框架和修补操作系统。软件和基础架构完全由 Google 代管,您只需添加代码即可。此外,系统会自动预配资源来响应事件。也就是说,对一个函数的调用次数哪怕从一天几次增加到数百万次,也无需您执行任何操作。

使用情形

异步工作负载(例如轻量级 ETL)或云端自动化(例如触发应用构建)现在不再需要有自己的服务器,也不再需要开发者对其进行绑定。您只需部署 Cloud Functions 函数,使其绑定到您期望的事件,就大功告成了。

Cloud Functions 具备精细、按需的特性,这也使其成为轻量级 API 和 webhook 的绝佳候选对象。此外,部署 HTTP 函数时 HTTP 端点会自动配置,这意味着不像一些其他服务那样需要复杂的配置。

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

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

2. 设置和要求

自定进度的环境设置

  1. 登录 Cloud 控制台,然后创建一个新项目或重复使用现有项目。 (如果您还没有 Gmail 或 G Suite 账号,则必须创建一个。)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

请记住项目 ID,它在所有 Google Cloud 项目中都是唯一的名称(上述名称已被占用,您无法使用,抱歉!)。它稍后将在此 Codelab 中被称为 PROJECT_ID

  1. 接下来,您需要在 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)。

  1. 如需从 Cloud Console 激活 Cloud Shell,只需点击激活 Cloud ShellfEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q(预配和连接到环境仅需花费一些时间)。

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

在连接到 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:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

默认情况下,Cloud Shell 还会设置一些环境变量,这对您日后运行命令可能会很有用。

echo $GOOGLE_CLOUD_PROJECT

命令输出

<PROJECT_ID>
  1. 最后,设置默认可用区和项目配置。
gcloud config set compute/zone us-central1-f

您可以选择各种不同的可用区。如需了解详情,请参阅区域和可用区

3. 创建函数

在这一步中,您将通过控制台创建一个 Cloud Functions 函数。

  • 在控制台中,点击导航菜单 >Cloud Functions

fe64222954f5f372.png

  • 点击“创建函数”:

7adca9640ca2e5a6

  • 将函数命名为 GCFunction 并保留其他默认值:内存分配、HTTP 作为触发器、内嵌编辑器、默认运行时和默认示例代码。

795f1fedc0f039bb

  • 仍在“创建函数”中点击底部的“创建”部署该函数:

b68c3647b771e6f9.png

点击“创建”后,控制台将重定向至“Cloud Functions 概览”页面。

在部署过程中,该函数旁边会显示一个小的旋转图标。部署完成后,该旋转图标会变成绿色的对勾标记。如果出现任何问题,系统会向您发送带有红色图标的通知,以及指向日志的链接,以便您了解问题所在(您的代码中可能存在问题)。

3ec684b1b4906657

大功告成!您的函数现已生效,可以通过 HTTP 触发了。

4. 测试函数

在 Cloud Functions“概览”页面中,显示您的函数对应的菜单,然后点击测试函数

74e310ee6663bb3c.png

在“触发事件”字段中,在方括号 {} 之间输入以下文本,然后点击 Test the function

输出字段中,您应该会看到以下消息:Success: Hello World!

日志字段中,如果状态代码为 200,则表示函数已成功执行。请注意,日志可能需要一分钟才会显示。

a876def9cbf24a45.png

5. 查看函数日志

点击蓝色箭头返回 Cloud Functions“概览”页面:

8917a2bfa4fb9502.png

显示您的函数对应的菜单,然后点击查看日志

e97e6ec1fc17dfd7.png

以下是日志历史记录的示例:

d91a00cf4457fa84.png

请注意,您可以按函数、严重级别过滤日志,并通过标签或一些自由格式文本进行搜索。

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

6. 清理资源

由于这是无服务器计算,因此您不需要清理资源:缩减至零意味着费用也会缩减至零。因此,如果您的函数没有获得流量,则不会产生任何费用。此外,每月前 200 万次 Cloud Functions 函数调用免费。如需了解详情,请参阅价格页面

如果您想删除该函数,只需转到概览页面,选择该函数并点击 删除 :

4fe11e1b41b32ba2

7. 后续步骤

Cloud Functions 还有更多功能等您探索!请查看其他 Codelab 和产品页面及其文档

您还应查看以下内容: