当前位置: 首页 > 知识库问答 >
问题:

Azure函数中的CosmosDB输出绑定错误

隆康平
2023-03-14

我对Azure函数和CosmosDB输出绑定有问题。我现在拥有的是:我从一个Cosmos DB容器中读取数据,处理一些东西,然后将结果输出回同一个DB但不同的容器。我正在使用VSCode和python,并测试了其他输出(blob、HTTP响应等),所有这些都正常工作,所以我认为这是CosmosDB的问题。

\uuuu init\uuuu。py主要功能定义如下:

def main(documents: func.DocumentList, outdocs: func.Out[func.Document]):

function.json输出绑定如下:

{
      "type": "cosmosDB",
      "direction": "out",
      "name": "outdocs",
      "databaseName": "db-test",
      "collectionName": "out-collection",
      "connectionStringSetting": "dmcosmosdb_DOCUMENTDB",
      "partitionKey": "undefined",
      "collectionThroughput": "undefined"
}

请注意,我使用func extensions install和我的扩展手动安装了扩展。csproj文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <!-- <AzureFunctionsVersion>v3</AzureFunctionsVersion> -->
    <WarningsAsErrors></WarningsAsErrors>
    <DefaultItemExcludes>**</DefaultItemExcludes>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.CosmosDB" Version="3.0.10" />
    <PackageReference  Include="Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator" Version="1.1.3" />
  </ItemGroup>
</Project>

它使用与触发器输入绑定相同的连接字符串和数据库,只是输出的容器不同。我还确保绑定的名称与我在代码中使用的变量匹配,其类型为func。Out[func.Document]。我为我的输出创建一个自定义词典,然后使用outdocs。设置(func.Document.from_dict(output))将输出存储回CosmosDB。

有什么建议吗?我记得几周前,在同样的配置下,我能够做到这一点,而没有任何问题。我收到的错误信息是:

[2021-08-23T11:30:31.794Z] No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
[2021-08-23T11:30:31.891Z] The 'CosmosTrigger' function is in error: Unable to configure binding 'outdocs' of type 'cosmosDB'. This may indicate invalid function.json properties. Input string was not in a correct format.

谢谢

共有1个答案

许法
2023-03-14

断然的。我不得不删除Cosmos输出绑定的最后两个属性,它成功了。我的印象是,由于容器已经存在,这两个属性都将被忽略。

"partitionKey": "undefined",
"collectionThroughput": "undefined"
 类似资料:
  • 我在CosmosDB中有两个集合,和。 集合保存所有历史价格,并不断更新。 我想创建一个Azure函数,它监听< code>StockPrices更新(< code>CosmosDBTrigger),然后对触发器传递的每个< code >文档执行以下操作: 在集合中查找具有匹配代码的股票 在集合中更新股票价格 我不能用<code>CosmosDB(绑定仅在触发器传递单个项时有效)。 我看到它工作的

  • 我制作了一个Azure函数(http触发器),并使用Visual Studio 2019将其部署在门户中。 该函数工作正常,我现在将添加一个绑定到我的CosmosDB。我导航到我的函数,然后单击“集成”。现在我看到了触发器、函数以及输入和输出绑定。 我应该可以在这里添加一个新的输入绑定。但我没有“添加”按钮。我做错了什么?

  • 我想创建一个Azure函数,它接受传递给它的JSON主体,并将该文档插入到Azure COSMOSDB实例中。 并按如下方式实现该函数: 在门户中,我放入了一个简单的示例文档:

  • 在Azure Functions中,我可以轻松地创建到Cosmos DB Connection的输入绑定,并指定SqlQuery,以便在每次调用时将一些数据传递到我的函数中,如下所述:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb#input---example-2 我想知道这个查

  • 在app服务中有一个learn_DOCUMENTDB配置设置,它具有到cosmos db实例的有效连接字符串(是自动创建的)。 错误日志条目表示: 无法将CosmosDB绑定到类型“System.String”。可能的原因:1)试图绑定到“Microsoft.Azure.Documents.Client.DocumentClient,Microsoft.Azure.DocumentDB.Core,

  • 我在学习http://martinabbott.azurewebsites.net/2016/06/11/fun-with-azure-functions-and-the-emotion-api/ 我在集成选项卡中有名为“图片”的Blob触发器存储容器。myblob路径是“图片/{名称}”没有定义输入。输出是DocumentDB。我已经验证访问密钥是正确的。 我想知道错误的原因是什么?与 Azur