Azure Functions:对 Blob 存储机密存储库执行读取操作时出错

Azure Functions: There was an error performing a read operation on the Blob Storage Secret Repository

提问人:mattsmith5 提问时间:5/28/2021 最后编辑:mattsmith5 更新时间:6/5/2023 访问量:29268

问:

在本地测试 Azure Functions 时,我收到以下错误:

“在 Blob 存储上执行读取操作时出错 机密存储库。请确保“AzureWebJobsStorage”连接 字符串是有效的。

我设置了 Azure Blob 存储,包括存储模拟器和存储资源管理器。如何解决这个问题?

. .net-core azure-functions

评论


答:

182赞 Juliana Polo 6/1/2021 #1

我在使用 Azure Durable Functions 时遇到了这个问题,我在这里找到了解决它的方法: https://github.com/Azure/azure-functions-host/issues/3795#issuecomment-430337085

在 中,添加一个名为 的新设置,并将其设置为“files”。local.settings.jsonAzureWebJobsSecretStorageType

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "AzureWebJobsSecretStorageType": "files"
  }
}

评论

4赞 Rob Bowman 1/20/2022
很好的答案!也许在 Windows 上替换 Azure 存储模拟器的推动有点仓促
13赞 Aaron Hudon 2/5/2022
~2+ 年后,这简直咬了我一口。 似乎是自动需要的。"AzureWebJobsSecretStorageType": "files"
1赞 camelCase 7/31/2023
根据 Aaron Hudson 的说法,添加“AzureWebJobsSecretStorageType”: “files” 修复了我以前工作的本地存储调试设置。我刚刚引入了一个定时器触发函数,所以也许它改变了运行时行为。如果以独立函数为目标,请小心复制上面的“FUNCTIONS_WORKER_RUNTIME”设置。
12赞 itpropro 8/30/2021 #2

请不要将“AzureWebJobsStorage”参数更改为实时存储帐户,因为可能会产生额外费用,并且可能会对在线环境产生不可预见的副作用或影响。 存储模拟器早已弃用,应使用 azurite 在本地模拟存储。例如,您可以使用 npm () 或以许多其他方式下载 azurite。npm install -g azurite

“UseDevelopmentStorage=true”是完全在本地环境中使用的正确设置,尤其是在要使用持久函数或其他计算或 I/O 密集型任务时。 关于您的问题,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 和所有实例,删除上述文件和文件夹,然后重新启动它(首先是 azurite)。func

当然,所有内容都会消失,但本地开发存储绝不应用于持久性数据。

评论

1赞 Martin Wilkerson 9/25/2022
如果 Azurite 是由 Visual Studio 自动启动的,则可以通过转到“输出”窗口,选择“服务依赖项”,然后找到它启动 Azurite 的回滚顶部附近的行来查找文件位置。上述文件的位置以 --location 的形式传递。
23赞 VivekDev 2/16/2022 #3

我的两分钱。

我正在尝试在本地计算机上运行持久函数。

我收到这个错误。

对 Blob 存储机密存储库执行读取操作时出错。请确保“AzureWebJobsStorage”连接字符串有效

我从github问题中查看了这个答案

我完全删除了我的文件夹,其路径如下

C:\Users\YourUserName\AppData\Local\Temp\Azurite 

现在一切又运行良好了。

文件夹如下所示。

Azurite folder on Windows

注意:用户注意到它有效,但必须删除我的整个 Temp 文件夹 - 删除 Azurite 文件夹不足以解决问题

评论

1赞 julianH 6/29/2022
这对我有用,但我不得不删除我的整个 Temp 文件夹 - 删除 Azurite 文件夹不足以解决问题。
0赞 exax 3/31/2022 #4

对于设置后继续收到 blob 读取错误的任何其他人,将包从 v5 降级到 v4 可以修复它。(我用过)。"AzureWebJobsSecretStorageType": "Files"Microsoft.Azure.WebJobs.Extensions.Storagev4.0.5

这可能特定于 .NET 项目。如果不熟悉修改 c# 依赖项,请在文件中找到 PackageReference 对象并更改版本。然后,您可以运行以更新/刷新。.csprojdotnet restore

对于那些不喜欢阅读文本的人:

project-name.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
      ...
  </PropertyGroup>
  <ItemGroup>
    ...
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="4.0.5"/>
    ...
  </ItemGroup>
  ...
</Project>

为了SEO,这是我的错误:

System.InvalidOperationException: Secret initialization from Blob storage failed due to missing both an Azure Storage connection string and a SAS connection uri. For Blob Storage, please provide at least one of these. If you intend to use files for secrets, add an App Setting key 'AzureWebJobsSecretStorageType' with value 'Files'.
5赞 Andrei Dvoynos 5/19/2022 #5

其他答案都不适合我,所以我将在这里分享我的解决方案。我试过了:

  • 改变AzureWebJobsSecretStorageType
  • 终止蓝铜矿进程并重新启动它
  • 从 AppData 中删除所有文件

这些都行不通。我的解决方法是使用 安装 azurite,然后使用 .在那之后,我的旧项目又开始工作了。npm install -g azuriteazurite

1赞 malisasmaz 10/4/2022 #6

如果使用的是 Visual Studio 2019 或更高版本,则需要确保“Azurite”服务正在运行。
如何确定?- 重新启动 VS 并检查输出窗口
VS Output window

如果您使用的是 VS Code 或 Rider,则应手动运行 Azurite。

3赞 Amartya Deshmukh 10/7/2022 #7

这个解决方案对我有用 -

以管理员身份运行 cmd。

运行命令并复制第一个 IP 地址的 PID。就我而言,它是.netstat -ano | findstr :1000018220

然后运行taskkill /PID 18220 /F

然后运行以重新启动 Azure 存储模拟器。"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" init

最后运行以启动 Azure 存储模拟器。"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" start

评论

0赞 Avinash Gadiraju 4/2/2023
在所有解决方案中,这对我有用。多谢。
0赞 andyb952 6/5/2023 #8

为此苦苦挣扎了一天左右,事实证明我只需要安装一个 NuGet 包

Microsoft.Azure.WebJobs.Extensions.Storage