Cloudfront 分发的批量失效的 JSON 是什么样子的?

What does the JSON for batch invalidation of a Cloudfront distribution look like?

我正在尝试使用(截至目前)实验性 aws cloudfront CLI tool 使 AWS Cloudfront 分布上的单个文件无效。我不知道如何格式化它期望传递给 --invalidation-batch 参数的 JSON。

我找到的唯一文档只解释了它期望的 XML,但我很难将其翻译成 JSON:http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateInvalidation.html

我试过:

{
   "Paths" : {
       "Quantity" : 1,
       "Items" : ["/foobar.js"]
   },
   "CallerReference" : "foo-bar-baz"
}

有没有人用过这个并想出格式化 JSON?

您可以使用以下命令生成示例 JSON。

$ aws cloudfront create-invalidation --generate-cli-skeleton | vi -

输出:

{
"DistributionId": "",
"InvalidationBatch": {
    "Paths": {
        "Quantity": 0,
        "Items": [
            ""
        ]
    },
    "CallerReference": ""
}
}

这是一个完整的工作示例,它是从 Bash 脚本执行的,包括处理为每个失效创建唯一 ID 的需要(对于我的目的而言这里足够唯一):

INVALIDATION_ID=$(date +"%S")
INVALIDATION_JSON="{
    \"DistributionId\": \"YOUR_ID\",
    \"InvalidationBatch\": {
        \"Paths\": {
            \"Quantity\": 2,
            \"Items\": [
                \"/foo.png\",
                \"/bar.jpg\"
            ]
        },
        \"CallerReference\": \"$INVALIDATION_ID\"
    }
}"

aws cloudfront create-invalidation --cli-input-json "$INVALIDATION_JSON"