我们来尝试使用 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
加载中...
0 票,平均:0.00 / 10
3,845
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。