Overview
Command-line operation skills for AWS services such as EC2, S3, IAM, and Lambda.
Configuration and Authentication
# 配置凭证
aws configure
aws configure --profile myprofile
# 查看配置
aws configure list
aws configure list --profile myprofile
# 配置文件位置
~/.aws/credentials
~/.aws/config
Using Environment Variables
export AWS_ACCESS_KEY_ID=xxx export AWS_SECRET_ACCESS_KEY=xxx export AWS_DEFAULT_REGION=us-east-1
Using Profilesexport AWS_PROFILE=myprofile aws s3 ls --profile myprofile
Getting the Current Identityaws sts get-caller-identity
## EC2 实例
### 实例管理
```bash
# 列出实例
aws ec2 describe-instances
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running"
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,PublicIpAddress]' --output table
# 启动/停止实例
aws ec2 start-instances --instance-ids i-1234567890abcdef0
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 reboot-instances --instance-ids i-1234567890abcdef0
# 终止实例
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
# 创建实例
aws ec2 run-instances \
--image-id ami-12345678 \
--instance-type t3.micro \
--key-name my-key \
--security-group-ids sg-12345678 \
--subnet-id subnet-12345678 \
--count 1
Security Groups
# 列出安全组
aws ec2 describe-security-groups
aws ec2 describe-security-groups --group-ids sg-12345678
# 创建安全组
aws ec2 create-security-group \
--group-name my-sg \
--description "My security group" \
--vpc-id vpc-12345678
# 添加入站规则
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 22 \
--cidr 0.0.0.0/0
# 删除规则
aws ec2 revoke-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 22 \
--cidr 0.0.0.0/0
S3 Storage
Basic Operations
# 列出桶
aws s3 ls
# 列出对象
aws s3 ls s3://bucket-name/
aws s3 ls s3://bucket-name/prefix/ --recursive
# 创建桶
aws s3 mb s3://bucket-name
aws s3 mb s3://bucket-name --region us-west-2
# 删除桶
aws s3 rb s3://bucket-name
aws s3 rb s3://bucket-name --force # 包括内容
File Operations
# 上传文件
aws s3 cp file.txt s3://bucket-name/
aws s3 cp file.txt s3://bucket-name/path/file.txt
# 下载文件
aws s3 cp s3://bucket-name/file.txt ./
aws s3 cp s3://bucket-name/path/ ./ --recursive
# 同步目录
aws s3 sync ./local-dir s3://bucket-name/prefix/
aws s3 sync s3://bucket-name/prefix/ ./local-dir
aws s3 sync ./local-dir s3://bucket-name/ --delete # 删除目标多余文件
# 删除对象
aws s3 rm s3://bucket-name/file.txt
aws s3 rm s3://bucket-name/prefix/ --recursive
# 移动/重命名
aws s3 mv s3://bucket-name/old.txt s3://bucket-name/new.txt
Advanced Operations
# 预签名 URL
aws s3 presign s3://bucket-name/file.txt --expires-in 3600
# 设置公开访问
aws s3api put-object-acl --bucket bucket-name --key file.txt --acl public-read
# 查看桶策略
aws s3api get-bucket-policy --bucket bucket-name
# 设置生命周期
aws s3api put-bucket-lifecycle-configuration \
--bucket bucket-name \
--lifecycle-configuration file://lifecycle.json
IAM Management
# 列出用户
aws iam list-users
# 创建用户
aws iam create-user --user-name myuser
# 创建访问密钥
aws iam create-access-key --user-name myuser
# 附加策略
aws iam attach-user-policy \
--user-name myuser \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
# 列出角色
aws iam list-roles
# 获取角色
aws iam get-role --role-name myrole
Lambda Functions
# 列出函数
aws lambda list-functions
# 调用函数
aws lambda invoke \
--function-name my-function \
--payload '{"key": "value"}' \
output.json
# 查看函数配置
aws lambda get-function --function-name my-function
# 更新函数代码
aws lambda update-function-code \
--function-name my-function \
--zip-file fileb://function.zip
# 查看日志
aws logs filter-log-events \
--log-group-name /aws/lambda/my-function \
--start-time $(date -d '1 hour ago' +%s)000
EKS Clusters
# 列出集群
aws eks list-clusters
# 获取集群信息
aws eks describe-cluster --name my-cluster
# 更新 kubeconfig
aws eks update-kubeconfig --name my-cluster --region us-east-1
# 列出节点组
aws eks list-nodegroups --cluster-name my-cluster
Common Scenarios
Scenario 1: Batch Operations on Instances
# 获取所有运行中实例 ID
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query 'Reservations[*].Instances[*].InstanceId' \
--output text
# 批量停止
aws ec2 stop-instances --instance-ids $(aws ec2 describe-instances \
--filters "Name=tag:Environment,Values=dev" \
--query 'Reservations[*].Instances[*].InstanceId' \
--output text)
Scenario 2: Large File Transfer to S3
# 多部分上传(自动)
aws s3 cp large-file.zip s3://bucket-name/ \
--storage-class STANDARD_IA
# 配置传输加速
aws s3api put-bucket-accelerate-configuration \
--bucket bucket-name \
--accelerate-configuration Status=Enabled
Scenario 3: Querying CloudWatch Logs
# 查询日志
aws logs filter-log-events \
--log-group-name /aws/lambda/my-function \
--filter-pattern "ERROR" \
--start-time $(date -d '1 hour ago' +%s)000
# 实时跟踪
aws logs tail /aws/lambda/my-function --follow
Troubleshooting
| Issue | Troubleshooting Method |
|---|---|
| Authentication Failure | aws sts get-caller-identity |
| Insufficient Permissions | Check the IAM policy |
| Incorrect Region | Check the --region parameter |
| Timeout | Check the network and increase the timeout setting |
# 调试模式
aws s3 ls --debug
# 检查配置
aws configure list