是否可通过AWS CLI删除不同区域下创建的所有Rest API?
解决方案
前提条件
- 已完成AWS CLI的身份认证配置,账号拥有API网关的查询、删除权限,以及EC2区域列表查询权限
- 已提前核对所有区域的Rest API资源,确认无需要保留的内容
单区域批量删除
- 先查询目标区域的所有Rest API,核对资源清单:
aws apigateway get-rest-apis --region <替换为目标区域ID> --query 'items[*].{ID:id,名称:name}' --output table
- 确认清单无误后执行单区域批量删除:
for api_id in $(aws apigateway get-rest-apis --region <替换为目标区域ID> --query 'items[*].id' --output text); do aws apigateway delete-rest-api --region <替换为目标区域ID> --rest-api-id $api_id echo "已删除API:$api_id" done
跨所有区域批量删除
直接执行以下脚本即可遍历所有已启用的AWS区域,自动删除各区域下的所有Rest API:
for region in $(aws ec2 describe-regions --query 'Regions[*].RegionName' --output text); do echo "正在处理区域:$region" api_ids=$(aws apigateway get-rest-apis --region $region --query 'items[*].id' --output text) if [ -n "$api_ids" ]; then for api_id in $api_ids; do aws apigateway delete-rest-api --region $region --rest-api-id $api_id echo "已删除区域 $region 下的API:$api_id" done else echo "区域 $region 无待删除的Rest API" fi done
重要提醒:删除操作不可逆,执行前务必先核对查询到的API清单,避免误删业务资源。删除后API网关会有1-5分钟的资源回收周期,短时间内在控制台看到已删除的API属于正常现象,可稍后刷新确认。
如果有指定区域不需要清理,可在遍历区域的循环中添加排除规则即可。
内容的提问来源于stack exchange,提问作者wait3
相关产品推荐
相关产品推荐

