2016-11-21 74 views
2

我正在尝试通过Amazon CLI为DNS-01验证在Route53中创建TXT记录。看起来我非常接近但可能遇到CLI问题(或者我看不到的格式问题)。正如你所看到的,它的抱怨,应该在引号中的价值,但确实是在引号已经...亚马逊CLI,路由53,TXT错误

命令行:

aws route53 change-resource-record-sets --hosted-zone-id ID_HERE --change-batch file://c:\dev\test1.json 

JSON文件:

{ 
"Changes": [ 
    { 
     "Action": "UPSERT", 
     "ResourceRecordSet": { 
      "Name": "DOMAIN_NAME_HERE", 
      "Type": "TXT", 
      "TTL": 60, 
      "ResourceRecords": [ 
       { 
        "Value": "test" 
       } 
      ] 
     } 
    } 
] 
} 

错误:

An error occurred (InvalidChangeBatch) when calling the ChangeResourceRecordSets operation: Invalid Resource Record: FATAL problem: InvalidCharacterString (Value should be enclosed in quotation marks) encountered with 'test' 

回答

1

这些引号是JSON引号,而那些引号不是他们要找的引号。

JSON字符串"test"对文字值test进行编码。

JSON字符串"\"test\""对文字值"test"进行编码。

(这是因为在JSON中,字符串中的字面值"以前导\转义)。

这听起来像他们想实际,文字引号内包括的价值,因此,如果您正在构建这个JSON手动您可能希望后者:"Value": "\"test\""

JSON库应该为你做这个,如果你通过它包含前导和尾随"的值。

+0

现货。谢谢!有趣的是,他们不希望所有的字符串参数都与这样的转义引号一起提供。 – BRass

+1

这是因为这是一个'TXT'记录,[它是一个带引号的字符串,根据定义](https://tools.ietf.org/html/rfc1464)...所以Route 53希望看到记录中的实际引号。 –

+0

*“TXT记录包含空格分隔的双引号字符串列表。”* - http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html#TXTFormat –