【问题标题】:How to call AWS Cloudfront Update-CFDistribution Powershell Cmdlet如何调用 AWS Cloudfront Update-CFDistribution Powershell Cmdlet
【发布时间】:2020-11-02 03:52:48
【问题描述】:

我已经编写了脚本来更改 CloudFront 中特定分配上特定源的源路径”。更改路径后,尝试使用更改更新分配时出现错误。我不想更改任何内容除了“原点路径”之外的分布,那么我如何调用 Update-CFDistribution 以理想地进行这些更改而无需设置每个参数修改)?

$distributions = Get-CFDistributionList 

foreach($distribution in $distributions) {
    if($distribution.Id -eq "$CloudfrontDistributionId") {
        foreach ($origin in $distribution.Origins) {
            foreach($item in $origin.Items) {
                if($item.Id -eq "OriginName") {
                    $item.OriginPath = "/$($S3BucketPrefix)"
                    Update-CFDistribution -Id $CloudfrontDistributionId -Origins_Item @($item)
                }
            }
        }
    }
}

错误

InvalidOperation:检测到 5 个验证错误:值为 null “distributionConfig.defaultCacheBehavior”未能满足 约束:成员不能为空;值为空 “distributionConfig.enabled”未能满足约束:成员必须 不为空; “distributionConfig.callerReference”处的值为 null 失败 满足约束:成员不能为空;值为空 “distributionConfig.origins.quantity”未能满足约束: 成员不得为空; “distributionConfig.comment”中的值失败 满足约束:成员不能为空

【问题讨论】:

    标签: amazon-web-services powershell command-line-interface amazon-cloudfront octopus-deploy


    【解决方案1】:

    我没有只添加评论的声誉,所以我不得不将其作为答案,但它更适合作为评论。

    根据文档,发布更新时有许多必填字段,即使您只是尝试更新一件事:

    https://docs.aws.amazon.com/powershell/latest/reference/items/Update-CFDistribution.html

    更新分配时,必填字段多于 当你创建一个分布。当您通过以下方式更新您的发行版时 使用此 API 操作,按照此处的步骤获取当前 配置,然后进行更新,以确保您 包括所有必填字段。

    【讨论】:

    • 我不太清楚的是未设置的字段是否会受到影响。我想这是一个反复试验的事情。
    • 我可能会采用的方法是捕获当前必填字段(使用 Get-CFDistribution 命令)并将它们传递给 Update-CFDistribution 命令。这样你就永远知道它们会是一样的。如果有帮助的话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2014-02-11
    • 2016-06-25
    • 2018-12-17
    相关资源
    最近更新 更多