gpt4 book ai didi

azure - 为什么在创建 QueueTrigger WebJob 函数时会看到 FunctionIndexingException?

转载 作者:行者123 更新时间:2023-12-02 08:02:39 25 4
gpt4 key购买 nike

我创建了一个这样的函数

public static Task HandleStorageQueueMessageAsync(
[QueueTrigger("%QueueName%", Connection = "%ConnectionStringName%")] string body,
TextWriter logger)
{
if (logger == null)
{
throw new ArgumentNullException(nameof(logger));
}

logger.WriteLine(body);
return Task.CompletedTask;
}

队列名称和连接字符串名称来 self 的配置,该配置具有用于获取值的 INameResolver。我在应用程序启动时将连接字符串本身从我的 secret 存储区放入应用程序配置中。如果连接字符串是授予整个帐户所有权限的普通存储连接字符串,则该方法将按预期工作。

但是,在我的场景中,我从合作伙伴团队获得了 SAS,该团队仅提供对单个队列的读取访问权限。我创建了一个存储连接字符串,看起来类似于

QueueEndpoint=https://accountname.queue.core.windows.net;SharedAccessSignature=st=2017-09-24T07%3A29%3A00Z&se=2019-09-25T07%3A29%3A00Z&sp=r&sv=2018-03-28&sig=token

(我尝试在 Microsoft Azure 存储资源管理器中使用此连接字符串成功连接)

QueueTrigger 属性中使用的队列名称也是从 SAS 收集的

但是,现在我遇到以下异常

$exception  {"Error indexing method 'Functions.HandleStorageQueueMessageAsync'"}    Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException
InnerException {"No blob endpoint configured."} System.Exception {System.InvalidOperationException}

如果您查看连接字符串,您可以看到异常是正确的。我没有配置 blob 端点。但是我也无权访问它,也不想使用它。我仅将存储帐户用于此 QueueTrigger

我正在使用 Microsoft.Azure.WebJobs v2.2.0。其他依赖项阻止我升级到 v3.x

当只有对单个队列具有读取访问权限的 SAS URI 可用时,从存储队列使用消息的建议方法是什么?如果我已经走在正确的道路上,我需要做什么才能摆脱异常?

最佳答案

正如您所见,v2 WebJobs SDK 还需要访问 blob 端点。恐怕这是设计使然,使用没有完全访问权限的连接字符串,如 SAS an improvement已跟踪但尚未实现。

以下是 v2 SDK 所需的权限。它需要获取 Blob 服务属性(Blob、Service、Read)和队列元数据并处理消息(Queue、Container&Object、Read&Process)。 enter image description here

Queue Trigger是获取消息并处理后删除,所以SAS需要Process权限。这意味着即使 SDK 不需要 blob 访问,您获得的 SAS 字符串也未正确授权。

您可以要求合作伙伴团队使用上述最低权限在 Azure 门户上生成 SAS 连接字符串。如果他们无法提供 blob 访问,v3 SDK 似乎是一个可以尝试的选择。

但是存在一些问题 1. 正如您提到的,其他依赖项阻止更新 2. v3 SDK 基于 .NET Core,这意味着无法避免代码更改。 3. v3 SDK文档和示例仍然under construction现在。

关于azure - 为什么在创建 QueueTrigger WebJob 函数时会看到 FunctionIndexingException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52481049/

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