获得功能和Powershell中Azure功能的主机密钥

时间:2017-04-06 11:11:13

标签: powershell azure

我使用Arm模板部署了Azure功能。我需要功能键&主机在Powershell中部署Azure功能的密钥。 目前我正在尝试从ARM模板的输出部分获取密钥

 "outputs": {
"FunctionAppName": {
  "type": "string",
  "value": "[variables('functionAppName')]"
},
"Key": {
  "type": "string",
  "value": "[listKeys(resourceId('Microsoft.Web/sites', '[variables('functionAppName')]'),'2015-08-01').keys]"
}

}

我尝试了不同的组合但它失败了。 有没有办法在Powershell中检索密钥?

5 个答案:

答案 0 :(得分:11)

我通过以下方式使用它:

    "outputs": {
    "FunctionAppName": {
        "type": "string",
        "value": "[parameters('functionName')]"
    },
    "Key": {
        "type": "string",
        "value": "[listsecrets(resourceId('Microsoft.Web/sites/functions', parameters('existingFunctionAppName'), parameters('functionName')),'2015-08-01').key]"
    },        
    "Url": {
        "type": "string",
        "value": "[listsecrets(resourceId('Microsoft.Web/sites/functions', parameters('existingFunctionAppName'), parameters('functionName')),'2015-08-01').trigger_url]"
    }        
}

我也找不到任何例子。 但是,通过使用上面的KestrelServerOptionsSetup上的快速入门示例和GitHub的文档以及一些反复试验,我得到了它。

请注意变量/参数和名称已更改。

答案 1 :(得分:3)

我无法获得可接受的答案来检索默认的主机密钥。 @ 4c74356b41的答案非常接近。您可以使用以下代码获取密钥。默认的主机密钥将位于Outputs.functionKeys.Value.functionKeys.default.Value中。

  "outputs": {
    "functionKeys": {
      "type": "object",
      "value": "[listkeys(concat(resourceId('Microsoft.Web/sites', variables('functionAppName')), '/host/default'), '2018-11-01')]"
    }
  }

答案 2 :(得分:1)

问题似乎没有得到回答,因为它是在请求从Powershell而不是从ARM模板获取功能键。 我正在使用以下脚本从Azure DevOps中的Powershell获取功能键。

$accountInfo = az account show
$accountInfoObject = $accountInfo | ConvertFrom-Json
$subscriptionId  = $accountInfoObject.id

$resourceGroup = "your-resource-group"
$functionName = "your-function-name"

$functionkeylist = az rest --method post --uri "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$functionName/host/default/listKeys?api-version=2018-11-01"
$keylistobject = $functionkeylist | ConvertFrom-Json
$functionKey = $keylistobject.functionKeys.default

希望这会有所帮助。

答案 3 :(得分:0)

首先,您的语法有错误:

  "value": "[listKeys(resourceId('Microsoft.Web/sites', variables('functionAppName')),'2015-08-01').keys]"

但是这不会有帮助,我不认为它是针对Azure功能实现的,我对此并不是100%肯定,但我努力检索密钥是徒劳的

答案 4 :(得分:0)

因此,为了使其适用于应用程序 MyHttpFunctionMyFunctionApp 的功能特定键,我必须在 ARM 模板的 Outputs 部分使用以下内容:

"MyHttpFunctionKey": {
    "type": "string",
    "value": "[listkeys(resourceId('Microsoft.Web/sites/functions', 'MyFunctionApp', 'MyHttpFunction'), '2019-08-01').default]"
}

如果使用 New-AzResourceGroupDeployment 和参数 -OutVariable arm 从 Powershell 调用,则以下 Powershell 命令将打印密钥:$arm.Outputs.myHttpFunctionKey.Value