当设置了--response-parameters选项时,put-gateway-response失败

时间:2017-10-04 14:29:52

标签: amazon-web-services aws-api-gateway

我尝试使用aws cli设置一些自定义API网关响应。这是我使用的命令(只有相关参数):

aws apigateway put-gateway-response --response-parameters method.response.header.Access-Control-Allow-Origin='"'"'*'"'"'

完整的命令是:

  

aws apigateway put-gateway-response --rest-api-id w1s3nc4dxd --response-type UNAUTHORIZED --status-code 401 --response-parameters method.response.header.Access-Control-Allow-Origin =& #39;"'"' *'"'"' --response-templates' {" application / json":" {\" errorcode \":401,\" message \&#34 ;:$ context.error.messageString}" }' --region eu-west-1

它失败了:

  

调用PutGatewayResponse操作时发生错误(BadRequestException):指定了无效的映射表达式:验证结果:警告:[],错误:[指定的映射表达式无效:method.response.header.Access-Control-Allow-Origin]

如果没有该参数执行它,一切正常。我也尝试过json格式和相同的结果。

--response-parameters '{"method.response.header.Access-Control-Allow-Origin":"'"'*'"'"}'

有什么见解?提前谢谢。

---编辑

只是为了进一步澄清。这失败了所有类型的响应参数,这不仅涉及Access-Control-Allow-Origin标头。

2 个答案:

答案 0 :(得分:0)

我认为网关响应参数的格式应为gatewayresponse.header.[name]。那将是地图键(目标),值(源)是静态值(就像你有的)或映射表达式到method.request.(path|querystring|header).[name]stageVariables.[name]context.[name]

答案 1 :(得分:0)

尝试使用 --response-parameters '{"gatewayresponse.header.Access-Control-Allow-Origin":"'"'*'"'"}',它对我有用