2017-10-04 46 views
0

我想使用aws cli设置一些自定义的API网关响应。这是我使用的命令(仅相关的参数):当设置了--response-parameters选项时,put-gateway-response失败

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

完整的命令是:

AWS apigateway放网关响应--rest -api-id w1s3nc4dxd --response-type UNAUTHORIZED --status-code 401 --response-parameters method.response.header.Access-Control-Allow-Origin =''''''''''''--response -templates'{“application/json”:“{\”errorcode \“:401,\”message \“:$ context.error.messageString}”}'--region eu-west-1

它失败了个:

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

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

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

任何见解?提前致谢。

---编辑

只是一个额外的澄清。这会失败,并带有所有类型的响应参数,这不仅涉及访问控制 - 允许源头。

+0

并启用CORS? –

+0

嗯,我不确定为什么CORS与此相关。我的一些终点有一些启用了CORS,而另一些则没有。试图设置一个头到API网关响应。为了使它更清楚,无论响应参数是什么,它都会失败。 – RoberMP

回答

0

我相信网关响应参数的格式应该是gatewayresponse.header.[name]。这将是在地图键(目标),和值(源)是一个静态值(如你有)或映射表达式method.request.(path|querystring|header).[name]stageVariables.[name]context.[name]