Эта функция отслеживается и выполняется здесь:
РЕДАКТИРОВАНИЕ 28/11/2018: в настоящее время оно находится в режиме предварительного просмотра
Предыдущий ответ 07/10/2018 Это решение не будет работать для триггеров, использующих план потребления.
В то же время я провел некоторое исследование вашей проблемы, и вы можете прочитать конфигурацию из хранилища ключей, если вы используете функцию Azure v2.
Я создал функции Azure v2 (.NET Standard) из VisualStudio.
Используется:
- NETStandard.Library v2.0.3
- Microsoft.NET.Sdk.Functions v1.0.22
- Microsoft.Azure.WebJobs v3.0.0
- Microsoft.Azure.WebJobs.Extensions.Storage v3.0.0
Потому что функция Azureion v2 использует ядро ASP.NET, я смог сослаться по этой ссылке, чтобы настроить приложение функций для использования хранилища ключей Azure:
поставщик конфигурации хранилища ключей Azure в ASP.NET Core
Я добавил этот пакет nuget:
Я настроил свое приложение для использования этого пакета nuget:
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Linq;
[assembly: WebJobsStartup(typeof(FunctionApp1.WebJobsExtensionStartup), "A Web Jobs Extension Sample")]
namespace FunctionApp1
{
public class WebJobsExtensionStartup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
// Gets the default configuration
var serviceConfig = builder.Services.FirstOrDefault(s => s.ServiceType.Equals(typeof(IConfiguration)));
var rootConfig = (IConfiguration)serviceConfig.ImplementationInstance;
// Creates a new config based on the default one and adds the keyvault configuration builder
var keyvaultName = rootConfig["keyVaultName"];
var config = new ConfigurationBuilder()
.AddConfiguration(rootConfig).AddAzureKeyVault($"https://{keyvaultName}.vault.azure.net/").Build();
// Replace the existing config
builder.Services.AddSingleton<IConfiguration>(config);
}
}
}
В моих функциях Azure используется MSI:
![Azure Functions - Managed Service Identity](https://i.stack.imgur.com/yTRbK.jpg)
IМне предоставлены разрешения на чтение / список секретов для приложения функций в моем хранилище ключей:
У меня есть функция, запускаемая небольшой очередью:
public static class Function2
{
[FunctionName("Function2")]
public static void Run([QueueTrigger("%queueName%", Connection = "queueConnectionString")]string myQueueItem, ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
}
}
queueName
определено в local.settings.json
файл (после установки блейда настроек приложения):
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"keyVaultName": "thomastestkv",
"queueName": "myqueue"
}
}
В моем наборе ключей настроено queueConnectionString
:
![Azure Key Vault - Secrets](https://i.stack.imgur.com/4I1s5.jpg)