使用aws-cli在AWS API Gateway中启用CORS

时间:2018-10-02 22:14:19

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

我目前正在编写脚本,以在将资源添加到AWS API Gateway上的API端点后以编程方式启用CORS。在研究了放置积分响应功能数小时之后。我几乎取得了突破,但是这是我遇到的错误:

An error occurred (BadRequestException) when calling the 
PutIntegrationResponse operation: Invalid mapping expression specified: 
Validation Result: warnings : [], errors : [No method response exists 
for method.]

这是我用来启用CORS的脚本:

aws apigateway put-integration-response --rest-api-id XXXXX --resource 
-id XXXX --http-method GET --status-code 200 --selection-pattern 200 -- 
response-parameters '{"method.reponse.header.Access-Control-Allow- 
Origin": "'"'*'"'", "method.response.header.Access-Control-Allow- 
Headers": "'"'integration.request.header.Authorization'"'"}'

我发现奇怪的是,AWS文档似乎与当前版本的aws-cli已经过时了,我花了几个小时来解决api调用遇到的一些基本问题。

将对任何想法表示感谢。

干杯! 尼亚

1 个答案:

答案 0 :(得分:0)

在您的aws apigateway put-integration-response的AWS CLI命令中发现的问题对

  1. 有错字

method.reponse.header.Access-Control-Allow-Origin

它必须是:

   method.response.header.Access-Control-Allow-Origin
  1. 要将值“ *”设置为Access-Control-Allow-Origin,您需要使用"'"'"'*'"'"'"而不是"'"'*'"'" 在响应参数中,您可以设置method.reponse.header.Access-Control-Allow-Origin,但不能设置method.response.header.Access-Control-Allow-Headers
  2. 错误原因
  

PutIntegrationResponse操作:指定了无效的映射表达式

是因为您试图在method.response.header.Access-Control-Allow-Headers中设置response-parameters

下面应该是最终的AWS CLI命令

aws apigateway put-integration-response --rest-api-id XXXXX --resource-id XXXX --http-method GET --status-code 200 --selection-pattern 200 
--response-parameters '{"method.reponse.header.Access-Control-Allow-Origin": "'"'"'*'"'"'"}'