This directory contains samples for calling Google Cloud Compute Engine APIs from PHP. Specifically, they show how to manage your Compute Engine instances.
Authentication is typically done through Application Default Credentials which means you do not have to change the code to authenticate as long as your environment has credentials. You have a few options for setting up authentication:
-
When running locally, use the Google Cloud SDK
gcloud auth application-default login
-
When running on App Engine or Compute Engine, credentials are already set. However, you may need to configure your Compute Engine instance with additional scopes.
-
You can create a Service Account key file. This file can be used to authenticate to Google Cloud Platform services from any environment. To use the file, set the
GOOGLE_APPLICATION_CREDENTIALS
environment variable to the path to the key file, for example:export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json
-
Install dependencies using Composer. Run
php composer.phar install
(if composer is installed locally) orcomposer install
(if composer is installed globally). -
Create a service account.
-
Download the json key file of the service account.
-
Set the
GOOGLE_APPLICATION_CREDENTIALS
environment variable pointing to that file.
To run the Compute samples, run any of the files in src/
on the CLI to print
the usage instructions:
$ php src/list_instances.php
Usage: list_instances.php $projectId $zone
@param string $projectId Your Google Cloud project ID.
@param string $zone The zone to create the instance in (e.g. "us-central1-a")
$ php src/create_instance.php $YOUR_PROJECT_ID "us-central1-a" "my-new-instance-name"
Created instance my-new-instance-name
$ php src/list_instances.php $YOUR_PROJECT_ID "us-central1-a"
Instances for YOUR_PROJECT_ID (us-central1-a)
- my-new-instance-name
$ php src/list_all_instances.php $YOUR_PROJECT_ID
All instances for YOUR_PROJECT_ID
Zone - zones/us-central1-a
- my-new-instance-name
Zone - zones/us-central1-b
- my-new-instance-name-2
- my-new-instance-name-3
$ php src/stop_instance.php $YOUR_PROJECT_ID "us-central1-a" "my-new-instance-name"
Instance my-new-instance-name stopped successfully
$ php src/start_instance.php $YOUR_PROJECT_ID "us-central1-a" "my-new-instance-name"
Instance my-new-instance-name started successfully
$ php src/start_instance_with_encryption_key.php $YOUR_PROJECT_ID "us-central1-a" "my-new-instance-name" $ENC_KEY
Instance my-new-instance-name started successfully
$ php src/reset_instance.php $YOUR_PROJECT_ID "us-central1-a" "my-new-instance-name"
Instance my-new-instance-name reset successfully
$ php src/delete_instance.php $YOUR_PROJECT_ID "us-central1-a" "my-new-instance-name"
Deleted instance my-new-instance-name
$ php src/set_usage_export_bucket.php $YOUR_PROJECT_ID "my-gcs-bucket-name" "my-report-name-prefix"
$ php src/get_usage_export_bucket.php $YOUR_PROJECT_ID
$ php src/disable_usage_export_bucket.php $YOUR_PROJECT_ID
If you get the following error, set the environment variable GCLOUD_PROJECT
to your project ID:
[Google\Cloud\Core\Exception\GoogleException]
No project ID was provided, and we were unable to detect a default project ID.
This sample uses the Google Cloud Compute Client Library for PHP. You can read the documentation for more details on API usage and use GitHub to browse the source and report issues.