mockdev
mockdev

Reputation: 13

Google compute engine instance start/status/stop using api

I need to start the google cloud instance and stop if my process is over. So i tried api calls from https://cloud.google.com/compute/docs/reference/rest/v1/instances/get

Created API Key and oAuth client Id for the same and tried in postman application to test.

Used API Key in header Authorization : Bearer <api_key> and also in URL as key=<api_key>

But both methods are giving error 401 login required.

Then i found API Explorer

https://developers.google.com/apis-explorer/

There also i got same error.

What is the mistake I'm doing. I need to implement instance start and stop through PHP code as it is background process.

PHP curl response

{
    "error": {
        "errors": [
            {
                "domain": "global",
                "reason": "authError",
                "message": "Invalid Credentials",
                "locationType": "header",
                "location": "Authorization"
            }
        ],
        "code": 401,
        "message": "Invalid Credentials"
    }
}

Upvotes: 1

Views: 580

Answers (1)

thefolenangel
thefolenangel

Reputation: 1060

I think the easiest way to actually do this using env variable, as the google api php client library has a neat method.

require_once __DIR__ . '/vendor/autoload.php';
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json');

$client = new Google_Client();

$client->setApplicationName('RandomNameYouNeedToInsert/0.1');
$client->addScope(array('https://www.googleapis.com/auth/compute'));
$client->useApplicationDefaultCredentials();

$service = new Google_Service_Compute($client);

// TODO: Update placeholder values.
project = 'my-project';  
$zone = 'my-zone';  
$instance = 'my-instance';  

$response = $service->instances->start($project, $zone, $instance);
// TODO: Check if the response satisfies your request.

Upvotes: 2

Related Questions