【发布时间】:2018-12-29 12:30:42
【问题描述】:
我正在使用下面的代码来启动一个实例。代码按预期工作并启动一个实例。
但是,如果$service->instances->start 由于 GCP 端的错误而无法启动实例,我将不会收到任何通知。它将执行而不会引发任何异常。我已经通过尝试在单个区域中运行 2 个具有超过 8 个 cpu 的实例来测试这一点(免费帐户不允许在一个区域中拥有超过 8 个核心)。虽然实例从未启动,但我在此脚本中没有收到任何错误。
如何从一般的启动错误中恢复?如果一切都按预期运行,我应该使用计时器在一分钟后检查吗?是否有更稳健的启动实例方式?
<?php
require_once __DIR__ . '/vendor/autoload.php';
$client = new Google_Client();
$client->setApplicationName('Google-ComputeSample/0.1');
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/cloud-platform');
$service = new Google_Service_Compute($client);
$project = 'project_id'; // TODO: Update placeholder value.
$zone = 'us-east1-b'; // TODO: Update placeholder value.
$instance = 'instance-1'; // TODO: Update placeholder value.
$response = $service->instances->start($project, $zone, $instance);
// TODO: Change code below to process the `response` object:
echo '<pre>', var_export($response, true), '</pre>', "\n";
另一方面,CLI 等效命令gcloud compute instances start instance-1 --zone=us-east1-b 确实返回错误。是否也可以在 PHP 中获取错误消息?
CLI 中的错误消息:
Starting instance(s) instance-2...failed.
ERROR: (gcloud.compute.instances.start) Quota 'CPUS' exceeded. Limit: 8.0 in region us-east1.
【问题讨论】:
标签: php google-cloud-platform google-compute-engine