Azure函数 - function.json 位于哪里?

8

我在网络上看到很多关于绑定(bindings)是如何在function.json文件中配置的。我在Visual Studio中创建了一个Azure Function项目,我可以看到该文件生成在out文件夹中。但它并不是我的项目的一部分。那么,我应该将其添加到local.settings.json文件中,然后Visual Studio会从那里获取它来生成文件(包括部署)吗?或者我应该在哪里添加这些绑定呢?这似乎有点奇怪,我本来期望local.settings.json是一个不会被部署到Azure的文件。

3个回答

7
如果您正在使用已编译的C#类库函数,则构建过程将创建function.json文件(请查看bin目录)。
请参见此处:https://learn.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#functions-class-library-project 建立过程为每个函数创建一个function.json文件。不要直接编辑此function.json文件。您无法通过编辑此文件更改绑定配置或禁用函数。如需了解如何禁用函数,请参阅如何禁用函数。
使用属性进行配置绑定(请参见此处)。
[FunctionName("ServiceBusQueueTriggerCSharp")]                    
public static void Run(
    [ServiceBusTrigger("myqueue", AccessRights.Manage, Connection = "ServiceBusConnection")] 
    string myQueueItem,
    Int32 deliveryCount,
    DateTime enqueuedTimeUtc,
    string messageId,

    [Blob("sample-images-md/{name}", FileAccess.Write, Connection = "StorageConnectionAppSetting")] Stream outputBlob)

    ILogger log)
{
    log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
    log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.LogInformation($"DeliveryCount={deliveryCount}");
    log.LogInformation($"MessageId={messageId}");

    //now store something to outputBlob
}

StorageConnectionAppSetting在配置文件中定义。对于本地环境来说,这是local.settings.json文件。


它由服务总线触发。现在我想添加一个输出触发器,将其写入Blob存储。但是我不知道在哪里添加out blob触发器的绑定。如先前所述,function.json是自动生成的。我应该将其添加到local.settings.json还是其他文件中? - Thomas Segato
@ThomasSegato 是的,完全正确 - 如果您使用类库(而不是C#脚本),只需忽略function.json即可 - 您无需担心它,它会自动生成。 - Alex
1
明白了!谢谢,我会专注于属性部分。非常感谢! - Thomas Segato
1
最后一个问题:D,文档中提到了以下示例[Blob("sample-images-sm/{name}", FileAccess.Write)] Stream imageSmall。那么在哪里可以指定函数要写入哪个存储帐户呢?这里好像存在一些丢失的链接? - Thomas Segato
1
请查看此处:https://learn.microsoft.com/zh-cn/azure/azure-functions/functions-bindings-storage-blob#output---configuration 我已经再次更新了示例。 - Alex
显示剩余4条评论

2
我正在使用网页门户 (portal.azure.com) 进行搜索,最终找到了它:
从主页中选择创建的函数应用程序 -> 在左侧菜单中选择“函数” -> 选择您的触发器 -> 然后检查我的屏幕截图。

enter image description here

惊喜在于:你有一个下拉菜单可以更改文件 :) 这是一个非常棒的用户体验。
感谢微软。

0
我正在使用Python,当你从VSCode Azure扩展创建一个新项目时,选择模型v1在设置中非常重要,这样才能获得一个function.json文件。如果你选择模型v2,就没有function.json文件,你将无法在想要向你的应用程序添加新函数时选择多个Azure模板。
在工作区本地选项卡中,点击闪电图标,然后点击: 创建新项目 在设置中设置或选择以下项目:
  1. 选择项目的本地文件夹
  2. 语言:Python
  3. 模型V1 → 重要!
  4. Python解释器:3.10(匹配版本为3.10.4)
  5. 模板:HTTP触发器
  6. 授权级别:FUNCTION
  7. 创建新的Insights监视器

我不确定这是否与最初的问题真正相关。有帮助,但不相关。 - undefined
@JeffB 我最初来到这个页面的原因是因为缺少function.json文件,这也是我遇到的问题。原帖没有提供他使用的编程语言,而顶部答案只涉及C#。由于我使用的是Python,并且那个解决方案对我不适用,所以我决定为缺少function.json文件的Python环境添加解决方案。 - undefined
没问题!这个问题标签是C#,但是你的回答仍然有用。也许值得你提出自己的问题,并发布一个带有正确标签的自我回答,以便参考Python。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接