如何将json作为参数传递给aws cli?

时间:2018-02-15 15:43:19

标签: amazon-web-services windows-10 aws-cli aws-glue

我正在尝试使用此命令更新抓取工具:

aws glue update-crawler --name my-crawler --configuration '{"Version":1.0,"CrawlerOutput":{"Partitions":{"AddOrUpdateBehavior":"InheritFromTable"}}}' --region us-west-2

如上所述here

而不是更新我得到了:

An error occurred (InvalidInputException) when calling the UpdateCrawler operation: Crawler configuration not valid: Error parsing JSON: Received JsonParseException: Unexpected character (''' (code 39)): expected a valid value (number, String, array, object, 'true', 'false' or 'null'). Check that your JSON is well formed. For more information about the crawler configuration structure, see http://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-crawling.html.

jsonlint告诉我json没问题。

有什么问题?如何将json作为aws cli的参数传递?

cli在windows 10下使用

2 个答案:

答案 0 :(得分:2)

你必须在Windows下转义引号:

aws glue update-crawler --name my-crawler --configuration "{\"Version\":1.0,\"CrawlerOutput\":{\"Partitions\":{\"AddOrUpdateBehavior\":\"InheritFromTable\"}}}" --region us-west-2

答案 1 :(得分:1)

对于Windows,您必须进行一些“特殊”转义,这是我学到的很难的方法。采取以下JSON代码段...

{ "#t": "timestamp" }`

这是在Windows上输入的方式...

DOS

aws dynamodb scan --table-name MyTable --region "us-east-1" --profile dev --projection-expression "failureKey, #t" --expression-attribute-names "{ ""#t"": ""timestamp"" }"

对于Powershell,这有点不同...

Powershell

aws dynamodb scan --table-name "MyTable" --region "us-east-1" --profile "dev" --projection-expression "failureKey, #t" --expression-attribute-names '{ \"#t\": \"timestamp\" }'

使用带有较短JSON代码段的示例,但是您明白了。根据您使用的外壳将相同的概念应用于您的字符串。