使用AWS CLI开启API Gateway方法级追踪时路径字符报错求助
解决AWS CLI更新API Gateway方法全量追踪的路径错误问题
错误原因分析
- JSON Patch路径冗余:使用
update-method命令时,已经通过--rest-api-id、--resource-id、--http-method指定了目标方法,不需要在patch路径中重复资源路径和方法名(/~1RetrieveAggregate~1{cust_id}/POST),冗余路径会导致API识别失败。 - Shell解析冲突:直接在CLI中输入
{cust_id}时,shell会将大括号视为通配符或命令替换标记,引发参数解析错误。
正确解决方案
方案1:使用JSON文件输入(推荐)
修改payload.json内容,移除patch路径中多余的资源和方法前缀,仅保留方法内部属性路径:
{ "patchOperations": [ { "op": "replace", "path": "/logging/loglevel", "value": "INFO" }, { "op": "replace", "path": "/logging/dataTrace", "value": "true" } ] }
执行原CLI命令即可:
aws apigateway update-method --rest-api-id tu******* --resource-id 7**** --http-method POST \ --cli-input-json file://payload.json
方案2:直接在CLI中指定patch操作
使用正确的短路径,同时用双引号包裹参数避免shell解析问题:
aws apigateway update-method --rest-api-id tu******** --resource-id 7**** --http-method POST \ --patch-operations "op=replace,path=/logging/loglevel,value=INFO" \ --patch-operations "op=replace,path=/logging/dataTrace,value=true" \ --region "us-east-1"
如果必须使用完整路径(不推荐),需对大括号做URL编码:{}分别替换为%7B和%7D,并用单引号包裹参数:
aws apigateway update-method --rest-api-id tu******** --resource-id 7**** --http-method POST \ --patch-operations 'op=replace,path=/~1RetrieveAggregate~1%7Bcust_id%7D/POST/logging/loglevel,value=INFO' \ --region "us-east-1"
关键说明
update-method命令已通过参数锁定目标方法,patch路径只需指向方法内部的属性节点,无需重复完整资源路径。- URL编码规则中,
{对应%7B,}对应%7D,这是解决shell解析和API路径识别冲突的通用方式。
内容的提问来源于stack exchange,提问作者Deepak Kumar
相关产品推荐
相关产品推荐

