Azure Functions:在Blob Storage Secret Repository上执行读操作时出现错误。
文章标题:Azure Functions:在Blob存储密钥库执行读操作时出错的原因和解决方法
在使用Azure Functions时,我们需要进行一些本地环境的配置,其中一个重要的配置是存储账户。本文将介绍一个问题的出现原因以及解决方法,该问题是在使用Blob存储密钥库执行读操作时出现的错误。
问题的出现原因是,可能错误地将"AzureWebJobsStorage"参数更改为实际的存储账户,这可能导致额外的费用,并且可能在在线环境中产生意想不到的副作用或影响。值得注意的是,存储模拟器已经过时,我们应该使用azurite来在本地模拟存储。可以通过npm安装azurite(npm install -g azurite),或者使用其他方式进行下载。
在本地环境中,特别是在使用可靠函数或其他计算或I/O密集型任务时,"UseDevelopmentStorage=true"是正确的设置。
对于这个问题,azurite在执行时会在当前目录下创建多个json文件,用于模拟虚拟存储后端。如果你在没有任何参数的情况下运行azurite,应该会存在以下文件:
- __azurite_db_blob_extent__.json
- __azurite_db_queue__.json
- __azurite_db_queue_extent__.json
- __azurite_db_table__.json
此外,通常还会存在两个或更多名为以下之一的文件夹:
- __blobstorage__
- __queuestorage__
为了强制azure-functions-core-tools运行时重置存储的声明和句柄,首先停止azurite和所有的func实例,删除上述文件和文件夹,然后再次启动(首先启动azurite)。
需要注意的是,这样做会导致所有内容被删除,但是本地开发存储不应用于持久数据。
如果Azurite是由Visual Studio自动启动的,可以通过转到“输出”窗口,选择“服务依赖项”,然后找到靠近最上方的Azurite起始行来找到文件位置。上述文件的位置将作为--location参数传递。
Azure Functions: 发生了一个在Blob存储秘密仓库上执行读操作的错误。请确保'AzureWebJobsStorage'连接字符串有效。
我在本地计算机上尝试运行一个持久化函数时遇到了这个错误。
我查看了github问题中的回答。
我完全删除了路径如下的文件夹:
C:\Users\YourUserName\AppData\Local\Temp\Azurite
现在一切都正常运行了。
文件夹的样子如下图所示:
注意:用户指出这种方法可行,但是必须删除整个Temp文件夹,仅删除Azurite文件夹无法解决问题。
这对我有效,但是我不得不删除整个Temp文件夹,仅删除Azurite文件夹无法解决问题。
在使用Azure Durable Functions时,我遇到了一个问题,我在这里找到了解决方法:https://github.com/Azure/azure-functions-host/issues/3795#issuecomment-430337085
在local.settings.json
中,添加一个名为AzureWebJobsSecretStorageType
的新设置,并将其设置为"files"。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AzureWebJobsSecretStorageType": "files"
}
}
回答得很好!也许在替换Windows上的Azure Storage Emulator时有点仓促。
过去的两年中,这个问题一直没遇到过。似乎需要自动地添加"AzureWebJobsSecretStorageType": "files"
。
根据Aaron Hudson的说法,添加"AzureWebJobsSecretStorageType": "files"
修复了我之前工作正常的本地存储调试设置。我刚刚引入了一个定时器触发函数,也许这改变了运行时的行为。如果目标是隔离函数,请小心复制上面的"FUNCTIONS_WORKER_RUNTIME"
设置。