1

我有一个 ARM 模板,除其他资源外,它还创建了一个托管 web 作业的网站和一个作为调度程序一部分的作业。除了身份验证之外,我已经设法通过 ARM 模板配置了所有内容。

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

4

1 回答 1

6

我找到了一个让我大部分时间到达那里的答案;您可以将请求的 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]" }

于 2016-11-18T22:16:36.277 回答