Description
Instance metadata in Google Cloud provides information about your VM that can be accessed programmatically from within the instance. Metadata includes details such as the VM’s name, zone, machine type, network configuration, and custom user‑defined values. Each virtual machine (VM) maintains its metadata on a dedicated metadata server, and the VM can access this server’s API directly without requiring any additional authentication.
In this guided lab, you will learn how to explore and query instance metadata from a VM using the metadata server.
Prerequisites
This lab assumes you have experience creating a VM instance and are familiar with its basic components. If you feel that your knowledge in this area is insufficient, we highly recommend taking this lab to gain the necessary understanding:
Objectives
In this lab, you will:
- Create a VM instance.
- Access the metadata server from within the VM.
- Retrieve and explore metadata values such as instance name, zone, machine type, networking details, and service account information.
Lab Steps
Create a VM Instance
1. In the Google Cloud Console, go to Compute Engine → VM instances → Create Instance.
2. Create a VM instance using the following machine configurations:
- Name: Enter your desired instance name.
- Machine type: Choose e2-micro (Preset)

3. Leave other configurations at their default values.
4. Once done, click the Create button.
Connect to the VM
1. From the VM instances page, click SSH next to your VM.

2. Once connected, verify you are inside the VM by running:
hostname

Query Instance Metadata
1. Use curl to query the metadata server. The metadata server is available at http://metadata.google.internal/.
2. Run the following commands:
# Retrieve the VM's name
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/name
# Retrieve the VM's zone
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/zone
# Retrieve the VM's machine type
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/machine-type
# List all available metadata keys
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/ -v

Explore network and service account metadata
Run the following commands:
# Retrieve the VM's internal IP address
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip
# Retrieve the VM's external IP address
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip
# Retrieve the VM's service account email
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/email
# List all available service account scopes
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/scopes

Congratulations! You have successfully explored instance metadata in Google Cloud. You created a VM, queried metadata such as name, zone, and machine type, and explored networking and identity metadata like IP addresses and service account details. This workflow demonstrates how metadata can be used to dynamically configure applications, discover networking information, and manage identity programmatically.