【发布时间】:2022-07-13 22:56:27
【问题描述】:
我正在尝试为我们的 ADLS2 容器目录实现 Azure Blob 触发器。 为此,我正在关注这两个 MS 文档
Azure Blob storage trigger for azure functions
Azure function extension libraries
这是我们的 local.settings.json
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"myconnection__blobServiceUri": "https://myadls2account.blob.core.windows.net",
"myconnection__queueServiceUri": "https://myadls2account.blob.core.windows.net"
}
}
这是我们的 blob 触发器
[FunctionName("Function1")]
public void Run([BlobTrigger("sample/my-directory/{name}",Connection = "myconnection")]Stream myBlob, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}
但是执行的时候会触发下面的错误
Error indexing method 'Function1'
Microsoft.Azure.WebJobs.Host: Error indexing method 'Function1'. Microsoft.Azure.WebJobs.Extensions.Storage: Storage account connection string 'AzureWebJobsmyconnection' does not exist. Make sure that it is a defined App Setting.
请分享您的想法,我错过了什么或做错了什么?
【问题讨论】:
-
我对这些触发器不太了解,但错误似乎很简单。您是否尝试过在根级别使用预期的名称创建应用设置?
-
但我们正在尝试的解决方案是摆脱连接字符串并使用天蓝色的活动目录标识。对于使用 Azurite 的功能,我指定了 UseDevelopmentStorage=true
-
我认为这只是一个命名问题。在您的 blobtrigger 中,您将连接定义为“myconnection”。在您的本地设置中,没有名为“myconnection”的连接字符串。尝试将 blobtrigger 中的连接更改为“AzureWebJobsStorage”。
-
顺便说一句,您发布的第一个链接描述得很好:“如果应用程序设置名称以“AzureWebJobs”开头,您可以在此处仅指定名称的其余部分。例如,如果您设置连接到“MyStorage”时,Functions 运行时会查找名为“AzureWebJobsMyStorage”的应用设置。如果将连接留空,则 Functions 运行时会使用名为 AzureWebJobsStorage 的应用设置中的默认存储连接字符串
-
@rekcul 根据文档 (devblogs.microsoft.com/azure-sdk/…) 就是这样。它是我们在本地设置连接中指定的前缀
标签: c# azure-active-directory azure-functions azure-blob-trigger