使用 PHP 创建和部署 HTTP Cloud Functions 函数
本指南将引导您完成用 PHP 运行时编写 Cloud Functions 函数的过程。Cloud Functions 函数有两种类型:
- HTTP 函数,通过标准 HTTP 请求调用。
- 事件驱动函数,用于处理来自云基础架构的事件,例如 Cloud Pub/Sub 主题中收到消息或 Cloud Storage 存储分区发生更改。
本指南中的示例演示了如何创建简单的 HTTP 函数。
指南结构
使用 gcloud CLI 创建 Google Cloud 项目
- 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 Cloud Functions and Cloud Build API。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 Cloud Functions and Cloud Build API。
- 安装并初始化 gcloud CLI。
- 更新并安装
gcloud
组件:gcloud components update
- 准备开发环境。
创建函数
在本地系统上为函数代码创建一个目录:
Linux 或 Mac OS X
mkdir ~/helloworld_http cd ~/helloworld_http
Windows
mkdir %HOMEPATH%\helloworld_http cd %HOMEPATH%\helloworld_http
在
helloworld_http
目录中创建一个index.php
文件,其中包含以下内容:此示例函数会获取 HTTP 请求中提供的姓名并返回问候语;或者,如果没有提供姓名,则返回“Hello World!”。
指定依赖项
您可以使用 Composer 管理 PHP 依赖项。如果您尚未安装 Composer,则可以按照以下步骤操作:
下载 Composer 至任何目标位置。
下载完成后,将
composer.phar
文件移动到系统路径中的目录,例如:mv composer.phar /usr/local/bin/composer
接下来,指定函数的依赖项:
将包含依赖项的
composer.json
文件添加到您的函数代码目录中,其中FUNCTION_TARGET=FUNCTION_NAME
表示函数的名称。在此示例中,FUNCTION_NAME
是helloHttp
:在包含函数代码的目录中(其中还必须包含您刚创建的
composer.json
文件),运行以下命令:composer require google/cloud-functions-framework
系统随即会将 Cloud Functions 框架添加到您的
composer.json
。此外,它还会在包含依赖项的函数代码目录中创建一个vendor/
目录。
在本地构建和测试
完成指定依赖项中的步骤后,您就可以在本地构建和测试函数。
以下命令会创建一个运行 helloHttp
函数的本地 Web 服务器:
export FUNCTION_TARGET=helloHttp
php -S localhost:8080 vendor/bin/router.php
如果函数成功构建,它会显示一个网址。您可以通过使用网络浏览器访问以下网址:http://localhost:8080/
。您应该会看到 Hello World!
消息。
或者,您也可以从另一个终端窗口使用 curl
向此函数发送请求:
curl localhost:8080
# Output: Hello World!
部署函数
如需使用 HTTP 触发器部署函数,请在 helloworld_http
目录中运行以下命令:
gcloud functions deploy helloHttp --runtime php82 --trigger-http --allow-unauthenticated
通过 --allow-unauthenticated
标志,您可以在不进行身份验证的情况下访问函数。如需进行身份验证,请省略此标志。
测试已部署的函数
当函数完成部署时,请记下
httpsTrigger.url
属性,或使用以下命令查找该属性:gcloud functions describe helloHttp
该属性应如下所示:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloHttp
在浏览器中访问此网址。您应该会看到一条“Hello World!”消息。
请尝试通过 HTTP 请求传递姓名,如以下示例所示:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloHttp?name=NAME
您应该会看到一条“Hello
NAME
!”消息。
查看日志
使用命令行工具
您可以在 Cloud Logging 界面中查看 Cloud Functions 的日志,也可以通过 Google Cloud CLI 查看。
如需使用 gcloud CLI 查看函数的日志,请使用 gcloud logs read
命令,后跟函数名称:
gcloud functions logs read helloHttp
输出应类似于以下内容:
LEVEL NAME EXECUTION_ID TIME_UTC LOG D helloHttp rvb9j0axfclb 2019-09-18 22:06:25.983 Function execution started D helloHttp rvb9j0axfclb 2019-09-18 22:06:26.001 Function execution took 19 ms, finished with status code: 200
使用日志记录信息中心
您还可以通过 Google Cloud 控制台查看 Cloud Functions 函数的日志。