Параметр функции Azure из настроек - PullRequest
0 голосов
/ 08 марта 2019

Ссылаясь на следующий пример:

public static void Run([CosmosDBTrigger(
            databaseName: "ToDoItems",
            collectionName: "Items",
            ConnectionStringSetting = "CosmosDBConnection",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents, 
            ILogger log)

Насколько я понимаю, connectionStringSetting - это не строка подключения, которую нужно использовать, а имя параметра для поиска, содержащего ConnectionString.

Будет ли это работать и для CollectionName, и для имени базы данных?Я понимаю, что могу поэкспериментировать и выяснить, но я не понимаю, как это можно решить во время сборки / развертывания?

Я вижу, что некоторым свойствам присваиваются значения, а другие берут их из конфигурации?Это базовый конструктор для CosmosDBTrigger, который заботится об использовании соответствующего значения?

1 Ответ

0 голосов
/ 11 марта 2019

Привязка к функции - это способ декларативного подключения другого ресурса к функции;привязки могут быть связаны как входные привязки, выходные привязки или оба.Данные из привязок передаются в функцию в качестве параметров.

Вот небольшой пример функции Azure с использованием триггера CosmosDB, который вызывается при наличии вставок или обновлений в указанной базе данных и коллекции.

using Microsoft.Azure.Documents;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class CosmosTrigger
    {
        [FunctionName("CosmosTrigger")]
        public static void Run([CosmosDBTrigger(
            databaseName: "ToDoItems",
            collectionName: "Items",
            ConnectionStringSetting = "CosmosDBConnection",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents, 
            ILogger log)
        {
            if (documents != null && documents.Count > 0)
            {
                log.LogInformation($"Documents modified: {documents.Count}");
                log.LogInformation($"First document Id: {documents[0].Id}");
            }
        }
    }
}

и здесь приведена информация о привязке той же функции Azure, которая используется для передачи значения параметра в функцию

Привязка триггера Cosmos DB в function.jsonfile

{
    "type": "cosmosDBTrigger",
    "name": "documents",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<connection-app-setting>",
    "databaseName": "Tasks",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": true
}

Чтобы ответить на ваш вопрос , как это решается во время сборки / развертывания ": - Чтобы использовать его локально, мы передаем ту же информацию привязки в файле host.json иФайл local.settings.json.

Вот как он связывает информацию внутренне, проверяя имя параметра.

Надеюсь, это поможет.

...