mcpField
M
mastering-aws-cli

mastering-aws-cli

github.com/spillwavesolutions云与 DevOps92.6k 次安装43 周前更新
代码仓库

关于 mastering-aws-cli

mastering-aws-cli 是面向有经验开发者的参考技能,用于通过 AWS CLI v2 管理 AWS 服务。内容涵盖命令示例、服务导航、配置指引,以及脚本编写和故障排查模式。

主要功能

  1. 01AWS CLI v2 命令参考
  2. 02服务决策树与指南
  3. 03配置文件、SSO 和凭证
  4. 04JMESPath 筛选与输出选项
  5. 05等待器、别名和命令框架
  6. 06安全实践与故障排查

适用场景

  1. 01在终端管理 AWS 服务
  2. 02在脚本中筛选资源输出
  3. 03配置配置文件和 SSO 访问
  4. 04诊断常见 CLI 错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/spillwavesolutions/mastering-aws-cli --skill mastering-aws-cli

安装后在 Claude Code 中输入/mastering-aws-cli确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
README.md
references/
advanced-patterns.md
eks.md
bastion-tunneling.md
ecr.md
dynamodb.md
github-cicd.md
aurora.md
ecs.md
lambda.md
kinesis.md
msk.md
glue.md
s3.md
iam-security.md
private-parameters.md
vpc-networking.md
setup.md

详细介绍

AWS CLI v2 快速参考

一个用于从终端管理 AWS 服务的统一工具。本指南重点介绍 CLI v2 功能、实用示例,以及面向经验丰富开发者的高级模式。

快速入门

# Verify installation and version
aws --version

# Interactive configuration
aws configure                    # Access keys + region + output format
aws configure sso               # IAM Identity Center (SSO) - recommended

# Verify identity
aws sts get-caller-identity     # Shows Account, UserId, ARN

# Enable auto-prompt for command discovery
aws dynamodb --cli-auto-prompt

高级用户技巧

# See all waiter commands for a service
aws ec2 wait help

# Generate command skeleton (fill in the blanks)
aws lambda create-function --generate-cli-skeleton > create-fn.json

# Create CLI alias for common commands
aws configure set cli_alias.whoami "sts get-caller-identity"
aws whoami  # Now works!

# Disable pager for scripting
export AWS_PAGER=""

有关 JMESPath 精通技巧和自动化窍门,请参阅高级模式。

全局选项

标志说明
--profile NAME使用 ~/.aws/credentials 中的命名配置文件
--region REGION覆盖默认区域(例如 us-east-1)
--output FORMAT输出格式:json(默认)、text、table、yaml、yaml-stream
--query EXPR使用 JMESPath 表达式筛选输出
--no-paginate禁用自动分页(仅显示第一页)
--dry-run检查权限,但不执行操作(EC2 等)
--debug详细的 HTTP/API 调试日志
--cli-auto-prompt交互式参数补全
--no-cli-pager禁用输出分页

决策树

计算与容器
Need compute?
├── Serverless functions ────────────► Lambda (references/lambda.md)
├── Docker containers
│   ├── Managed orchestration ───────► ECS (references/ecs.md)
│   ├── Kubernetes ──────────────────► EKS (references/eks.md)
│   └── Container registry ──────────► ECR (references/ecr.md)
└── Virtual machines ────────────────► EC2 (use aws ec2 commands)
数据与存储
Need data storage?
├── Object/blob storage ─────────────► S3 (references/s3.md)
├── NoSQL (key-value/document) ──────► DynamoDB (references/dynamodb.md)
├── Relational SQL ──────────────────► Aurora/RDS (references/aurora.md)
├── Data catalog & ETL ──────────────► Glue (references/glue.md)
└── Data warehouse ──────────────────► Redshift (aws redshift commands)
流式处理与消息传递
Need streaming/messaging?
├── Kafka-compatible ────────────────► MSK (references/msk.md)
├── Real-time streams ───────────────► Kinesis (references/kinesis.md)
├── Message queues ──────────────────► SQS (aws sqs commands)
└── Pub/Sub notifications ───────────► SNS (aws sns commands)
安全与访问
Need security/access management?
├── Users, roles, policies ──────────► IAM (references/iam-security.md)
├── Secrets & credentials ───────────► Secrets Manager/SSM (references/private-parameters.md)
├── Private network access ──────────► VPC (references/vpc-networking.md)
└── Secure tunneling ────────────────► SSM/Bastion (references/bastion-tunneling.md)

参考文件导航

参考资料说明关键触发词
设置安装、配置、配置文件、SSOinstall、configure、sso、profile
IAM 与安全角色、策略、STS、MFA、跨账户iam、role、policy、sts、assume-role
Lambda函数、层、别名、URL、事件lambda、serverless、function
ECS集群、任务、服务、Fargateecs、fargate、task、container
EKS集群、节点组、kubeconfig、IRSAeks、kubernetes、kubectl、k8s
ECR存储库、身份验证、扫描、生命周期ecr、docker、registry、image
S3存储桶、对象、同步、预签名、生命周期s3、bucket、upload、sync
DynamoDB表、项目、查询、流、备份dynamodb、ddb、nosql
Aurora/RDS集群、serverless v2、克隆、蓝绿部署rds、aurora、mysql、postgresql
Glue目录、爬虫、ETL 作业、工作流glue、etl、catalog、crawler
MSKKafka 集群、无服务器、配置msk、kafka、streaming
Kinesis数据流、Firehose、使用者kinesis、stream、firehose
密钥与参数Parameter Store、Secrets Manager、轮换ssm、secrets、parameter、rotation
VPC 与网络VPC、子网、安全组、端点vpc、subnet、security-group、endpoint
堡垒机与隧道SSM Session Manager、端口转发bastion、tunnel、ssm、ssh
GitHub CI/CDOIDC、GitHub Actions、CodeBuildgithub、actions、oidc、cicd
高级模式JMESPath、等待器、骨架、别名jmespath、query、waiter、alias

环境变量

变量用途示例
AWS_ACCESS_KEY_ID用于身份验证的访问密钥AKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY用于身份验证的秘密密钥wJalrXUtnFEMI/...
AWS_SESSION_TOKEN会话令牌(临时凭证)用于 STS assume-role
AWS_PROFILE要使用的命名配置文件production
AWS_REGION请求使用的 AWS 区域us-west-2
AWS_DEFAULT_OUTPUT默认输出格式json、text、table
AWS_PAGER分页器程序(设为空以禁用)""
AWS_CONFIG_FILE自定义配置文件路径~/.aws/config
AWS_SHARED_CREDENTIALS_FILE自定义凭证文件路径~/.aws/credentials
AWS_CA_BUNDLE自定义 CA 证书包/path/to/cert.pem
AWS_RETRY_MODE重试模式standard、adaptive

凭证优先级

CLI 按以下顺序解析凭证(匹配到的第一个来源优先):

  1. 命令行选项(--profile、显式凭证)
  2. 环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY)
  3. Web 身份令牌(EKS IRSA、OIDC)
  4. SSO 凭证(IAM Identity Center)
  5. 凭证文件(~/.aws/credentials)
  6. 配置文件(含有 credential_process 的 ~/.aws/config)
  7. 容器凭证(ECS 任务角色)
  8. 实例元数据(EC2 实例配置文件、IMDSv2)

常见模式

切换配置文件
# Use specific profile for one command
aws s3 ls --profile production

# Set default profile for session
export AWS_PROFILE=production

# List configured profiles
aws configure list-profiles
使用 JMESPath 筛选输出
# Get specific fields
aws ec2 describe-instances \
    --query 'Reservations[*].Instances[*].[InstanceId,State.Name]' \
    --output table

# Filter running instances
aws ec2 describe-instances \
    --query 'Reservations[*].Instances[?State.Name==`running`].InstanceId' \
    --output text
等待资源状态
# Wait for instance to be running
aws ec2 wait instance-running --instance-ids i-1234567890abcdef0

# Wait for Lambda function update
aws lambda wait function-updated --function-name my-function

最佳实践

类别建议
安全性使用 aws configure sso,而不是长期有效的访问密钥
安全性计算资源(EC2/Lambda/ECS)使用 IAM 角色,而不是嵌入密钥
安全性为敏感操作启用 MFA
脚本编写使用 --output json 或 --output text 进行解析
脚本编写使用 --query 筛选数据并减少输出
安全性在执行破坏性操作前使用 --dry-run
性能使用 --page-size 控制大型列表的内存占用
区域在脚本中显式设置区域,避免意外情况
成本使用生命周期策略(S3/ECR)自动清理
调试使用 --debug 查看原始 HTTP 请求/响应

常见错误速查

错误原因修复方法
ExpiredToken会话凭证已过期运行 aws sso login 或 aws sts get-session-token
AccessDenied缺少 IAM 权限检查 IAM 策略;使用 --debug 查看所需操作
InvalidClientTokenId访问密钥无效验证 AWS_ACCESS_KEY_ID 或运行 aws configure
UnauthorizedAccess区域或账户错误检查 --region 标志和 aws sts get-caller-identity
ThrottlingExceptionAPI 速率限制已超出添加带指数退避的重试逻辑
NoCredentialProviders未找到凭证检查凭证链;运行 aws configure list

如需详细的故障排除信息,请参阅 设置。

不适用场景

  • AWS SDK 代码 — 对于 boto3、AWS SDK for JavaScript 等,请使用编程文档
  • CloudFormation/Terraform — 此技能介绍 CLI 命令,不涵盖 IaC 模板
  • 控制台 UI 操作步骤 — 本文侧重 CLI;控制台操作指南请参阅 AWS 文档
  • 定价/账单 — 请使用 AWS 定价计算器或 Cost Explorer 文档

快速命令参考

# Identity & Access
aws sts get-caller-identity
# → {"Account": "123456789012", "UserId": "AIDAEXAMPLE", "Arn": "arn:aws:iam::123456789012:user/dev"}

aws sts assume-role --role-arn arn:aws:iam::123456789012:role/Admin --role-session-name mysession
# → {"Credentials": {"AccessKeyId": "ASIA...", "SecretAccessKey": "...", "SessionToken": "..."}}

# S3
aws s3 ls
# → 2024-01-15 bucket-name-1
# → 2024-02-20 bucket-name-2

aws s3 sync ./local s3://bucket/prefix --delete

# Lambda
aws lambda invoke --function-name fn response.json
# → {"StatusCode": 200, "ExecutedVersion": "$LATEST"}

aws lambda update-function-code --function-name fn --zip-file fileb://code.zip
# → {"FunctionName": "fn", "LastModified": "2024-12-28T...", "State": "Active"}

# ECS
aws ecs list-clusters
# → {"clusterArns": ["arn:aws:ecs:us-east-1:123456789012:cluster/prod"]}

aws ecs update-service --cluster prod --service api --force-new-deployment

# EKS
aws eks update-kubeconfig --name my-cluster
# → Added new context arn:aws:eks:us-east-1:123456789012:cluster/my-cluster

aws eks list-clusters
# → {"clusters": ["my-cluster", "dev-cluster"]}

# Secrets
aws secretsmanager get-secret-value --secret-id prod/api/key --query SecretString --output text
# → sk_live_xxxxxxxxxxxxx

aws ssm get-parameter --name /app/prod/db/host --with-decryption --query Parameter.Value --output text
# → db.example.com

# Debugging
aws ssm start-session --target i-0123456789abcdef0
# → Starting session with SessionId: user-0a1b2c3d4e5f67890

评论

支持 Markdown