SuperAPI AI 工具集

aws-cli

部署与运维

查看项目

更新于 10-23 16:18

技能介绍

AWS CLI 技能用于指导 AI 智能体安全、高效地执行 aws 命令行操作。

用途 适用于用户运行或要求执行 AWS CLI 工作时,跨服务完成查询、检查和变更类命令。核心原则是:默认只读;在任何变更前,先确认身份、区域和影响范围(blast radius)。

使用方式:先确定上下文 在任何 AWS CLI 命令之前,先确定身份、区域和配置档案。 快路径:从本地配置解析上下文,不发起网络请求。区域和缓存的账户 ID 均来自本地文件,无需 sts 往返: ACCT="${AWS_EXPECTED_ACCOUNT_ID:-$(aws configure get expected_account_id 2>/dev/null)}" REGION="${AWS_REGION:-$(aws configure get region 2>/dev/null)}" echo "context: ${ACCT:-?} / ${REGION:-?} (profile ${AWS_PROFILE:-default})" 若两者都能解析,可跳过预先的 aws sts get-caller-identity 往返;认证问题会在第一条真实命令时暴露。在总结中说明所采用的上下文(如“Using cached context 123456789012 / us-east-1”)。 region 是标准 CLI 键;expected_account_id 是自定义键,CLI 本身忽略它,但 aws configure get 可读取。可一次性按 profile 存储,使其随凭据一起携带: aws configure set expected_account_id 123456789012 --profile <name> 冷路径:上下文未解析时,先确认三件事:身份(aws sts get-caller-identity 给出 account 与 principal)、区域(显式 --region <r> 或 AWS_REGION 环境变量,跨账户工作不要依赖默认 profile 区域)、配置档案(AWS_PROFILE=<name>,并向用户显示当前活跃 profile)。若 aws sts get-caller-identity 失败:停止,不要盲目重试,诊断缺失凭据、过期的 SSO 会话或错误的 profile。 变更前验证:快路径信任预期账户,但不证明当前已以该身份认证。在执行任何破坏性操作或针对生产账户操作前,确认实时身份与缓存一致: [ "$(aws sts get-caller-identity --query Account --output text)" = "$ACCT" ]
&& echo "identity OK" || echo "ACCOUNT MISMATCH — stop"

主要能力:输出过滤与分页 CLI 返回大量 JSON,应始终用 --query(JMESPath)和 --output 收窄输出。示例: aws ec2 describe-instances
--query 'Reservations[].Instances[].{Id:InstanceId,State:State.Name,Type:InstanceType,Name:Tags[?Key==Name]|[0].Value}'
--output table 人工审查用 --output table;管道给 jq 用 --output json;shell 循环用 --output text。 分页方面,默认 CLI 自动分页,在超大结果集上可能挂起。探索时可用 --max-items 50 限制数量、--no-paginate 获取单页原始结果(必要时使用 NextToken)、--page-size 100 调整 API 调用大小。

脚本中禁用分页器 CLI v2 默认将长输出通过 less 分页,非交互式 shell(CI、智能体运行、bash -c)中可能挂起。应在会话中 export AWS_PAGER="",或对单条命令使用 aws --no-cli-pager s3 ls;任何调用 aws 的脚本顶部都应设置 AWS_PAGER=""。

等待资源状态 不要用 sleep 轮询,CLI 内置 waiter 会代为轮询,例如: aws ec2 wait instance-running --instance-ids i-0abc... aws ec2 wait instance-terminated --instance-ids i-0abc... aws lambda wait function-updated --function-name F aws s3api wait bucket-exists --bucket B aws cloudformation wait stack-create-complete --stack-name S 各服务可用 waiter 可通过 aws <service> wait help 查看;默认轮询间隔和最大尝试次数因服务而异(常见 15 秒 × 40 次,约 10 分钟)。

发现与骨架生成 对不熟悉的命令,可用 aws lambda create-function --cli-auto-prompt 进行交互式参数补全;或生成全部参数的 JSON 骨架后填写并提交: aws lambda create-function --generate-cli-skeleton > req.json aws lambda create-function --cli-input-json file://req.json 适用于参数超过 5 个或存在嵌套结构的命令。

破坏性操作 在以下操作前应停止并向用户确认:delete-、terminate-、destroy-、remove-;覆盖现有资源的 put-* / create-;对 IAM、安全组或 KMS 的 update-;任何针对生产账户/profile 的操作;aws s3 rm --recursive、aws s3 sync --delete。破坏性操作优先使用支持的 --dry-run,展示将受影响的具体资源 ARN,等待用户明确确认。

区域与 Profile 卫生 可用 aws configure list 查看 profile、区域与密钥来源,aws configure list-profiles 列出所有命名 profile,aws sts get-caller-identity 确认身份。单条命令作用域可通过 AWS_PROFILE=staging AWS_REGION=us-west-2 aws s3 ls 设置而不改变环境。用户提到某区域的服务时显式传 --region,不要假设。

服务速查与错误处理 技能提供 S3、EC2、IAM、Lambda、CloudWatch Logs、ECS/Fargate、DynamoDB、Secrets Manager/SSM Parameter Store 的简明参考。常见错误包括:Unable to locate credentials(运行 aws configure 或 aws sso login --profile <name>);ExpiredToken(刷新 SSO 或轮换密钥);AccessDenied(展示完整错误,识别 principal、action、resource,不要扩大权限重试,报告给用户);ThrottlingException(退避并加抖动,不要紧密循环);RequestExpired(检查时钟偏移)。

输出约定 结果展示时:不超过 20 行用表格,超过 20 行或需管道时用 JSON;总结中始终包含区域和账户(如“In 123456789012 / us-east-1...”);破坏性提案展示 ARN 而非仅名称;原样引用 AWS 错误字符串,不要转述。

限制 该技能本身是操作规范与流程指引,不提供凭据、不改变 AWS 权限模型;实际可用性取决于本地 AWS CLI 版本、配置与账户权限。具体服务细节需参考对应参考文件,资料中未逐项展开。