Arm模板:从staging slot获取http触发器

时间:2018-05-10 09:27:59

标签: azure azure-resource-manager

我需要在暂存槽中获取基于HTTP Trigger的函数的URL(或URL中使用的代码)。

我能够在生产槽(web / sites / functions)中获取functionapp的trigger_url变量值。但是我无法获得暂存插槽中的functionapp的trigger_url值。

示例模板获取生产值而不是应用程序设置'PostUrl'的暂存。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "functionAppName": {
            "defaultValue": "functionAppName",
            "type": "string"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Web/sites/slots",
            "name": "[concat(parameters('functionAppName'), '/staging')]",
            "apiVersion": "2016-08-01",
            "location": "West Europe",
            "properties": {
                "siteConfig": {
                    "appSettings" : [
                        {
                            "name": "PostUrl",
                            "value":  "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('functionAppName'), 'RequestName'),'2015-08-01').trigger_url]"
                        }
                    ]
                }
            }
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

默认情况下,网址应该始终是静态的,只是" https://myfunction-myslotname.azurewebsites.net"。但是,您确实需要不同的插槽键。

您是否尝试将广告位名称传递给" resourceId"模板?

resourceId('Microsoft.Web/sites/functions', parameters('functionAppName'), 'RequestName')

尝试这样的事情(替换为你的插槽名称)

[resourceId('Microsoft.Web/sites/slots', parameters('functionAppName'), 'slotname')] [resourceId('Microsoft.Web/sites/slots', parameters('functionAppName'), 'RequestName', 'slotname')]

您的resourceId目前总是这样,也许这也会有所帮助:

/subscriptions/<subscriptionid>/resourceGroups/<functionname>/providers/Microsoft.Web/sites/<functionname>/slots/<slotname>