az deployment 不适用于 template-uri 的 SAS 令牌

az deployment does not work with SAS tokens for template-uri

我在 Windows 的 powershell 中使用当前的 Azure CLI (2.0.50)。 我尝试使用存储在 azure blob 存储中的模板 uri 部署 ARM 模板。模板文件的这个 uri 包含一个 SAS 令牌...

如果我将带有 SAS 令牌的 uri 传递给 az group deployment create,它会出现以下错误: HTTP Error 404: The specified resource does not exist. Der Befehl "sp" ist entweder falsch geschrieben oder konnte nicht gefunden werden. Der Befehl "sv" ist entweder falsch geschrieben oder konnte nicht gefunden werden. Der Befehl "sr" ist entweder falsch geschrieben oder konnte nicht gefunden werden. Der Befehl "sig" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

模板 uri 如下所示: https://blobname.blob.core.windows.net/templates/resgroup/root.json?se=2018-11-16T11%3A58Z&sp=r&sv=2018-03-28&sr=c&sig=signature

好像参数分隔符(&)被当作特殊字符处理了...

如何将 SAS 令牌作为模板 uri 传递?

我可以重现你的问题,似乎 & 在本地 windows powershell 中是一个敏感字符,你可以尝试使用 azure cloud shell 部署它,参考文档并使用Azure Cloud Shell 中的 Bash,它在我这边运行良好。

我的命令:

az group deployment create --resource-group 'joywebapp' --template-uri 'https://xxxxxx.blob.core.windows.net/templates/azuredeploy.json?sp=r&st=2018-11-19T01:36:04Z&se=2018-11-19T09:36:04Z&spr=https&sv=2017-11-09&sig=xxxxx&sr=b'

将--template-uri 参数的值放在单引号中。将该字符串中的每个 & 符号放在双引号内。

--template-uri 'https://blobname.blob.core.windows.net/templates/resgroup/root.json?se=2018-11-16T11%3A58Z"&"sp=r"&"sv=2018-03-28"&"sr=c"&"sig=signature'

意味着您需要在调用 CLI 之前进行一些字符串处理。

使用 Azure cmdlet 也可以。无论如何,我很好奇您在 PS.

中使用 CLI 的场景