GCP-php(google云)调用示例

记录一下GCP调用

首先需要

composer require google/apiclient:^2.0
然后直接上php代码
namespace App\Services;
use Google_Client;
use Google_Service_Compute_Instance;
use Google_Service_Compute;
use Google_Service_Compute_AttachedDisk;
use Google_Service_Compute_AttachedDiskInitializeParams;
use Google_Service_Compute_NetworkInterface;
use Google_Service_Compute_AccessConfig;class GoogleService
{/*** @var Google_Client*/private $client;/*** 填自己的projectID*/private $project='xxxx-184506';public function __construct(){//以下主要是验证与授权,具体查询gcp文档$client = new Google_Client();//填json格式证书路径,具体查询gcp文档$path='xxxx-76d3a96430ed.json';putenv('GOOGLE_APPLICATION_CREDENTIALS='.$path);$client->useApplicationDefaultCredentials();$client->addScope('https://www.googleapis.com/auth/cloud-platform');$this->client=$client;}/*** 创建实例* @param string 实例名前缀* @param string zoneID 具体查gcp*/public function createInstance($instanceNamePrefix,$typeZoneId){$service = new Google_Service_Compute($this->client);$requestBody = new Google_Service_Compute_Instance();if(isDevelopment()){//设置实例名,生产环境与开发环境名称不同,便于分辨$requestBody->setName($instanceNamePrefix."-dev-".date('YmdHis',time()).random_int(1000,9999));}else{//设置实例名$requestBody->setName($instanceNamePrefix."-prod-".date('YmdHis',time()).random_int(1000,9999));}//设置实例配置,这里用了最便宜的配置$requestBody->setMachineType("zones/{$typeZoneId}/machineTypes/f1-micro");$diskInitializeParams=new Google_Service_Compute_AttachedDiskInitializeParams();//设置镜像,生产环境与开发环境环境不同,从config从获取$diskInitializeParams->setSourceImage(config('app.gcp_source_image'));//设置硬盘类型$diskInitializeParams->setDiskType("zones/{$typeZoneId}/diskTypes/pd-standard");//设置硬盘大小$diskInitializeParams->setDiskSizeGb(10);$disk=new Google_Service_Compute_AttachedDisk();$disk->setInitializeParams($diskInitializeParams);//设置为启动盘$disk->setBoot(true);//设置删除实例时自动删除硬盘$disk->setAutoDelete(true);$requestBody->setDisks([$disk]);//以下的网络配置都是默认设置$accessConfig=new Google_Service_Compute_AccessConfig();$accessConfig->setName('External NAT');$accessConfig->setType('ONE_TO_ONE_NAT');$networkInterface=new Google_Service_Compute_NetworkInterface();$networkInterface->setNetwork('global/networks/default');$networkInterface->setAccessConfigs([$accessConfig]);$requestBody->setNetworkInterfaces([$networkInterface]);$service->instances->insert($this->project, $typeZoneId, $requestBody);}/*** 销毁实例*/public function destroyInstance($zoneId,$instanceName){$service = new Google_Service_Compute($this->client);$service->instances->delete($this->project, $zoneId, $instanceName);}/*** 重启实例*/public function reset($zoneId,$instanceName){$service = new Google_Service_Compute($this->client);$service->instances->reset($this->project, $zoneId,$instanceName);}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部