gpt4 book ai didi

使用 listkeys 的 Azure Function ARM 部署导致 BadRequest 错误

转载 作者:行者123 更新时间:2023-12-03 21:16:15 25 4
gpt4 key购买 nike

我有一个简单的 ARM 模板,用于部署两个 Azure Functions、一个应用服务计划和一个存储帐户:

enter image description here

唯一“特殊”的事情是,函数 function-key-issue-two 添加了函数 function-key- 中的默认主机 key issues-one 作为应用设置:

"FunctionOneKey": "[listkeys(concat(variables('functionTwoAppId'), '/host/default/'),'2016-08-01').functionKeys.default]",

如果我将此模板部署到资源组,它第一次就会起作用。每个后续部署都会失败,并在资源上出现错误请求错误function-key-issue-one/default:

enter image description here

操作细节如下:

{
"Code": "BadRequest",
"Message": "Encountered an error (ServiceUnavailable) from host runtime.",
"Target": null,
"Details": [
{
"Message": "Encountered an error (ServiceUnavailable) from host runtime."
},
{
"Code": "BadRequest"
},
{
"ErrorEntity": {
"Code": "BadRequest",
"Message": "Encountered an error (ServiceUnavailable) from host runtime."
}
}
],
"Innererror": null
}

如果我删除 FunctionOneKey 应用程序设置,则部署可以正常工作。另外,如果我不指定应用程序设置WEBSITE_RUN_FROM_PACKAGE,部署也可以工作。

稍后使用 AzureFunctionApp@1 Azure DevOps 任务作为 Zip 包部署函数代码(这就是我将 WEBSITE_RUN_FROM_PACKAGE 设置为 1 的原因>).

<小时/>

如何重现:

我正在使用的ARM模板可用here 。您可以使用部署它。 e. G。 New-AzResourceGroupDeployment cmdlet:

New-AzResourceGroupDeployment -ResourceGroupName 'function-key-issue-rg' -TemplateFile "D:\sources\issues\functionDeployment\azuredeploy.json" -name "azuredeploy-$(New-Guid)"
<小时/>

更新1:

出现ServiceUnavailable错误的原因可能是因为Kudu添加了一个带有重写规则的web.config(因为我使用了WEBSITE_RUN_FROM_PACKAGE但没有部署该功能):

enter image description here

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name = "Site Unavailable" stopProcessing = "true">
<match url = ".*" />
<action type = "CustomResponse" statusCode = "503" subStatusCode = "0" statusReason = "Site Unavailable" statusDescription = "Could not download zip" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

我的下一个尝试是通过设置来阻止 Kudu 这样做SCM_TOUCH_WEBCONFIG_AFTER_DEPLOYMENT0(请参阅:Don't touch web.config at the end of the deployment)。现在看来,后续部署有时会成功:

enter image description here

但仍然不是一个可靠的解决方案:-/。

<小时/>

更新2:

  • 与 Azure Function Runtime ~2 存在同样的问题。
  • 将 Azure Function 切换到 Linux 也无法解决问题。
<小时/>

更新3:

<小时/>

知道这里出了什么问题吗?有什么解决方法吗?

最佳答案

我在使用 ARM 模板部署 Function Apps 和应用程序设置时也遇到过这个问题。

在与 Azure 支持进行反复交流后,我们意识到应用程序设置的持久性会导致 Function App 在部署期间重新启动,从而导致在重新启动时出现 503 服务不可用。部署仍在进行时会发生这种情况,从而导致 Microsoft.Web/sites/host 出现间歇性故障。尽管 ARM 部署模式设置为增量,但函数应用设置似乎完全忽略了这一点。

Function App 的诊断设置将为您列出硬重启,并可能让您深入了解导致该问题的应用设置。

Azure 支持人员建议将应用设置分离到 ARM 模板中自己的 Microsoft.Web/sites/config 部分,该部分取决于 Function App已完成部署。我还没有尝试过这个,这也违背了 Function App ARM 示例中的内容,其中它们是 Microsoft.Web/sites 的子 config 资源。

关于使用 listkeys 的 Azure Function ARM 部署导致 BadRequest 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60429368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com