或者改写另一种方式,有人可以为az cdn endpoint rule add
命令的不同参数提供解释吗?
Verizon文档与 Azure CLI 不太匹配。
Verizon 已经从他们的 v3 规则引擎迁移到 v4,虽然它在布局和可用性方面有了巨大的改进,但它仍然没有提供有关特定字段是什么的信息,或者它们如何映射到 Azure CLIaz cdn endpoint rule add
命令。
一个问题是新的 v4 接口丢失了带有内部创建的 Verizon Id 的“源”下拉列表。
@Christopher Cabezudo Rodriguez暴力破解了如何获取此值,但在尝试使用 CLI 进行设置时没有帮助。
我有 3 个我想创建的 HTTP 规则。
- 第一条 HTTP 规则允许我们的 Angular 单页应用程序“SPA”在更改 URL 地址的导航点击不会重新加载或导航离开页面的情况下工作。
- 第二个 HTTP 规则限制 HTTP 流量路由到 HTTPS。
- 第三条 HTTP 规则告诉浏览器始终检查 CDN 和缓存之间是否有任何变化。这将确保用户始终下载最新版本的客户端应用程序。
首先,我创建 CDN 和 Endpoint,如下所示:
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 规则引擎中,它们看起来像这样:
我已经对我可能需要的 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 配置文件中的交付规则,名称必须留空
- 验证错误:参数“DeliveryRuleAction.name”不能为无。
- 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'