azure - 在 ARM 模板中检索 azure 静态网站的区域代码
问题描述
我们正在开发一个使用以下两种资源的应用程序:
- 用于后端的 Azure Functions
- Azure 存储作为前端的静态网站
这是由我们的 CI 管道使用 ARM 模板自动部署的。但是,为了使应用程序正常工作,我们需要在 Azure 函数上设置 CORS 规则,以允许静态网站执行 api 调用。
这现在由以下资源配置执行:
{
"type": "Microsoft.Web/sites/config",
"name": "[concat(variables('functionAppName'), '/web')]",
"apiVersion": "2016-08-01",
"location": "[parameters('location')]",
"properties": {
"cors": {
"allowedOrigins": [
"[concat('https://', variables('storageAccountName'),'.z21', '.web.core.windows.net']"
],
}
},
"dependsOn": [
"[resourceId('Microsoft.Web/sites/', variables('functionAppName'))]"
]
}
但是,我们正在对.z21
参数进行硬编码,因为我们知道该location
参数将是美国中南部。然而,这不是我们想要硬编码的东西,因为可能应用程序可以部署到另一个位置。
阅读静态网站托管的文档时指出
您网站的 URL 包含区域代码。例如 URL https://contosoblobaccount.z22.web.core.windows.net/包含区域代码 z22。
虽然该代码必须保留为 URL,但它仅供内部使用,您不必以任何其他方式使用该代码。
但是,我找不到 Azure 正在使用哪些区域代码的参考。有没有办法知道这一点,以便我们停止将该值硬编码到我们的 ARM 模板中?
另一种方法是通过ARM 模板函数动态访问 ARM 模板上的存储帐户属性,但是我不确定哪个函数可以帮助我们检索存储帐户的区域代码。
提前致谢!
解决方案
如果你想要整个 URI,那么你可以使用:
[reference(variables('storageAccountId'), '2019-04-01').primaryEndpoints.web
如果您只想要区域代码,您可以使用:
[split(reference(variables('storageAccountId'), '2019-04-01').primaryEndpoints.web, '.')[1]]
推荐阅读
- python - 如何将 JSON 文件用作数组
- android - 我不能在 kotlin 中使用清除或删除功能
- javascript - marklogic javascript json json文档有命名空间吗
- python - Matplotlib 动画未显示使用 gridspec 绘制的图像
- javascript - 当一个对象中有多种数据类型时,如何在javascript中以我需要的格式获取数据?
- ansible - 在我们第一次执行脚本时运行任务,但之后不再执行
- scheme - 如何取消引用方案符号?
- ios - 不符合协议 Decodabel 和 Encodable
- flask - Flask:如何将值传递给 base.html?
- reactjs - Redux 如何在嵌套属性上使用 createEntityAdapter?