AWS CLI Reference
Installation & Configuration
# Install AWS CLI v2
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip && sudo ./aws/install
# Configure default profile
aws configure
# AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
# AWS Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# Default region name: us-east-1
# Default output format: json
# Check current identity
aws sts get-caller-identity
Named Profiles
# Create a named profile
aws configure --profile prod
# Use a named profile
aws s3 ls --profile prod
# Set profile via environment variable
export AWS_PROFILE=prod
# ~/.aws/credentials
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
[prod]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
# ~/.aws/config
[profile prod]
region = us-west-2
output = yaml
S3 Commands
# List buckets / objects
aws s3 ls
aws s3 ls s3://my-bucket/prefix/
# Copy and sync
aws s3 cp file.txt s3://my-bucket/
aws s3 cp s3://my-bucket/file.txt ./
aws s3 sync ./local-dir s3://my-bucket/remote-dir --delete
# Remove
aws s3 rm s3://my-bucket/file.txt
aws s3 rm s3://my-bucket/ --recursive
# Make / remove bucket
aws s3 mb s3://new-bucket --region us-east-1
aws s3 rb s3://empty-bucket
# Presigned URL (1 hour)
aws s3 presign s3://my-bucket/secret.pdf --expires-in 3600
EC2 Commands
# List instances
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,PublicIpAddress]' --output table
# Start / stop / terminate
aws ec2 start-instances --instance-ids i-1234567890abcdef0
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
# Launch instance
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t3.micro \
--key-name my-key \
--security-group-ids sg-12345678 \
--subnet-id subnet-12345678 \
--count 1
# Describe security groups
aws ec2 describe-security-groups --group-ids sg-12345678
IAM Commands
# List users, roles, policies
aws iam list-users
aws iam list-roles
aws iam list-policies --scope Local
# Create user and attach policy
aws iam create-user --user-name alice
aws iam attach-user-policy --user-name alice \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
# Create access key
aws iam create-access-key --user-name alice
# Assume role
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/MyRole \
--role-session-name my-session
Output Formats & Query
| Flag | Description | Example |
|---|---|---|
--output json | Default JSON output | aws ec2 describe-vpcs --output json |
--output table | Human-readable table | aws s3 ls --output table |
--output text | Tab-separated text | aws ec2 describe-instances --output text |
--output yaml | YAML (v2 only) | aws sts get-caller-identity --output yaml |
--query | JMESPath filter | --query 'Buckets[*].Name' |
--filter | Server-side filter | --filters Name=instance-state-name,Values=running |