| name | aws-cli |
| description | AWS Command Line Interface for managing Amazon Web Services. Use when the user needs to interact with S3, EC2, Lambda, CloudWatch, IAM, and other AWS services directly from the terminal for operations, scripting, and automation. |
| license | Apache-2.0 |
| compatibility | linux, macos, windows |
| metadata | {"author":"terminal-skills","version":"1.0.0","category":"devops","tags":["aws","cli","cloud","s3","ec2","lambda"]} |
AWS CLI
The AWS CLI provides direct terminal access to all AWS services for management, scripting, and automation.
Installation and Configuration
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip && sudo ./aws/install
aws configure
aws configure --profile production
aws s3 ls --profile production
export AWS_PROFILE=production
S3 Operations
aws s3 mb s3://my-bucket-name --region us-east-1
aws s3 ls s3://my-bucket/
aws s3 cp file.txt s3://my-bucket/path/
aws s3 sync ./local-dir s3://my-bucket/remote-dir/ --delete
aws s3 rm s3://my-bucket/path/ --recursive
aws s3 presign s3://my-bucket/file.pdf --expires-in 3600
aws s3 sync s3://source-bucket s3://dest-bucket \
--exclude "*.tmp" --include "*.json"
aws s3api put-bucket-versioning --bucket my-bucket \
--versioning-configuration Status=Enabled
EC2 Management
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t3.medium \
--key-name my-key \
--subnet-id subnet-abc123 \
--security-group-ids sg-abc123 \
--count 1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=web-server}]'
aws ec2 describe-instances \
--filters "Name=tag:Environment,Values=production" \
--query 'Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,State:State.Name,IP:PublicIpAddress}' \
--output table
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 start-instances --instance-ids i-1234567890abcdef0
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
aws ec2 authorize-security-group-ingress \
--group-id sg-abc123 \
--protocol tcp --port 443 --cidr 0.0.0.0/0
Lambda Functions
aws lambda create-function \
--function-name my-function \
--runtime python3.12 \
--handler lambda_function.handler \
--role arn:aws:iam::123456789012:role/lambda-role \
--zip-file fileb://function.zip
aws lambda invoke --function-name my-function \
--payload '{"key": "value"}' output.json
aws lambda update-function-code \
--function-name my-function \
--zip-file fileb://function.zip
aws lambda list-functions --query 'Functions[].{Name:FunctionName,Runtime:Runtime}'
aws logs tail /aws/lambda/my-function --follow
CloudWatch
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-02T00:00:00Z \
--period 3600 --statistics Average
aws cloudwatch put-metric-alarm \
--alarm-name high-cpu \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 300 --threshold 80 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2 \
--alarm-actions arn:aws:sns:us-east-1:123456789012:alerts
aws logs start-query \
--log-group-name /aws/lambda/my-function \
--start-time $(date -d '1 hour ago' +%s) \
--end-time $(date +%s) \
--query-string 'fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 50'
IAM Management
aws iam create-user --user-name deploy-bot
aws iam create-access-key --user-name deploy-bot
aws iam attach-user-policy --user-name deploy-bot \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
aws iam create-role --role-name app-role \
--assume-role-policy-document file://trust-policy.json
aws iam list-users --query 'Users[].{Name:UserName,Created:CreateDate}'
aws iam list-attached-user-policies --user-name deploy-bot
aws sts get-caller-identity
Useful Patterns
aws ec2 wait instance-running --instance-ids i-1234567890abcdef0
INSTANCE_ID=$(aws ec2 run-instances \
--image-id ami-abc123 --instance-type t3.micro \
--query 'Instances[0].InstanceId' --output text)
aws s3api list-objects-v2 --bucket my-bucket --max-items 1000
aws ssm start-session --target i-1234567890abcdef0
aws ce get-cost-and-usage \
--time-period Start=2024-01-01,End=2024-02-01 \
--granularity MONTHLY --metrics BlendedCost \
--group-by Type=DIMENSION,Key=SERVICE