Я работаю с функциями Azure впервые. Я пытаюсь написать простую функцию, которая отвечает на документы, измененные или добавленные в коллекцию CosmosDb. Функция, которую я написал, выглядит следующим образом:
[FunctionName("ChangeLog")]
public static void Run([CosmosDBTrigger(
databaseName: "Recaptcha",
collectionName: "Rules",
ConnectionStringSetting = "CosmosDBConnection",
LeaseCollectionName = null)]IReadOnlyList<RuleConfigCollection> documents)
{
if (documents != null && documents.Count > 0)
{
ApplicationEventLogger.Write(
Diagnostics.ApplicationEvents.RecaptchaRulesChanged,
new Dictionary<string, object>()
{
{ "SomeEnrichment", documents[0].Rules.ToList().Count.ToString() }
});
}
}
Насколько я понимаю, сбор аренды необходим, когда несколько функций направлены на один и тот же CosmosDb, но в моем случае это не актуально. Вот почему я установил размер арендной платы на null
.
Я опубликовал это в Azure из Visual Studio и вижу, что функция создана со следующим function.json
:
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.12",
"configurationSource": "attributes",
"bindings": [
{
"type": "cosmosDBTrigger",
"connectionStringSetting": "CosmosDBConnection",
"collectionName": "Rules",
"databaseName": "Recaptcha",
"leaseDatabaseName": "Recaptcha",
"createLeaseCollectionIfNotExists": false,
"name": "documents"
}
],
"disabled": false,
"scriptFile": "../bin/My.Namespace.Functions.App.dll",
"entryPoint": "My.Namespace.Functions.App.ChangeLogFunction.Run"
}
Я также добавил параметр приложения с именем CosmosDBConnection
со значением AccountEndpoint=https://my-cosmosdb.documents.azure.com:443;AccountKey=myAccountKey;
.
Я запускаю функцию, затем добавляю документ в коллекцию, но в журналах просто продолжают появляться сообщения No new trace in the past n min(s)
, а ожидаемые события приложения не записываются.
Я что-то пропустил в этой настройке?