我们来尝试使用 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,934
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但幸运的是,我也有机会参与其他各种任务,包括市场营销。
我在Beyond中的图像版权采用CC0协议。