从失败的Google Compute Engine实例启动获取错误消息

时间:2018-07-21 10:52:49

标签: php google-cloud-platform google-compute-engine

我正在使用以下代码启动实例。该代码将按预期工作并启动实例。

但是,如果$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.

1 个答案:

答案 0 :(得分:0)

请检查response body的json标签以检索错误内容。如果仍然看不到任何输出,则可以在“开发人员工具”下提交问题here