Можно ли использовать Azure Key Vault с функциями для хранения строки соединения для триггеров очереди? - PullRequest
0 голосов
/ 28 января 2020

Мне удалось использовать хранилище ключей внутри приложения функций , как описано здесь , но когда я попытался использовать хранилище ключей для хранения строки подключения функции с помощью триггера очереди, у меня возникли проблемы с Строка подключения учетной записи хранения. Кажется, функция находит параметр, который я предоставляю, но либо не возвращает секрет, либо не любит информацию, когда выдает ошибку No valid combination of account information found.

Моя функция определена как:

        [FunctionName("ReadQueueForMessage")]
        public static async Task Run([QueueTrigger("%AzureQueueTrigger%", Connection = "AzureWebJobsStorage")] string myQueueItem,
            Binder binderinputblob,
            ILogger log)

Это прекрасно работает, если я просто определяю строку подключения в моем local.settings.json. То, что я пытаюсь сделать, это вместо того, чтобы просто вставить строку подключения в файл json, я хочу указать функцию на хранилище ключей с помощью следующего синтаксиса:

"AzureWebJobsStorage": "@Microsoft.KeyVault(SecretUri=https://myappkeyvault.vault.azure.net/secrets/myapp-AzureWebJobsStorage-Queue/the-guid-of-secret)",

Я сделал go в хранилище ключей и обновите политики доступа, включив в него приложение-функцию, чтобы оно могло читать / перечислять секреты. В документации здесь показано, как выполнить обновление конфигурации после ее развертывания на Azure. Я пытаюсь проверить сначала в Visual Studio. Может в этом проблема? Или вообще невозможно использовать секрет таким образом?

1 Ответ

1 голос
/ 30 января 2020

Сначала я пытаюсь протестировать в Visual Studio.

Пока с использованием Azure Ссылки на хранилище ключей с Azure Функции не поддерживают работу на локальном , что подтверждается Azure Функциональной командой. Если вы все еще хотите тестировать на локальном компьютере, вы можете внедрить неполный локальный обходной путь, подобный этому проблема .

Я тестирую на портале, и он работает хорошо. Вы можете сослаться на следующие шаги, как показано ниже:

1. В VS Function.cs, затем опубликуйте sh до лазури:

 public static void Run([QueueTrigger("queue", Connection = "AzureWebJobsStorage")]string myQueueItem, TraceWriter log)
 {
     log.Info($"C# Queue trigger function processed: {myQueueItem}");
     string connectionString = System.Environment.GetEnvironmentVariable("AzureWebJobsStorage");
     log.Info($"The connection string is {connectionString}");
 }

2. Установите AzureWebJobsStorage на Appsettings setting на портале.

enter image description here

3. Затем он будет работать нормально.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...