2016-11-18 102 views
1

我有一个ARM模板,可以创建一个网站,该网站承载一个webjob和一个作为调度程序一部分的作业。除了身份验证外,我已设法通过ARM模板来配置所有内容。在ARM模板中检索网站部署证书

当作业需要运行时,它会创建一个应该启动webjob的HTTP请求。不幸的是,webjob从未开始。如果我进入Azure门户并更新作业设置(操作设置)并配置基本身份验证(使用部署凭据),则所有事情都按预期工作,但我不确定如何从ARM模板中检索这些凭据。我可以运行一次,创建网站,获取凭据,然后更新ARM模板,但是这首先破坏了我构建ARM模板的原因。

回答

2

我发现了一个答案,让我在那里的大部分方式;您可以将请求的Uri设置为list(resourceId('Microsoft.Web/sites/config', variables('webSiteName'), 'publishingcredentials'), '2016-08-01').properties.scmUri。您还需要对路径的其余部分进行协调(例如,/api/triggeredwebjobs/{webjobname}/run

上述代码生成的Uri包含基本身份验证凭据,并且在某个时候解析并且用户名和密码从Uri中取出所以它们在Azure门户中不可见,并且身份验证设置为“基本”,并将凭据设置为提取的值。

但是,我的Uri查询字符串追加到最后传递参数到webjob。在部署过程中,查询字符串会变形(问号会转义为%3F,如果您的参数值中有任何转义字符,它们将会被取消转义。)

我设法解决了这个问题,弥补了URI(不使用scmUri属性),然后设置authentication属性,这是一个同级的uri属性如下所示

"authentication": { "type": "Basic", "username": "[list(resourceId('Microsoft.Web/sites/config', variables('webSiteName'), 'publishingcredentials'), '2016-08-01').properties.publishingUserName]", "password": "[list(resourceId('Microsoft.Web/sites/config', variables('webSiteName'), 'publishingcredentials'), '2016-08-01').properties.publishingPassword]" }