如何通过AWS CLI查询使用指定lambda authorizer的API Gateway API列表
可以通过AWS CLI查询绑定了指定Lambda Authorizer的API Gateway列表,操作方法如下:
前置准备
提前获取目标Lambda Authorizer的完整ARN,格式参考:arn:aws:lambda:<AWS区域>:<AWS账号ID>:function:<Lambda函数名>,如果使用的是AWS中国区,前缀调整为arn:aws-cn:lambda。
查询REST API(v1版本API Gateway)
REST API使用apigateway接口组查询,可直接运行以下脚本批量遍历匹配:
# 替换为你自己的参数 TARGET_LAMBDA_ARN="你的Lambda函数完整ARN" REGION="你的AWS区域,例如us-east-1、cn-north-1" AUTH_URI="arn:aws:apigateway:${REGION}:lambda:path/2015-03-31/functions/${TARGET_LAMBDA_ARN}/invocations" # 遍历查询所有REST API的Authorizer配置 aws apigateway get-rest-apis --query 'items[*].{id:id,name:name}' --output json | jq -r '.[] | .id + " " + .name' | while read api_id api_name; do aws apigateway get-authorizers --rest-api-id $api_id --query "items[?authorizerUri=='${AUTH_URI}'].id" --output text | grep -q . && echo "REST API:${api_name}(ID:${api_id})绑定了目标Lambda Authorizer" done
查询HTTP API/WebSocket API(v2版本API Gateway)
HTTP API和WebSocket API使用apigatewayv2接口组查询,批量查询脚本如下:
# 替换为你自己的参数 TARGET_LAMBDA_ARN="你的Lambda函数完整ARN" REGION="你的AWS区域,例如us-east-1、cn-north-1" AUTH_URI="arn:aws:apigateway:${REGION}:lambda:path/2015-03-31/functions/${TARGET_LAMBDA_ARN}/invocations" # 遍历查询所有v2版本API的Authorizer配置 aws apigatewayv2 get-apis --query 'Items[*].{ApiId:ApiId,Name:Name,ProtocolType:ProtocolType}' --output json | jq -r '.[] | .ApiId + " " + .Name + " " + .ProtocolType' | while read api_id api_name protocol; do aws apigatewayv2 get-authorizers --api-id $api_id --query "Items[?AuthorizerUri=='${AUTH_URI}'].AuthorizerId" --output text | grep -q . && echo "${protocol} API:${api_name}(ID:${api_id})绑定了目标Lambda Authorizer" done
注意事项
- 脚本依赖
jq工具处理JSON输出,运行前请确保本地环境已安装该工具。 - 如果你的Lambda Authorizer绑定的是Lambda的特定版本/别名,
AUTH_URI末尾需要追加对应的版本/别名后缀,例如/invocations:prod,再运行脚本。 - 执行CLI前请确保你的AWS身份凭证具备以下权限:
apigateway:GetRestApis、apigateway:GetAuthorizers、apigatewayv2:GetApis、apigatewayv2:GetAuthorizers。
内容的提问来源于stack exchange,提问作者Irfan
相关产品推荐
相关产品推荐

