AWS CLI无效的JSON错误 - 期望用双引号括起来的属性名称

时间:2017-04-25 15:51:37

标签: javascript json amazon-web-services aws-api-gateway aws-cli

我正在用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'中。

3 个答案:

答案 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\"}}'

希望它有助于解决您的错误