更改存储帐户连接字符串后Azure Function应用程序无法工作

igsr9ssn  于 2023-08-07  发布在  其他
关注(0)|答案(2)|浏览(124)

我尝试在我的函数应用程序的AzureWebJobsStorage应用程序设置中更新存储帐户连接字符串,但更新后,所有函数都开始在响应中给出401未授权,即使函数应用程序的入站和出站IP地址在存储帐户中被列入白名单。
唯一起作用的函数是代码中具有AuthorizationLevel.Anonymous的函数。
我已经尝试重新启动函数应用程序,并从Azure管道重新部署它,但似乎没有任何工作。我真的被卡住了,不知道我错过了什么。如果有人能帮助我,我将非常感激。

ktecyv1j

ktecyv1j1#

若要在Azure Function App中将存储帐户从现有帐户更改为新帐户,您需要在“配置”下更改应用程序设置,其中包含Azure门户中Function App的存储连接字符串。
根据函数,这可能是AzureWebJobsStorage和WEBSITE_CONTENTAZUREFILECONNECTIONSTRING字符串。

更换存储账户后,我为获得成功结果所做的一个变通方法是

1.在门户中创建Azure函数(.NET 6 - HTTP触发器)并运行该函数:
x1c 0d1x的数据
1.接下来,在门户的Azure Function应用程序配置中更改了应用程序设置[AzureWebJobsStorageWEBSITE_CONTENTAZUREFILECONNECTIONSTRING]中的存储帐户名称和键值。
1.立即测试功能应用时得到 *401未授权 *。
1.然后我点击Azure Function App > Overview部分的Restart-运行良好:

结果


更新答案:

如果您仍然因为功能应用程序URL中的授权密钥而遇到问题,请尝试此设置:


  • 转到Azure门户中的函数应用>函数键>续订键值
  • 更新密钥成功后,立即重新启动该功能。
  • 然后运行函数。

你能告诉我如何解密和检查azure-webjobs-secrets中的函数密钥值吗?因为我认为函数密钥已经重新生成了。
您可以从Portal中的以下路径获取功能键:


要解密存储帐户>容器> azure-webjobs-secrets > host.json文件中的相同密钥,该host.json文件中有一个名为decryptionKeyId的属性,用于解密加密值。
x1c4d 1x的
请参阅Decrypt the key from inside a function app了解实际解决方法。

jobtbby3

jobtbby32#

帮助我的是从函数存储帐户(AzureWebJobsStorage)中的azure-webjobs-secrets/{your-function-name} blob容器中删除host.json文件并重新启动函数应用程序。
我在通过Azure门户>诊断和解决问题>配置和管理>功能键操作进行故障排除时得到了这个想法:
由于Azure Functions支持API密钥授权,因此函数密钥或主机密钥更改可能会导致函数身份验证错误。在这种情况下,客户需要手动更新其客户端的API密钥。
密钥改变事件可以由以下触发
1.客户在Portal/Azure CLI中撤销/更新功能密钥或主机密钥
1.客户在密钥管理API上发出PUT/POST/DELETE请求
1.客户从函数应用程序的文件系统或azure-webjobs-secrets blob存储中删除webjobs机密文件
1.客户更改MACHINEKEY_DecryptionKey应用程序设置
1.客户使用keyvault存储功能键并更改其值。

  1. ASP.NETCoreDataProtection服务确定某个功能键或主机键已过期,需要重新生成
    请注意,如果存储帐户启用了Blob生命周期管理策略,也可以删除Azure函数密钥。

相关问题