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.

Cloud CLI Tools: aws-cli, gcloud, az, s5cmd, Cloud Comparisons

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 ==="

gcloud auth list

echo "=== Azure ==="

az account show

Comparison

| Feature | aws-cli v2 | gcloud | az | s5cmd |

|---------|-----------|--------|-----|-------|

| Language | Python | Python | Python | Go |

| S3 performance | Moderate | N/A | N/A | Excellent |

| Server-side waiters | Yes | Yes | Yes | No |

| Output formats | json/yaml/text/table | json/yaml/text | json/yaml/table | text only |

| JMESPath | Built-in | Built-in | Built-in | No |

| SSO support | Yes | Yes | Yes | No |

| File transfer | Sequential | Sequential | Sequential | Parallel |

Recommendations

  • AWS-focused : aws-cli v2 for full API coverage with s5cmd for large S3 transfers.

  • GCP-focused : gcloud with gcloud alpha and gcloud beta commands for latest features.

  • Azure-focused : az with its strong resource graph queries and role-based access.

  • High-performance S3 : s5cmd is 5-10x faster than aws-cli for bulk S3 operations.

  • Credential management : Use aws-vault or gcloud auth application-default for secure authentication.

  • Scripting : All three CLIs support JSON output with JMESPath for programmatic use.