在 ARM 模板中检索网站部署凭据
Retrieve web site deployment credentials in ARM template
我有一个 ARM 模板,除其他资源外,它还创建了一个网站,该网站托管一个网络作业和一个作为调度程序一部分的作业。除了身份验证,我已经设法通过 ARM 模板配置了所有内容。
当作业需要 运行 时,它会创建一个应该启动 Web 作业的 HTTP 请求。不幸的是,网络作业从未启动过。如果我进入 Azure 门户并更新作业设置(操作设置)并配置基本身份验证(使用部署凭据),一切都会按预期开始工作,但我不确定如何从 ARM 模板中检索这些凭据.我可以 运行 它一次,创建网站,获取凭据然后更新 ARM 模板,但这破坏了我首先构建 ARM 模板的全部原因。
我找到了一个对我来说很重要的答案;您可以将请求的 Uri 设置为 list(resourceId('Microsoft.Web/sites/config', variables('webSiteName'), 'publishingcredentials'), '2016-08-01').properties.scmUri
。您还需要连接路径的其余部分(例如 /api/triggeredwebjobs/{webjobname}/run
)
上述代码生成的 Uri 包括基本的身份验证凭据,并且在某些时候对其进行了解析,用户名和密码从 Uri 中取出,因此它们在 Azure 门户中不可见,并且身份验证是设置为 'Basic',并且凭据设置为提取的值。
但是,我的 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]"
}
我有一个 ARM 模板,除其他资源外,它还创建了一个网站,该网站托管一个网络作业和一个作为调度程序一部分的作业。除了身份验证,我已经设法通过 ARM 模板配置了所有内容。
当作业需要 运行 时,它会创建一个应该启动 Web 作业的 HTTP 请求。不幸的是,网络作业从未启动过。如果我进入 Azure 门户并更新作业设置(操作设置)并配置基本身份验证(使用部署凭据),一切都会按预期开始工作,但我不确定如何从 ARM 模板中检索这些凭据.我可以 运行 它一次,创建网站,获取凭据然后更新 ARM 模板,但这破坏了我首先构建 ARM 模板的全部原因。
我找到了一个对我来说很重要的答案;您可以将请求的 Uri 设置为 list(resourceId('Microsoft.Web/sites/config', variables('webSiteName'), 'publishingcredentials'), '2016-08-01').properties.scmUri
。您还需要连接路径的其余部分(例如 /api/triggeredwebjobs/{webjobname}/run
)
上述代码生成的 Uri 包括基本的身份验证凭据,并且在某些时候对其进行了解析,用户名和密码从 Uri 中取出,因此它们在 Azure 门户中不可见,并且身份验证是设置为 'Basic',并且凭据设置为提取的值。
但是,我的 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]"
}