You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量删除无Key-ID的AWS API Gateway未使用API密钥?

批量删除未使用的AWS API Gateway API密钥

如果你有大量未使用的API密钥,无需逐个在控制台操作,可通过AWS CLI结合命令行工具批量处理,步骤如下:

1. 筛选并导出未使用的API密钥ID

首先需要获取所有未关联到API阶段的密钥ID(这类密钥通常属于未使用状态):

  • 导出所有未使用的密钥ID到文件:
aws apigateway get-api-keys --include-values false --query "items[?stageKeys == `[]`].id" --output text > unused-api-keys.txt

参数说明:

  • --include-values false:仅返回密钥元数据(不返回密钥值),提升查询效率
  • --query:过滤出stageKeys为空数组的密钥(即未关联任何API部署阶段的密钥)
  • --output text:将结果以文本格式输出,方便后续遍历

如果密钥总数超过500(AWS CLI默认分页上限),使用分页器自动处理所有结果:

aws paginator get-api-keys --include-values false --query "items[?stageKeys == `[]`].id" --output text | tr '\t' '\n' > unused-api-keys.txt

2. 批量删除密钥

遍历导出的密钥ID文件,执行删除操作:

  • 先执行测试(仅打印要删除的ID,不实际删除):
while read -r key_id; do
  if [ -n "$key_id" ]; then
    echo "待删除API密钥ID:$key_id"
  fi
done < unused-api-keys.txt
  • 确认无误后,执行实际删除:
while read -r key_id; do
  if [ -n "$key_id" ]; then
    aws apigateway delete-api-key --api-key "$key_id"
  fi
done < unused-api-keys.txt

注意事项

  • 确保执行命令的IAM实体拥有apigateway:GetApiKeys和apigateway:DeleteApiKey权限
  • 如果需要删除的是曾使用但已废弃的密钥(非未关联状态),需结合CloudWatch日志或API Gateway使用统计筛选目标密钥ID后再执行删除
  • 大批量删除时,可适当添加延迟(如在循环内加入sleep 0.1)避免触发API请求频率限制

内容的提问来源于stack exchange,提问作者user2913139

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:15:34