Я уверен, что мне здесь не хватает чего-то простого, но я не могу заставить это работать.Я установил Azure Storage Simulator локально и создал функцию Azure 2.0 через Visual Studio 2019.
Я могу запустить функцию без привязки CosmosDb следующим образом:
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"EndpointUri": "https://localhost:8081",
"PrimaryKey": "<KEY_HERE>"
}
}
Function.cs
public static class Function
{
[FunctionName("func")]
public static async Task Run(
[TimerTrigger("0 * * * * *")] TimerInfo myTimer,
ILogger log
)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
var endpointUri = new Uri(Environment.GetEnvironmentVariable("EndpointUri", EnvironmentVariableTarget.Process));
var primaryKey = Environment.GetEnvironmentVariable("PrimaryKey");
using (var client = new DocumentClient(endpointUri, primaryKey))
{
var queryOptions = new FeedOptions { MaxItemCount = -1 };
var documents = client.CreateDocumentQuery<Doc>(UriFactory.CreateDocumentCollectionUri("db_id", "col_id"), queryOptions);
foreach (var document in documents)
{
...
}
}
}
}
Код выполняется должным образом и получает документы, которые у меня есть в моем эмуляторе локального хранилища.
Я хотел бы переключить это, чтобы использоватьхотя привязка CosmosDb и не может найти магические заклинания, необходимые, чтобы заставить его работать.
Я обновил сигнатуру метода на Function.cs
до:
public static async Task Run(
[TimerTrigger("0 * * * * *")] TimerInfo myTimer,
ILogger log,
[CosmosDB(
databaseName: "db_id",
collectionName: "col_id",
ConnectionStringSetting = "AzureWebJobsStorage",
SqlQuery = "SELECT * FROM col_id")
] IEnumerable<Doc> documents
)
Когда я запускаюТем не менее, я получаю следующую ошибку:
[17.05.2009 15:09:29] Выполнено 'func' (Failed, Id = 8326b1c4-3dd5-461d-b8de-d777c5b925d8)[17.05.2009 15:09:29] System.Private.CoreLib: Исключительная ситуация при выполнении функции: func.Microsoft.Azure.WebJobs.Host: параметр привязки исключения «документы».Microsoft.Azure.DocumentDB.Core: значение не может быть нулевым.[17.05.2009 15:09:29] Имя параметра: authKeyOrResourceToken.
Я перепробовал ряд других поворотов, но безуспешно.
Первый былиспользовать полную явную строку подключения по умолчанию: "AzureWebJobsStorage": "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;",
, как указано в документах Azure .
Есть идеи, как изменить вышеприведенное выполнение для локального выполнения в моем эмуляторе хранилища Azure?