This article was originally published on AI Study Room. For the full version with working code examples and related articles, visit the original post.
Cloud CLI Tools: aws-cli, gcloud, az, s5cmd, Cloud Comparisons
Introduction
Cloud provider CLIs are essential for infrastructure management, automation, and day-to-day operations. Each major cloud provider has its own CLI with unique features and syntax. This article covers the primary CLIs (aws-cli, gcloud, az) plus s5cmd for high-performance S3 operations, with practical examples and productivity patterns.
AWS CLI
The most mature cloud CLI, now at version 2:
# Installation
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
# Or via brew
brew install awscli
# Configuration
aws configure
aws configure set region us-west-2
aws configure set cli_pager ""
# Profile management
aws configure --profile production
aws s3 ls --profile production
export AWS_PROFILE=production
# Common operations
aws s3 ls s3://my-bucket/ --recursive --human-readable
aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,InstanceType,State.Name]" --output table
aws s3 sync ./dist s3://my-website/ --delete --exact-timestamps
aws logs tail /aws/lambda/my-function --follow
aws ecs update-service --cluster prod --service api --force-new-deployment
# With JMESPath filtering
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query "Reservations[*].Instances[?Tags[?Key=='Environment' && Value=='production']].[InstanceId,PrivateIpAddress,InstanceType]" \
--output json
Productivity aliases:
# ~/.zshrc
alias awsp="export AWS_PROFILE=$(aws configure list-profiles | fzf)"
alias aws-whoami="aws sts get-caller-identity"
alias s3ls="aws s3 ls"
alias s3sync="aws s3 sync"
alias ec2ls="aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,State.Name,LaunchTime]' --output table"
alias logs-tail="aws logs tail --follow"
gcloud (Google Cloud CLI)
# Installation
brew install --cask google-cloud-sdk
# Or via curl
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
# Authentication
gcloud auth login
gcloud auth application-default login
gcloud config set project my-project
gcloud config set compute/region us-central1
# Common operations
gcloud compute instances list
gcloud container clusters get-credentials prod-cluster --region us-central1
gcloud builds submit --tag gcr.io/my-project/my-service
gcloud run deploy my-service --image gcr.io/my-project/my-service --platform managed
gcloud logging read "resource.type=cloud_run_revision AND severity>=ERROR" --limit 50
gcloud sql instances describe my-db
# Configuration management
gcloud config configurations create dev
gcloud config configurations activate prod
gcloud config list
Azure CLI (az)
# Installation
brew install azure-cli
# Authentication
az login
az account set --subscription "my-subscription"
# Common operations
az vm list --output table
az aks get-credentials --resource-group my-rg --name my-cluster
az acr build --registry myregistry --image myapp:latest .
az webapp log tail --name my-app --resource-group my-rg
az sql db show --resource-group my-rg --server my-server --name my-db
az group list --query "[].{Name:name, Location:location}" --output table
# JMESPath queries
az vm list --query "[?tags.Environment=='production'].{Name:name, Size:hardwareProfile.vmSize}" --output table
s5cmd
A high-performance S3 CLI written in Go:
# Installation
brew install s5cmd
# Configuration (reuses AWS CLI credentials)
# Just set AWS_PROFILE or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY
# Speed comparison
# Copy 10,000 files:
time aws s3 cp --recursive s3://bucket/prefix/ ./local/ # ~60 seconds
time s5cmd cp "s3://bucket/prefix/*" ./local/ # ~8 seconds
# Operations
s5cmd ls s3://my-bucket/
s5cmd cp s3://bucket/key.gz ./
s5cmd mv s3://bucket/old-key s3://bucket/new-key
s5cmd rm s3://bucket/old-prefix/*
# Batch operations from file
echo "s3://bucket/logs/2026-01-01.log" > files.txt
echo "s3://bucket/logs/2026-01-02.log" >> files.txt
s5cmd cp files.txt ./logs/
# Run commands in parallel
s5cmd --numworkers 64 cp s3://large-bucket/* ./downloads/
# Dry run
s5cmd --dry-run cp s3://bucket/* ./local/
Multi-Cloud Tools
# Cloud-specific environment management
# aws-vault — secure AWS credential management
brew install aws-vault
aws-vault add prod
aws-vault exec prod -- aws s3 ls
# AWS SSO helper
aws sso login --profile prod
export AWS_PROFILE=prod
# Cloud comparison commands
echo "=== AWS ==="
aws sts get-caller-identity
echo "=== GCP
Read the full article on AI Study Room for complete code examples, comparison tables, and related resources.
Found this useful? Check out more developer guides and tool comparisons on AI Study Room.
Top comments (0)