我们来尝试使用 Google Cloud PHP 客户端,它可以让您轻松操作各种 GCP 服务。

你好。
我是Mandai,负责Wild 开发团队。
与 AWS 类似,GCP 也拥有支持各种编程语言的客户端库。
这是一个非常实用的工具,它允许您以相同的方式访问各种 GCP 服务。
此外,由于它是集成式的,因此在不同服务中的使用体验一致,一旦您学会了,就不会感到迷茫。您使用得越多,就越能从中受益。
这次,我将使用 PHP 客户端库。
使用 Composer 安装
它可以通过 Composer 安装,因此设置非常简单。GCP
客户端库针对每个服务进行了模块化设计,所以您只需安装所需服务的库即可。
下面的示例将演示如何安装云存储库。
composer require google/cloud-storage
安装到此完成。您
只需使用您的身份验证信息(稍后会详细介绍)创建一个服务帐户,即可开始使用。
每个服务都有其他库,所以我将它们汇总在一个表格中。
| 服务名称 | 模块名称 | 评论 |
|---|---|---|
| 云存储 | 谷歌云存储 | |
| 云数据存储 | google/cloud-datastore | |
| Cloud BigQuery | 谷歌/云大查询 | |
| 云扳手 | google/cloud-spanner | Beta |
| 云视觉 | google/cloud-vision | |
| 云翻译 | google/cloud-translate | |
| 云语音 | google/cloud-speech | |
| 云自然语言 | google/cloud-language | 部分功能尚处于测试阶段。 |
| Google 应用引擎 | 谷歌/云工具 | 使用 Docker 镜像构建 Flex 环境 |
| 云发布/订阅 | google/cloud-pubsub | |
| 堆栈驱动跟踪 | google/cloud-trace | |
| Stackdriver 日志记录 | google/云日志 | |
| Stackdriver 监控 | google/cloud-monitoring | |
| Stackdriver 错误报告 | google/cloud-error-reporting | |
| 视频智能 | google/cloud-videointelligence | Beta |
| Cloud Firestore | google/cloud-firestore | Beta |
| 云数据丢失防护 | google/cloud-dlp | 仅限数据防泄漏 API 早期访问计划参与者 |
| BigQuery 数据传输服务 | google/cloud-bigquerydatatransfer | 免费私人试用 |
- 它们都可以通过 Composer 安装和使用。
- 数据截至2018年1月18日
创建服务帐户
通过从菜单进入身份验证信息屏幕,在 GCP 云控制台中创建服务帐户
接下来,点击“创建凭据”按钮,然后选择服务帐户密钥。
要创建新的服务帐户,请选择“新建服务帐户”。
您可以随意命名服务帐户,只要方便管理即可。
根据服务的不同,角色也各不相同,因此没有一个固定的角色,但“所有者/管理员”角色拥有最高权限,可以执行该服务中的所有操作。如果您觉得这很麻烦,那么这个角色正适合您。
对于分配给开发人员的帐户,请为其分配具有读写权限的角色。
您可以分配多个角色。
例如,对于数据存储,您可以分配“用户”和“索引管理员”等角色。
服务帐户 ID 的格式类似于电子邮件地址,您可以在 @ 符号之前设置任何字符串。
PHP 难以处理键类型 P12,因此请选择“JSON”。
输入以上信息后,点击“创建”按钮。
创建完成后,包含您的身份验证信息的 JSON 文件将开始下载。
这个JSON文件非常重要,请谨慎处理。
至此,服务帐户创建完成。
示例程序
我记得当时很困扰,因为 GCP 文档中的示例程序没有包含读取身份验证信息的部分,所以我将在下面提供一个示例程序,涵盖从设置身份验证信息到实际上传图像的所有内容,假设您正在使用 Cloud Storage。
<?php require './vendor/autoload.php'; use Google\Cloud\Core\ServiceBuilder; $keyFilePath = '../hogehoge.json'; $projectId = 'sample-123456'; $bucketName = 'new-my-bucket'; $uploadFile = './test.txt'; $gcloud = new ServiceBuilder([ 'keyFilePath' => $keyFilePath, 'projectId' => $projectId, ]); $storage = $gcloud->storage(); $bucket = $storage->createBucket($bucketName); // 如果使用现有存储桶 // $bucket = $storage->bucket($bucketName); $bucket->upload(fopen($uploadFile, 'r'));
上述示例将名为 test.txt 的文件上传到 new-my-bucket 存储桶。
从这里和这里的,它们没有使用 ServiceBuilder 类,但我个人认为使用 ServiceBuilder 类创建的实例速度更快,因为您可以为每个已完成身份验证过程的服务提取实例。
GCP 身份验证文档说要使用名为“GOOGLE_APPLICATION_CREDENTIALS”的环境变量来输入命令,但我个人更喜欢我在这里介绍的方法,因为我认为它只需要使用 PHP 即可完成该过程,所需的准备工作较少。
概括
只有好处!
您对 GCP 服务客户端库有何看法?
我原本希望 Cloud SQL 能有一个客户端库,但似乎并没有。
没有 GCE 版本,而且一开始就没必要用 PHP 管理虚拟机。
我认为最好的办法就是直接用 gcloud 命令。
还有一些客户端服务甚至尚未公开提供,例如云数据丢失防护和 Bigquery 数据传输服务,但我认为该库的开发速度令人难以置信。
特别是,在 GCP 的存储服务中,云存储的价格是迄今为止最便宜的,即使是最高级别的多区域计划也是如此(价格仅为次便宜的标准持久磁盘的 65%),因此,如果您计划在 GCP 上部署系统,则应积极使用它,而不是将其存储在程序的本地。
就是这样。
0
