【问题标题】:Ho to fix aws-cli cloudfront update distribution command?如何修复 aws-cli cloudfront update 分发命令?
【发布时间】:2019-07-13 05:42:47
【问题描述】:

我一直在尝试执行下面的命令,但它导致了错误

aws cloudfront update-distribution --id E29BDBENPXM1VE \ 
--Origins '{ "Items": [{
                    "OriginPath": "", 
                    "CustomOriginConfig": {
                        "OriginSslProtocols": {
                            "Items": [
                                "TLSv1", 
                                "TLSv1.1", 
                                "TLSv1.2"
                            ], 
                            "Quantity": 3
                        }
                    }
                }
            ]
        }'

错误::: 未知选项:{ "Items": [{ "源路径": "", "CustomOriginConfig": { “OriginSsl协议”:{ “项目”: [ "TLSv1", "TLSv1.1", “TLSv1.2” ], “数量”:3 } } } ] }, --起源

我必须删除cloudfront : OriginSslProtocols:SSLv3

aws cloudfront update-distribution --id E29BDBENPXM1VE \ 
--Origins '{ "Items": [{
                    "OriginPath": "", 
                    "CustomOriginConfig": {
                        "OriginSslProtocols": {
                            "Items": [
                                "TLSv1", 
                                "TLSv1.1", 
                                "TLSv1.2"
                            ], 
                            "Quantity": 3
                        }
                    }
                }
            ]
        }'

1) 如果无法修复上述代码,如果除了以下命令之外还有其他命令可以禁用/删除 OriginSslProtocols:SSLv3

aws cloudfront update-distribution --id E29BDBENPXM1VE --distribution-config  file://secure-ssl.json --if-match E35YV3CGILXQDJ

【问题讨论】:

    标签: amazon-web-services


    【解决方案1】:

    您使用了正确的命令,应该可以做您想做的事情。
    但是,它稍微复杂一些。

    cli 命令 aws cloudfront update-distribution 的相应参考页面显示:

    更新分配时,必填字段比创建分配时要多。

    这就是为什么您必须遵循 cli 参考 [1] 中给出的步骤:

    • 提交 GetDistributionConfig 请求以获取分发的当前配置和 Etag 标头。
    • 更新在响应您的 GetDistributionConfig 请求时返回的 XML 文档以包含您的更改。
    • 提交 UpdateDistribution 请求以更新您的分发配置:
      • 在请求正文中,包含您在第 2 步中更新的 XML 文档。请求正文必须包含带有 DistributionConfig 元素的 XML 文档。
      • 将 HTTP If-Match 标头的值设置为您在步骤 1 中提交 GetDistributionConfig 请求时 CloudFront 返回的 ETag 标头的值。
    • 查看对 UpdateDistribution 请求的响应以确认配置已成功更新。
    • 可选:提交 GetDistribution 请求以确认您的更改已传播。传播完成后,Status 的值为 Deployed 。

    CloudFront API 参考 [2] 中提供了有关正确 xml 格式的详细信息。

    参考文献

    [1]https://docs.aws.amazon.com/cli/latest/reference/cloudfront/update-distribution.html
    [2]https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html

    【讨论】:

    • 谢谢马丁·洛珀。但是如果我有 20 个要更新的发行版,则需要编辑 20 个 json 文件。 • 有没有满足上述要求的简单方法(cli)? •是否可以合并以下 2 个命令 aws cloudfront get-distribution-config --id E29BDBENPXM1VE(用于删除 ETag 和 DistributionConfig 和 SSLv3 的 linux 命令) aws cloudfront update-distribution --id E29BDBENPXM1VE --distribution-config file://secure -ssl.json --if-match E3Q13PU8O66E4Q •更新分发时删除ETag和DistributionConfig参数的目的是什么。
    • 是的,有一些示例可以轻松完成此操作。我使用谷歌搜索短语“cloudfront update-distribution sn-p”找到了它们。只需根据您的需要进行调整:gist.github.com/bendrucker/65f340e299ace46a012be2ce97af795f
    • 我认为从语义上讲,您必须获取并传递 ETag 以便服务知道您要更新哪个版本的配置。这可以防止发生冲突查询(例如,当用户 A 读取配置并更改它而用户 B 执行相同操作时 - 当两者同时更新配置时,只有第一个更新成功而第二个更新失败。这可以防止意外覆盖)。您不会“删除 ETag 和 DistributionConfig 参数”。如果您查看我上面粘贴的示例 sn-p,您会看到它们被提取并用作 cli 中的参数。
    • 非常感谢 Martin Loper 的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 2015-12-24
    • 2023-01-24
    相关资源
    最近更新 更多