az部署不适用于模板uri的SAS令牌

时间:2018-11-16 11:38:46

标签: windows azure-resource-manager azure-cli azure-deployment

我在Powershell中使用Windows上的当前Azure CLI(2.0.50)。 我尝试使用template-uri部署ARM模板,该模板存储在azure blob存储中。模板文件的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传递?

2 个答案:

答案 0 :(得分:0)

我可以重现您的问题,看来public class MessagesClient extends BaseClient<Message> { public static final String ClassURI = "/messages"; public MessagesClient() { super(); } public void insert(Message message) { super.post(message, BaseURI + ClassURI, "/create/", MediaType.APPLICATION_JSON); } public void delete(Message message) { super.post(message, BaseURI + ClassURI, "/delete/", MediaType.APPLICATION_JSON); } public List<Message> getInbox(String username) throws Exception { // I want to replace this with a call to the facade as seen in the examples above. // (This is currently working) return client.target(BaseURI + ClassURI) .path("/inbox/" + username + "/") .request(MediaType.APPLICATION_JSON) .get(new GenericType<List<Message>>(){}); } 是本地Windows powershell中的敏感字符,您可以尝试使用azure cloud shell进行部署,请参考文档并使用&在Azure Cloud Shell中,对我而言效果很好。

我的命令:

Bash

enter image description here

答案 1 :(得分:0)

将--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的情况感到好奇。