Azure 函数上的 CosmosDBTrigger,无需租用集合

Ced*_*uld 3 azure-functions azure-cosmosdb

我有一个 Azure 函数,每次更新我的 CosmosDb 集合中的多个项目时都会触发该函数。

代码正常工作:

[StorageAccount("AzureWebJobsStorage")]
public static class ChangeFeedFunction
{
    [FunctionName("ChangeFeedFunction")]
    public static void ChangeFeedFunction(
        [CosmosDBTrigger(
            databaseName: "MyDataBase",
            collectionName: "MyCollection",
            ConnectionStringSetting = "CosmosDbConnectionString",
            LeaseCollectionName = "MyCollection_Leases",
            CreateLeaseCollectionIfNotExists = true
        )] IReadOnlyList<Document> documents,
        [Queue("collection-changes")] ICollector<Message> analystQueue,
        ILogger logger
    )
    {
        //Operations;
    }
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,这意味着我有 2 个 CosmosDb 集合(MyCollectionMyCollection_Leases),每月最低 40 美元。我想降低成本。有没有办法在不使用其他 CosmosDb 集合的情况下观察我的 CosmosDb 集合上的修改?

谢谢

Jay*_*ong 8

cosmos db触发器函数文档之后lease收藏至今也无法回避,因为它承担着重要的责任。

lease使用触发器存储每个函数的检查点时,我们需要一个集合。我说如果有10个文档被插入到cosmos db中,触发器函数被一个一个触发,检查点随着进程移动并存储到lease集合中。突然,由于某些原因,触发器关闭。在此期间,又有 5 个文件插入到 db 中。触发函数重新启动后,它知道从哪个节点继续执行函数和lease集合中的检查点。(我希望我已经说清楚了......)

顺便说一句,您可以lease为所有收藏共享一个收藏,以获得更具成本效益的方法。请参考这篇文章

至于成本,您可以创建最小配置lease集合。门户上的成本是估计值。价格基于 RU 的消耗量。请参阅此文件