在 CDN 终结点(Verizon 高级版)上创建 HTTP 规则的正确 Azure CLI 命令是什么?

问题描述 投票:0回答:3

或者换种方式,有人可以为

az cdn endpoint rule add
命令的不同参数提供解释吗?

Verizon 文档 与 Azure CLI 不太匹配。

Verizon 已从 v3 规则引擎迁移到 v4,虽然它在布局和可用性方面有了巨大改进,但它仍然没有提供有关特定字段是什么或它们如何映射到 Azure CLI 的信息

az cdn endpoint rule add
命令。

一个问题是新的 v4 界面丢失了带有内部创建的 Verizon Id 的“源”下拉列表。

@Christopher Cabezudo Rodriguez 已经暴力破解了如何获取此值,但在尝试使用 CLI 进行设置时没有帮助。

我想创建 3 条 HTTP 规则。

    第一个 HTTP 规则允许我们的 Angular 单页面应用程序“SPA”在更改 URL 地址的导航点击不会重新加载或导航离开页面的情况下工作。
  1. 第二条 HTTP 规则限制 HTTP 流量路由到 HTTPS。
  2. 第三条 HTTP 规则告诉浏览器始终检查 CDN 和缓存之间是否有任何更改。这将确保用户始终下载最新版本的客户端应用程序。
首先,我创建 CDN 和端点,如下所示:

az cdn profile create --name $AZ_APP_CDN --resource-group $AZ_RESOURCE_GROUP_APP --location $AZ_LOCATION --sku Premium_Verizon az cdn endpoint create --name $AZ_APP_CDN_ENDPOINT --resource-group $AZ_RESOURCE_GROUP_APP --profile-name $AZ_APP_CDN --origin $ST_BLOB_ORIGIN_DOMAIN --no-http true

在 V4 规则引擎中,它们看起来像这样:

enter image description here

我已经半途而废地猜测了我可能需要什么作为 CLI 命令:

az cdn endpoint rule add -g $AZ_RESOURCE_GROUP_APP -n $AZ_APP_CDN_ENDPOINT --profile-name $AZ_APP_CDN --order 0 --rule-name "Redirect" --match-variable RequestHeaderWildcard --match-variable "User-Agent" --operator Equal --match-values "ECPurge/*"--negate-condition true --action-name "UrlRewrite" --source-pattern "[^?.]*(\?.*)?$" --custom-fragment "client/index.html" az cdn endpoint rule add -g $AZ_RESOURCE_GROUP_APP -n $AZ_APP_CDN_ENDPOINT --profile-name $AZ_APP_CDN --order 1 --rule-name "Http to Https" --match-variable RequestScheme --operator Equal --match-values HTTPS --action-name "UrlRedirect" --redirect-protocol Https --redirect-type Moved az cdn endpoint rule add -g $AZ_RESOURCE_GROUP_APP -n $AZ_APP_CDN_ENDPOINT --profile-name $AZ_APP_CDN --order 2 --rule-name "Overwrite cache-control header" --match-variable Always --operator Equal --match-values HTTPS --action-name "ModifyClientResponseHeader" --header-action "Overwrite" --header-name "CacheControl" --header-value "max-age=0, must-revalidate, public"

特别提一下,第二条规则实际上是CLI帮助中给出的示例,但它不起作用。参见:

az cdn endpoint rule add -h



对于上述每个命令,我都会收到以下 3 个错误(根据规则编号):

    BadRequest - 对于 Verizon 配置文件中的传送规则,名称必须留空
  1. 验证错误:参数“DeliveryRuleAction.name”不能为 None。
  2. az cdn 端点规则添加:错误:需要以下参数:--order、--rule-name、--action-name
非常感谢任何帮助...如果我解决了问题,我仍然会继续用头撞墙并发布。

更新:由于不想说明明显的问题,对于上面的错误#1,如果我删除

--name

 参数(如错误所示),我会收到以下错误:

(--name | --ids) are required



更新2:以下Azure

帮助页面表明az cdn endpoint rule action add

是正确的,但它仍然不起作用(提供如下所示的神秘错误)。

命令因意外错误而失败。这是回溯:

'NoneType' object has no attribute 'rules' Traceback (most recent call last): File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\knack\knack\cli.py", line 215, in invoke File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\azure-cli-core\azure\cli\core\commands\__init__.py", line 631, in execute File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\azure-cli-core\azure\cli\core\commands\__init__.py", line 695, in _run_jobs_serially File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\azure-cli-core\azure\cli\core\commands\__init__.py", line 688, in _run_job File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\six\six.py", line 703, in reraise File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\azure-cli-core\azure\cli\core\commands\__init__.py", line 665, in _run_job File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\azure-cli-core\azure\cli\core\commands\__init__.py", line 324, in __call__ File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\azure-cli-core\azure\cli\core\__init__.py", line 574, in default_command_handler File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-7cl6xofh\azure-cli\azure\cli\command_modules\cdn\custom.py", line 396, in add_action AttributeError: 'NoneType' object has no attribute 'rules'
    
azure command-line-interface cdn verizon
3个回答
0
投票
文档在这方面并不是很好 - 我发现运行

debug

 很有帮助,因为最终新的 CDN 规则需要对所有现有 CDN 规则加上您拥有的规则进行 POST 请求。

此外,您必须完全按照调试输出获取某些字符串,例如

--operator

--match-variable
--selector
,否则您会收到无用的错误。

希望这有帮助。


0
投票
我也遇到了第一个错误。错误 2 和 3 可以很容易地解决,例如: --action-name 缓存过期

--订单 0
--规则名称全局 \

我的问题仍然是 Azure Cli 不接受 Verizon Sku 的 --name 参数。这很奇怪,因为需要端点名称来在端点上设置缓存规则。


0
投票
我面临着同样的问题,还没有看到 Azure cli 的任何支持,有人让它工作吗?

© www.soinside.com 2019 - 2024. All rights reserved.