我正在用javascript编写一个AWS reliant应用程序,我正在利用AWS CLI自动化我的AWS资源的构建过程。我正在尝试创建启用了CORS的API网关资源。在调用api网关CLI的put-integration-response
方法时,当我添加--response-parameters
参数时,我收到以下错误:
>> Error parsing parameter '--response-parameters': Invalid JSON: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
>> JSON received: {method.response.header.Access-Control-Allow-Origin:'*'}
以下是导致问题的--response-parameters参数:
--response-parameters {"method.response.header.Access-Control-Allow-Origin":"\'*\'"}
如果有帮助,这个论点是通过Grunt的grunt-exec插件提供的。究竟是什么导致了这个问题?我尝试添加更多双引号,但它们似乎没有出现在'JSON received'中。
答案 0 :(得分:1)
您可以通过“'”'''''''''''对静态值进行编码。
示例:
aws apigateway put-integration-response --rest-api-id xxxxx --resource-id xxxxxx --http-method GET --status-code 200 --response-parameters '{"method.response.header.Access-Control-Allow-Origin": "'"'"'*'"'"'"}'
我建议使用JavaScript SDK调用API网关来管理您的资源。您可以从example in the documentation
中找到更多信息答案 1 :(得分:1)
我在跟踪AWS Lambda Functions tutorial时遇到了同样的问题 无论我尝试什么,我无法获得响应模型参数来接受JSON(在Windows 10上)。我终于明白了:我创建了一个名为 response-models.json 的文件,文件第一行的内容为 {" application / json":& #34;清空"} ,我将其保存在当前目录中。然后,作为 response-models 参数的值,我使用 file://response-models.json 重要事项:文件必须以没有BOM的格式保存,以便只有ASCII字符才会出现,而不会出现其他乱码。 (我使用了Sublime Text,允许用UTF-8保存,没有BOM,以及许多其他格式。) Et Voila!我收到了以下回复:
{
"statusCode": "200",
"responseModels": {
"application/json": "Empty"
}
}
答案 2 :(得分:1)
这是here
中针对此问题的另一种解决方法在Windows上,基本上在JSON内的引号之前使用\: Linux / Mac:
--expression-attribute-values '{ ":u": {"S":"anotherUser"}}'
在Windows上将如下所示:
--expression-attribute-values '{ \":u\": {\"S\":\"anotherUser\"}}'
希望它有助于解决您的错误