我有一个ARM模板,除其他资源外,还创建一个托管webjob的网站和一个作为调度程序一部分的作业。我已经设法通过ARM模板配置所有配置,除了身份验证。
当作业需要运行时,它会创建一个HTTP请求,该请求应该启动webjob。不幸的是,webjob从未启动过。如果我进入Azure门户并更新作业的设置(操作设置)并配置基本身份验证(使用部署凭据),一切都按预期开始工作,但我不确定如何从ARM模板检索这些凭据。我可以运行一次,创建网站,获取凭据然后更新ARM模板,但这首先打败了我正在构建ARM模板的全部原因。
答案 0 :(得分:4)
我找到了一个让我大部分回答的答案;您可以将请求的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
属性,这是{{1}的兄弟属性看起来像下面的
uri