Google Cloud Platform (GCP) CLI Cheat Sheet¶
A comprehensive reference for gcloud and gsutil commands covering essential GCP services for cloud certification and daily operations.
Table of Contents¶
- Configuration & Setup
- Compute Engine
- Cloud Storage (gsutil)
- GKE (Google Kubernetes Engine)
- Cloud SQL
- IAM (Identity and Access Management)
- VPC (Virtual Private Cloud)
- Cloud Functions
- App Engine
- BigQuery
- Cloud Build
- Additional Services
Configuration & Setup¶
Initialize and Configure gcloud¶
# Initialize gcloud
gcloud init
# Login to GCP
gcloud auth login
# Login for application default credentials
gcloud auth application-default login
# List configurations
gcloud config configurations list
# Create new configuration
gcloud config configurations create production
# Activate configuration
gcloud config configurations activate production
# Set project
gcloud config set project my-project-id
# Set default region
gcloud config set compute/region us-central1
# Set default zone
gcloud config set compute/zone us-central1-a
# View current configuration
gcloud config list
# Get specific config value
gcloud config get-value project
# Unset configuration value
gcloud config unset compute/region
# View account information
gcloud auth list
# Revoke credentials
gcloud auth revoke user@example.com
# List projects
gcloud projects list
# Describe project
gcloud projects describe my-project-id
# Get current project ID
gcloud config get-value project
SDK Management¶
# Update gcloud components
gcloud components update
# List components
gcloud components list
# Install component
gcloud components install kubectl
# Remove component
gcloud components remove kubectl
# Check gcloud version
gcloud version
# Get help
gcloud help
# Get command help
gcloud compute instances create --help
Compute Engine¶
Instance Management¶
# List instances
gcloud compute instances list
# List instances in specific zone
gcloud compute instances list --zones=us-central1-a
# Describe instance
gcloud compute instances describe instance-1 --zone=us-central1-a
# Create instance
gcloud compute instances create instance-1 \
--zone=us-central1-a \
--machine-type=e2-micro \
--image-family=debian-11 \
--image-project=debian-cloud
# Create instance with startup script
gcloud compute instances create instance-1 \
--zone=us-central1-a \
--machine-type=e2-micro \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata-from-file startup-script=startup.sh
# Create instance with tags
gcloud compute instances create instance-1 \
--zone=us-central1-a \
--machine-type=e2-micro \
--tags=http-server,https-server
# Create preemptible instance
gcloud compute instances create instance-1 \
--zone=us-central1-a \
--machine-type=e2-micro \
--preemptible
# Start instance
gcloud compute instances start instance-1 --zone=us-central1-a
# Stop instance
gcloud compute instances stop instance-1 --zone=us-central1-a
# Reset instance
gcloud compute instances reset instance-1 --zone=us-central1-a
# Delete instance
gcloud compute instances delete instance-1 --zone=us-central1-a
# Delete multiple instances
gcloud compute instances delete instance-1 instance-2 --zone=us-central1-a
# SSH into instance
gcloud compute ssh instance-1 --zone=us-central1-a
# SSH with specific user
gcloud compute ssh user@instance-1 --zone=us-central1-a
# Execute command on instance
gcloud compute ssh instance-1 --zone=us-central1-a --command="ls -la"
# Copy files to instance
gcloud compute scp local-file.txt instance-1:~/remote-file.txt --zone=us-central1-a
# Copy files from instance
gcloud compute scp instance-1:~/remote-file.txt local-file.txt --zone=us-central1-a
# Get serial port output
gcloud compute instances get-serial-port-output instance-1 --zone=us-central1-a
Instance Configuration¶
# Change machine type (requires instance to be stopped)
gcloud compute instances set-machine-type instance-1 \
--machine-type=e2-medium \
--zone=us-central1-a
# Add metadata
gcloud compute instances add-metadata instance-1 \
--zone=us-central1-a \
--metadata=key1=value1,key2=value2
# Remove metadata
gcloud compute instances remove-metadata instance-1 \
--zone=us-central1-a \
--keys=key1,key2
# Add tags
gcloud compute instances add-tags instance-1 \
--zone=us-central1-a \
--tags=web-server,production
# Remove tags
gcloud compute instances remove-tags instance-1 \
--zone=us-central1-a \
--tags=web-server
# Add labels
gcloud compute instances add-labels instance-1 \
--zone=us-central1-a \
--labels=environment=production,team=backend
# Remove labels
gcloud compute instances remove-labels instance-1 \
--zone=us-central1-a \
--labels=environment,team
# Update instance
gcloud compute instances update instance-1 \
--zone=us-central1-a \
--deletion-protection
Disks¶
# List disks
gcloud compute disks list
# Create disk
gcloud compute disks create disk-1 \
--zone=us-central1-a \
--size=100GB \
--type=pd-standard
# Create SSD disk
gcloud compute disks create disk-1 \
--zone=us-central1-a \
--size=100GB \
--type=pd-ssd
# Delete disk
gcloud compute disks delete disk-1 --zone=us-central1-a
# Attach disk to instance
gcloud compute instances attach-disk instance-1 \
--disk=disk-1 \
--zone=us-central1-a
# Detach disk from instance
gcloud compute instances detach-disk instance-1 \
--disk=disk-1 \
--zone=us-central1-a
# Resize disk
gcloud compute disks resize disk-1 \
--size=200GB \
--zone=us-central1-a
# Create snapshot
gcloud compute disks snapshot disk-1 \
--snapshot-names=snapshot-1 \
--zone=us-central1-a
# List snapshots
gcloud compute snapshots list
# Delete snapshot
gcloud compute snapshots delete snapshot-1
# Create disk from snapshot
gcloud compute disks create disk-2 \
--source-snapshot=snapshot-1 \
--zone=us-central1-a
Images¶
# List images
gcloud compute images list
# List images from specific project
gcloud compute images list --project=debian-cloud
# Describe image
gcloud compute images describe image-1
# Create image from disk
gcloud compute images create image-1 \
--source-disk=disk-1 \
--source-disk-zone=us-central1-a
# Create image from snapshot
gcloud compute images create image-1 \
--source-snapshot=snapshot-1
# Delete image
gcloud compute images delete image-1
# Deprecate image
gcloud compute images deprecate image-1 \
--state=DEPRECATED \
--replacement=image-2
# Export image to Cloud Storage
gcloud compute images export \
--image=image-1 \
--destination-uri=gs://my-bucket/image-1.tar.gz
Instance Templates¶
# List instance templates
gcloud compute instance-templates list
# Create instance template
gcloud compute instance-templates create template-1 \
--machine-type=e2-micro \
--image-family=debian-11 \
--image-project=debian-cloud \
--tags=http-server
# Delete instance template
gcloud compute instance-templates delete template-1
# Describe instance template
gcloud compute instance-templates describe template-1
Firewall Rules¶
# List firewall rules
gcloud compute firewall-rules list
# Create firewall rule (allow HTTP)
gcloud compute firewall-rules create allow-http \
--allow=tcp:80 \
--source-ranges=0.0.0.0/0 \
--target-tags=http-server
# Create firewall rule (allow HTTPS)
gcloud compute firewall-rules create allow-https \
--allow=tcp:443 \
--source-ranges=0.0.0.0/0 \
--target-tags=https-server
# Create firewall rule (allow SSH)
gcloud compute firewall-rules create allow-ssh \
--allow=tcp:22 \
--source-ranges=0.0.0.0/0
# Create firewall rule with specific source
gcloud compute firewall-rules create allow-internal \
--allow=tcp:3306 \
--source-ranges=10.0.0.0/8
# Update firewall rule
gcloud compute firewall-rules update allow-http \
--allow=tcp:80,tcp:8080
# Delete firewall rule
gcloud compute firewall-rules delete allow-http
# Describe firewall rule
gcloud compute firewall-rules describe allow-http
Load Balancing¶
# Create HTTP health check
gcloud compute health-checks create http http-basic-check \
--port=80
# Create backend service
gcloud compute backend-services create web-backend-service \
--protocol=HTTP \
--health-checks=http-basic-check \
--global
# Add backend to backend service
gcloud compute backend-services add-backend web-backend-service \
--instance-group=instance-group-1 \
--instance-group-zone=us-central1-a \
--global
# Create URL map
gcloud compute url-maps create web-map \
--default-service=web-backend-service
# Create target HTTP proxy
gcloud compute target-http-proxies create http-lb-proxy \
--url-map=web-map
# Create forwarding rule
gcloud compute forwarding-rules create http-content-rule \
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
# List forwarding rules
gcloud compute forwarding-rules list
Instance Groups¶
# Create instance group
gcloud compute instance-groups unmanaged create instance-group-1 \
--zone=us-central1-a
# Create managed instance group
gcloud compute instance-groups managed create instance-group-1 \
--base-instance-name=instance \
--template=template-1 \
--size=3 \
--zone=us-central1-a
# List instance groups
gcloud compute instance-groups list
# Resize managed instance group
gcloud compute instance-groups managed resize instance-group-1 \
--size=5 \
--zone=us-central1-a
# Set autoscaling
gcloud compute instance-groups managed set-autoscaling instance-group-1 \
--zone=us-central1-a \
--min-num-replicas=2 \
--max-num-replicas=10 \
--target-cpu-utilization=0.6
# Delete instance group
gcloud compute instance-groups managed delete instance-group-1 \
--zone=us-central1-a
Cloud Storage (gsutil)¶
Bucket Management¶
# List buckets
gsutil ls
# Create bucket
gsutil mb gs://my-unique-bucket-name
# Create bucket in specific location
gsutil mb -l us-central1 gs://my-unique-bucket-name
# Create bucket with storage class
gsutil mb -c nearline gs://my-unique-bucket-name
# Remove bucket
gsutil rb gs://my-unique-bucket-name
# Remove bucket with all contents
gsutil rm -r gs://my-unique-bucket-name
# Get bucket metadata
gsutil ls -L -b gs://my-unique-bucket-name
# List bucket contents
gsutil ls gs://my-bucket-name
# List recursively
gsutil ls -r gs://my-bucket-name
# List with details
gsutil ls -l gs://my-bucket-name
File Operations¶
# Upload file
gsutil cp local-file.txt gs://my-bucket-name/
# Upload with parallel composite uploads
gsutil -o GSUtil:parallel_composite_upload_threshold=150M cp large-file.txt gs://my-bucket-name/
# Upload directory
gsutil cp -r local-directory gs://my-bucket-name/
# Download file
gsutil cp gs://my-bucket-name/file.txt .
# Download directory
gsutil cp -r gs://my-bucket-name/directory .
# Copy between buckets
gsutil cp gs://bucket-1/file.txt gs://bucket-2/
# Move file
gsutil mv gs://my-bucket-name/old-file.txt gs://my-bucket-name/new-file.txt
# Delete file
gsutil rm gs://my-bucket-name/file.txt
# Delete directory
gsutil rm -r gs://my-bucket-name/directory
# Sync local to bucket
gsutil rsync -r local-directory gs://my-bucket-name/directory
# Sync bucket to local
gsutil rsync -r gs://my-bucket-name/directory local-directory
# Sync with delete
gsutil rsync -d -r local-directory gs://my-bucket-name/directory
# Get file metadata
gsutil stat gs://my-bucket-name/file.txt
# Set metadata
gsutil setmeta -h "Content-Type:text/plain" gs://my-bucket-name/file.txt
# Cat file
gsutil cat gs://my-bucket-name/file.txt
# Get file hash
gsutil hash local-file.txt
Access Control¶
# Get bucket IAM policy
gsutil iam get gs://my-bucket-name
# Set bucket IAM policy
gsutil iam set policy.json gs://my-bucket-name
# Add IAM policy binding
gsutil iam ch user:user@example.com:objectViewer gs://my-bucket-name
# Remove IAM policy binding
gsutil iam ch -d user:user@example.com:objectViewer gs://my-bucket-name
# Make bucket public
gsutil iam ch allUsers:objectViewer gs://my-bucket-name
# Get ACL
gsutil acl get gs://my-bucket-name/file.txt
# Set ACL
gsutil acl set private gs://my-bucket-name/file.txt
# Make file public
gsutil acl ch -u AllUsers:R gs://my-bucket-name/file.txt
# Set default ACL for bucket
gsutil defacl set public-read gs://my-bucket-name
Bucket Configuration¶
# Enable versioning
gsutil versioning set on gs://my-bucket-name
# Get versioning status
gsutil versioning get gs://my-bucket-name
# Set lifecycle policy
gsutil lifecycle set lifecycle.json gs://my-bucket-name
# Get lifecycle policy
gsutil lifecycle get gs://my-bucket-name
# Enable uniform bucket-level access
gsutil uniformbucketlevelaccess set on gs://my-bucket-name
# Get uniform bucket-level access status
gsutil uniformbucketlevelaccess get gs://my-bucket-name
# Set CORS configuration
gsutil cors set cors.json gs://my-bucket-name
# Get CORS configuration
gsutil cors get gs://my-bucket-name
# Enable website configuration
gsutil web set -m index.html -e 404.html gs://my-bucket-name
# Get website configuration
gsutil web get gs://my-bucket-name
# Set labels
gsutil label set labels.json gs://my-bucket-name
# Get labels
gsutil label get gs://my-bucket-name
# Change storage class
gsutil rewrite -s nearline gs://my-bucket-name/file.txt
Signed URLs¶
# Create signed URL (requires service account key)
gsutil signurl -d 10m private-key.json gs://my-bucket-name/file.txt
# Create signed URL with specific method
gsutil signurl -m GET -d 1h private-key.json gs://my-bucket-name/file.txt
GKE (Google Kubernetes Engine)¶
Cluster Management¶
# List clusters
gcloud container clusters list
# Create cluster
gcloud container clusters create cluster-1 \
--zone=us-central1-a \
--num-nodes=3
# Create cluster with machine type
gcloud container clusters create cluster-1 \
--zone=us-central1-a \
--machine-type=e2-medium \
--num-nodes=3
# Create autopilot cluster
gcloud container clusters create-auto cluster-1 \
--region=us-central1
# Get cluster credentials
gcloud container clusters get-credentials cluster-1 \
--zone=us-central1-a
# Describe cluster
gcloud container clusters describe cluster-1 \
--zone=us-central1-a
# Resize cluster
gcloud container clusters resize cluster-1 \
--num-nodes=5 \
--zone=us-central1-a
# Update cluster
gcloud container clusters update cluster-1 \
--enable-autoscaling \
--min-nodes=1 \
--max-nodes=10 \
--zone=us-central1-a
# Upgrade cluster
gcloud container clusters upgrade cluster-1 \
--master \
--zone=us-central1-a
# Delete cluster
gcloud container clusters delete cluster-1 \
--zone=us-central1-a
Node Pool Management¶
# List node pools
gcloud container node-pools list --cluster=cluster-1 \
--zone=us-central1-a
# Create node pool
gcloud container node-pools create pool-1 \
--cluster=cluster-1 \
--zone=us-central1-a \
--machine-type=e2-medium \
--num-nodes=2
# Create preemptible node pool
gcloud container node-pools create pool-1 \
--cluster=cluster-1 \
--zone=us-central1-a \
--preemptible \
--num-nodes=2
# Describe node pool
gcloud container node-pools describe pool-1 \
--cluster=cluster-1 \
--zone=us-central1-a
# Resize node pool
gcloud container node-pools resize pool-1 \
--cluster=cluster-1 \
--zone=us-central1-a \
--num-nodes=4
# Update node pool
gcloud container node-pools update pool-1 \
--cluster=cluster-1 \
--zone=us-central1-a \
--enable-autoscaling \
--min-nodes=1 \
--max-nodes=5
# Delete node pool
gcloud container node-pools delete pool-1 \
--cluster=cluster-1 \
--zone=us-central1-a
Operations¶
# List operations
gcloud container operations list
# Describe operation
gcloud container operations describe operation-id \
--zone=us-central1-a
# Wait for operation
gcloud container operations wait operation-id \
--zone=us-central1-a
Cloud SQL¶
Instance Management¶
# List instances
gcloud sql instances list
# Create MySQL instance
gcloud sql instances create mysql-instance-1 \
--database-version=MYSQL_8_0 \
--tier=db-n1-standard-1 \
--region=us-central1
# Create PostgreSQL instance
gcloud sql instances create postgres-instance-1 \
--database-version=POSTGRES_14 \
--tier=db-n1-standard-1 \
--region=us-central1
# Describe instance
gcloud sql instances describe mysql-instance-1
# Patch instance (update configuration)
gcloud sql instances patch mysql-instance-1 \
--tier=db-n1-standard-2
# Restart instance
gcloud sql instances restart mysql-instance-1
# Delete instance
gcloud sql instances delete mysql-instance-1
# Set root password
gcloud sql users set-password root \
--host=% \
--instance=mysql-instance-1 \
--password=MyPassword123
Database Management¶
# List databases
gcloud sql databases list --instance=mysql-instance-1
# Create database
gcloud sql databases create mydb \
--instance=mysql-instance-1
# Delete database
gcloud sql databases delete mydb \
--instance=mysql-instance-1
# Describe database
gcloud sql databases describe mydb \
--instance=mysql-instance-1
User Management¶
# List users
gcloud sql users list --instance=mysql-instance-1
# Create user
gcloud sql users create myuser \
--instance=mysql-instance-1 \
--password=MyPassword123
# Set password
gcloud sql users set-password myuser \
--instance=mysql-instance-1 \
--password=NewPassword456
# Delete user
gcloud sql users delete myuser \
--instance=mysql-instance-1
Backup and Restore¶
# List backups
gcloud sql backups list --instance=mysql-instance-1
# Create backup
gcloud sql backups create \
--instance=mysql-instance-1
# Describe backup
gcloud sql backups describe backup-id \
--instance=mysql-instance-1
# Restore from backup
gcloud sql backups restore backup-id \
--backup-instance=mysql-instance-1 \
--backup-id=backup-id
# Export database
gcloud sql export sql mysql-instance-1 \
gs://my-bucket/export.sql \
--database=mydb
# Import database
gcloud sql import sql mysql-instance-1 \
gs://my-bucket/import.sql \
--database=mydb
Operations¶
# List operations
gcloud sql operations list --instance=mysql-instance-1
# Describe operation
gcloud sql operations describe operation-id
# Wait for operation
gcloud sql operations wait operation-id
IAM (Identity and Access Management)¶
Service Accounts¶
# List service accounts
gcloud iam service-accounts list
# Create service account
gcloud iam service-accounts create my-service-account \
--display-name="My Service Account"
# Describe service account
gcloud iam service-accounts describe my-service-account@my-project.iam.gserviceaccount.com
# Delete service account
gcloud iam service-accounts delete my-service-account@my-project.iam.gserviceaccount.com
# Create key for service account
gcloud iam service-accounts keys create key.json \
--iam-account=my-service-account@my-project.iam.gserviceaccount.com
# List keys
gcloud iam service-accounts keys list \
--iam-account=my-service-account@my-project.iam.gserviceaccount.com
# Delete key
gcloud iam service-accounts keys delete key-id \
--iam-account=my-service-account@my-project.iam.gserviceaccount.com
IAM Policies¶
# Get IAM policy
gcloud projects get-iam-policy my-project-id
# Add IAM policy binding
gcloud projects add-iam-policy-binding my-project-id \
--member=user:user@example.com \
--role=roles/viewer
# Add IAM policy binding for service account
gcloud projects add-iam-policy-binding my-project-id \
--member=serviceAccount:my-service-account@my-project.iam.gserviceaccount.com \
--role=roles/editor
# Remove IAM policy binding
gcloud projects remove-iam-policy-binding my-project-id \
--member=user:user@example.com \
--role=roles/viewer
# Set IAM policy
gcloud projects set-iam-policy my-project-id policy.json
# Get IAM policy for resource
gcloud compute instances get-iam-policy instance-1 \
--zone=us-central1-a
# Add IAM policy binding to resource
gcloud compute instances add-iam-policy-binding instance-1 \
--zone=us-central1-a \
--member=user:user@example.com \
--role=roles/compute.instanceAdmin
Roles¶
# List roles
gcloud iam roles list
# List predefined roles
gcloud iam roles list --filter="name:roles/"
# List custom roles
gcloud iam roles list --project=my-project-id
# Describe role
gcloud iam roles describe roles/compute.admin
# Create custom role
gcloud iam roles create myCustomRole \
--project=my-project-id \
--title="My Custom Role" \
--description="Custom role for specific permissions" \
--permissions=compute.instances.get,compute.instances.list
# Update custom role
gcloud iam roles update myCustomRole \
--project=my-project-id \
--add-permissions=compute.instances.start
# Delete custom role
gcloud iam roles delete myCustomRole \
--project=my-project-id
# Undelete custom role
gcloud iam roles undelete myCustomRole \
--project=my-project-id
VPC (Virtual Private Cloud)¶
Network Management¶
# List networks
gcloud compute networks list
# Create auto mode network
gcloud compute networks create my-network \
--subnet-mode=auto
# Create custom mode network
gcloud compute networks create my-network \
--subnet-mode=custom
# Delete network
gcloud compute networks delete my-network
# Describe network
gcloud compute networks describe my-network
# Update network
gcloud compute networks update my-network \
--switch-to-custom-subnet-mode
Subnet Management¶
# List subnets
gcloud compute networks subnets list
# Create subnet
gcloud compute networks subnets create my-subnet \
--network=my-network \
--region=us-central1 \
--range=10.0.1.0/24
# Delete subnet
gcloud compute networks subnets delete my-subnet \
--region=us-central1
# Describe subnet
gcloud compute networks subnets describe my-subnet \
--region=us-central1
# Expand subnet range
gcloud compute networks subnets expand-ip-range my-subnet \
--region=us-central1 \
--prefix-length=20
# Update subnet
gcloud compute networks subnets update my-subnet \
--region=us-central1 \
--enable-private-ip-google-access
Routes¶
# List routes
gcloud compute routes list
# Create route
gcloud compute routes create my-route \
--network=my-network \
--destination-range=0.0.0.0/0 \
--next-hop-gateway=default-internet-gateway
# Delete route
gcloud compute routes delete my-route
# Describe route
gcloud compute routes describe my-route
VPC Peering¶
# Create VPC peering
gcloud compute networks peerings create peering-1 \
--network=network-1 \
--peer-project=peer-project-id \
--peer-network=network-2
# List VPC peerings
gcloud compute networks peerings list
# Delete VPC peering
gcloud compute networks peerings delete peering-1 \
--network=network-1
# Update VPC peering
gcloud compute networks peerings update peering-1 \
--network=network-1 \
--import-custom-routes \
--export-custom-routes
Cloud NAT¶
# Create Cloud Router
gcloud compute routers create my-router \
--network=my-network \
--region=us-central1
# Create Cloud NAT
gcloud compute routers nats create my-nat \
--router=my-router \
--region=us-central1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges
# List NATs
gcloud compute routers nats list --router=my-router \
--region=us-central1
# Delete NAT
gcloud compute routers nats delete my-nat \
--router=my-router \
--region=us-central1
# Delete router
gcloud compute routers delete my-router \
--region=us-central1
VPN¶
# Create VPN gateway
gcloud compute target-vpn-gateways create vpn-gateway-1 \
--network=my-network \
--region=us-central1
# Create VPN tunnel
gcloud compute vpn-tunnels create vpn-tunnel-1 \
--target-vpn-gateway=vpn-gateway-1 \
--region=us-central1 \
--peer-address=203.0.113.1 \
--shared-secret=MySharedSecret123
# List VPN tunnels
gcloud compute vpn-tunnels list
# Delete VPN tunnel
gcloud compute vpn-tunnels delete vpn-tunnel-1 \
--region=us-central1
# Delete VPN gateway
gcloud compute target-vpn-gateways delete vpn-gateway-1 \
--region=us-central1
Cloud Functions¶
Function Management¶
# List functions
gcloud functions list
# Deploy function (HTTP trigger)
gcloud functions deploy my-function \
--runtime=python39 \
--trigger-http \
--entry-point=hello_world \
--source=.
# Deploy function (Pub/Sub trigger)
gcloud functions deploy my-function \
--runtime=python39 \
--trigger-topic=my-topic \
--entry-point=hello_pubsub \
--source=.
# Deploy function (Cloud Storage trigger)
gcloud functions deploy my-function \
--runtime=python39 \
--trigger-resource=my-bucket \
--trigger-event=google.storage.object.finalize \
--entry-point=hello_gcs \
--source=.
# Deploy function with environment variables
gcloud functions deploy my-function \
--runtime=python39 \
--trigger-http \
--set-env-vars=KEY1=value1,KEY2=value2
# Deploy function with service account
gcloud functions deploy my-function \
--runtime=python39 \
--trigger-http \
--service-account=my-service-account@my-project.iam.gserviceaccount.com
# Describe function
gcloud functions describe my-function
# Call function
gcloud functions call my-function --data='{"key":"value"}'
# Get logs
gcloud functions logs read my-function
# Get logs (follow)
gcloud functions logs read my-function --limit=10 --follow
# Delete function
gcloud functions delete my-function
# Get IAM policy
gcloud functions get-iam-policy my-function
# Add IAM policy binding
gcloud functions add-iam-policy-binding my-function \
--member=user:user@example.com \
--role=roles/cloudfunctions.invoker
App Engine¶
Application Management¶
# Deploy application
gcloud app deploy
# Deploy with specific version
gcloud app deploy --version=v1
# Deploy without promoting to live
gcloud app deploy --no-promote
# Describe application
gcloud app describe
# Browse application
gcloud app browse
# Open specific service
gcloud app browse --service=my-service
# View logs
gcloud app logs tail -s default
# Read logs
gcloud app logs read
Version Management¶
# List versions
gcloud app versions list
# Describe version
gcloud app versions describe v1 --service=default
# Start version
gcloud app versions start v1 --service=default
# Stop version
gcloud app versions stop v1 --service=default
# Delete version
gcloud app versions delete v1 --service=default
# Migrate traffic
gcloud app services set-traffic default --splits=v1=0.9,v2=0.1
# Migrate all traffic to version
gcloud app services set-traffic default --splits=v2=1
Service Management¶
# List services
gcloud app services list
# Describe service
gcloud app services describe default
# Delete service
gcloud app services delete my-service
# Set traffic split
gcloud app services set-traffic my-service --splits=v1=0.5,v2=0.5
Instances Management¶
# List instances
gcloud app instances list
# Describe instance
gcloud app instances describe instance-id --service=default --version=v1
# Delete instance
gcloud app instances delete instance-id --service=default --version=v1
# SSH into instance
gcloud app instances ssh instance-id --service=default --version=v1
BigQuery¶
Dataset Management¶
# List datasets
bq ls
# List datasets with project
bq ls my-project:
# Create dataset
bq mk my_dataset
# Create dataset with location
bq mk --location=US my_dataset
# Delete dataset
bq rm -r my_dataset
# Show dataset info
bq show my_dataset
# Update dataset description
bq update --description "My dataset description" my_dataset
# Copy dataset
bq cp source_dataset destination_dataset
Table Management¶
# List tables in dataset
bq ls my_dataset
# Show table schema
bq show my_dataset.my_table
# Create table
bq mk --table my_dataset.my_table schema.json
# Create table from query
bq query --destination_table=my_dataset.my_table --use_legacy_sql=false \
'SELECT * FROM `my_dataset.source_table`'
# Load data from CSV
bq load --source_format=CSV my_dataset.my_table gs://my-bucket/data.csv schema.json
# Load data from JSON
bq load --source_format=NEWLINE_DELIMITED_JSON my_dataset.my_table gs://my-bucket/data.json
# Extract table to Cloud Storage
bq extract my_dataset.my_table gs://my-bucket/export.csv
# Delete table
bq rm my_dataset.my_table
# Copy table
bq cp my_dataset.source_table my_dataset.destination_table
# Update table schema
bq update my_dataset.my_table schema.json
# Set table expiration
bq update --expiration 3600 my_dataset.my_table
Query Operations¶
# Run query
bq query --use_legacy_sql=false \
'SELECT * FROM `my_dataset.my_table` LIMIT 10'
# Run query and save results
bq query --use_legacy_sql=false --destination_table=my_dataset.results \
'SELECT * FROM `my_dataset.my_table`'
# Run query with parameters
bq query --use_legacy_sql=false --parameter=name:STRING:John \
'SELECT * FROM `my_dataset.my_table` WHERE name = @name'
# Run dry run
bq query --dry_run --use_legacy_sql=false \
'SELECT * FROM `my_dataset.my_table`'
# Get query results
bq show -j job_id
Job Management¶
# List jobs
bq ls -j
# Show job info
bq show -j job_id
# Wait for job
bq wait job_id
# Cancel job
bq cancel job_id
Cloud Build¶
Build Management¶
# Submit build
gcloud builds submit --config=cloudbuild.yaml .
# Submit build from source
gcloud builds submit --tag=gcr.io/my-project/my-image:tag .
# List builds
gcloud builds list
# Describe build
gcloud builds describe build-id
# Get build logs
gcloud builds log build-id
# Stream build logs
gcloud builds log --stream build-id
# Cancel build
gcloud builds cancel build-id
Trigger Management¶
# List triggers
gcloud builds triggers list
# Create trigger
gcloud builds triggers create github \
--repo-name=my-repo \
--repo-owner=my-org \
--branch-pattern=^main$ \
--build-config=cloudbuild.yaml
# Describe trigger
gcloud builds triggers describe trigger-id
# Run trigger
gcloud builds triggers run trigger-id
# Update trigger
gcloud builds triggers update trigger-id \
--branch-pattern=^master$
# Delete trigger
gcloud builds triggers delete trigger-id
Additional Services¶
Cloud Pub/Sub¶
# List topics
gcloud pubsub topics list
# Create topic
gcloud pubsub topics create my-topic
# Publish message
gcloud pubsub topics publish my-topic --message="Hello World"
# Delete topic
gcloud pubsub topics delete my-topic
# List subscriptions
gcloud pubsub subscriptions list
# Create subscription
gcloud pubsub subscriptions create my-subscription --topic=my-topic
# Pull messages
gcloud pubsub subscriptions pull my-subscription --auto-ack
# Delete subscription
gcloud pubsub subscriptions delete my-subscription
Cloud DNS¶
# List managed zones
gcloud dns managed-zones list
# Create managed zone
gcloud dns managed-zones create my-zone \
--dns-name=example.com. \
--description="My DNS zone"
# List record sets
gcloud dns record-sets list --zone=my-zone
# Add record
gcloud dns record-sets create www.example.com. \
--type=A \
--ttl=300 \
--rrdatas=203.0.113.1 \
--zone=my-zone
# Delete record
gcloud dns record-sets delete www.example.com. \
--type=A \
--zone=my-zone
# Delete zone
gcloud dns managed-zones delete my-zone
Cloud Monitoring¶
# List metric descriptors
gcloud monitoring metrics-descriptors list
# List time series
gcloud monitoring time-series list \
--filter='metric.type="compute.googleapis.com/instance/cpu/utilization"'
# Create alert policy
gcloud alpha monitoring policies create --policy-from-file=policy.yaml
# List alert policies
gcloud alpha monitoring policies list
Cloud Logging¶
# Read logs
gcloud logging read "resource.type=gce_instance" --limit=10
# Read logs with filter
gcloud logging read "severity>=ERROR" --limit=10
# Read logs with time range
gcloud logging read "timestamp>\"2024-01-01T00:00:00Z\"" --limit=10
# Write log entry
gcloud logging write my-log "Log message" --severity=INFO
# List logs
gcloud logging logs list
# Delete log
gcloud logging logs delete my-log
Secret Manager¶
# Create secret
echo -n "my-secret-value" | gcloud secrets create my-secret --data-file=-
# List secrets
gcloud secrets list
# Add secret version
echo -n "new-secret-value" | gcloud secrets versions add my-secret --data-file=-
# Access secret version
gcloud secrets versions access latest --secret=my-secret
# List secret versions
gcloud secrets versions list my-secret
# Delete secret version
gcloud secrets versions destroy 1 --secret=my-secret
# Delete secret
gcloud secrets delete my-secret
Cloud Scheduler¶
# Create job
gcloud scheduler jobs create http my-job \
--schedule="0 2 * * *" \
--uri="https://example.com/endpoint" \
--http-method=POST
# List jobs
gcloud scheduler jobs list
# Run job
gcloud scheduler jobs run my-job
# Update job
gcloud scheduler jobs update http my-job \
--schedule="0 3 * * *"
# Pause job
gcloud scheduler jobs pause my-job
# Resume job
gcloud scheduler jobs resume my-job
# Delete job
gcloud scheduler jobs delete my-job
Tips and Best Practices¶
Format Output¶
# JSON format
gcloud compute instances list --format=json
# YAML format
gcloud compute instances list --format=yaml
# Table format with specific columns
gcloud compute instances list --format="table(name,zone,machineType,status)"
# CSV format
gcloud compute instances list --format=csv
# Get specific field
gcloud compute instances list --format="value(name)"
Filtering and Sorting¶
# Filter by field
gcloud compute instances list --filter="zone:us-central1-a"
# Filter with AND
gcloud compute instances list --filter="zone:us-central1-a AND status:RUNNING"
# Filter with OR
gcloud compute instances list --filter="zone:us-central1-a OR zone:us-west1-a"
# Sort results
gcloud compute instances list --sort-by=creationTimestamp
# Sort descending
gcloud compute instances list --sort-by=~creationTimestamp
# Limit results
gcloud compute instances list --limit=10
Project Management¶
# Create project
gcloud projects create my-new-project --name="My New Project"
# Set project
gcloud config set project my-project-id
# Get current project
gcloud config get-value project
# List projects
gcloud projects list
# Delete project
gcloud projects delete my-project-id
This cheat sheet covers the most commonly used gcloud and gsutil commands for GCP certification preparation and daily operations. Practice these commands regularly to build proficiency with Google Cloud Platform.