我正在尝试使用此命令更新抓取工具:
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下使用
答案 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代码段的示例,但是您明白了。根据您使用的外壳将相同的概念应用于您的字符串。