如何通过AWS CLI查找Amazon API Gateway中API密钥的所属用户
解决API Gateway API密钥与用户关联的CLI操作方案
一、提前配置:给API密钥添加用户关联标识
如果还未给目标API Key配置用户关联信息,优先通过标签或描述字段添加,方便后续查询:
添加标签
先通过get-api-key获取API Key的ARN(或直接构造ARN:arn:aws:apigateway:<你的区域>::/apikeys/<API_KEY_ID>),然后执行标签命令:
aws apigateway tag-resource --resource-arn arn:aws:apigateway:us-east-1::/apikeys/keyabc123_ --tags UserId=user_001,Username=john_smith --profile myProfileabc
或更新描述字段
如果更倾向用描述字段记录用户信息:
aws apigateway update-api-key --api-key keyabc123_ --patch-operations op=replace,path=/description,value="关联用户:john_smith(ID:user_001)" --profile myProfileabc
二、查询指定API密钥的关联用户信息
方法1:直接提取API Key的用户关联数据
执行get-api-key时通过--query参数过滤出标签、描述等关键信息:
aws apigateway get-api-key --api-key keyabc123_ --include-value --query '[tags, description]' --profile myProfileabc
返回结果会直接展示你提前配置的用户关联内容。
方法2:通过标签反向查询(已知用户找API Key)
如果需要根据用户ID/用户名查找对应的API Key,用标签过滤:
aws apigateway get-api-keys --query "items[?tags.UserId=='user_001']" --profile myProfileabc
三、结合使用计划的关联查询(如果API Key绑定了使用计划)
如果你的API Key绑定了使用计划,可通过以下步骤拓展查询:
- 先获取API Key关联的使用计划ID:
aws apigateway get-api-key --api-key keyabc123_ --query 'usagePlanIds' --profile myProfileabc
- 根据使用计划ID查询其关联信息(如果使用计划备注了用户组/用户信息):
aws apigateway get-usage-plan --usage-plan-id <获取到的使用计划ID> --query '[name, description, apiKeys]' --profile myProfileabc
关键说明
API Gateway的API Key本身没有内置的用户关联字段,必须通过自定义标签、描述字段、使用计划备注等方式提前关联用户信息,这是最直接可行的方案。如果你的API采用IAM认证+API Key的组合,可直接从CloudWatch日志的userIdentity字段获取IAM用户信息,无需额外配置。
内容的提问来源于stack exchange,提问作者JukkaT
相关产品推荐
相关产品推荐

