dar*_*eck 5 azure azure-keyvault azure-functions
我想知道是否可以初始化队列触发器甚至blob触发从azure Vault读取的连接字符串.
现在,我们必须通过刀片属性通过环境设置来设置这些数据连接.但是,我想只使用服务主体来检索azure密钥保险库的令牌以获取所有这些连接字符串.
我正在试图弄清楚如何在java中使用它.
谢谢,德里克
此功能在此处进行跟踪和处理:
编辑28/11/2018:目前正在预览中
前回答07/10/2018 此解决方案不适用于使用消费计划的触发器.
与此同时,我对您的问题进行了一些研究,如果您使用Azure Function v2,则可以从密钥保险库中读取配置.
我从Visual Studio创建了Azure Functions v2(.NET Standard).
它用:
因为Azure Functions v2使用ASP.NET核心,所以我能够引用此链接来配置我的功能应用程序以使用Azure Key Vault:
ASP.NET Core中的Azure Key Vault配置提供程序
我添加了这个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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的Azure功能使用MSI:
我已经为我的密钥保险库上的功能应用授予了读/列密码权限:
我有一个小队列触发函数:
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}");
}
}
Run Code Online (Sandbox Code Playgroud)
该queueName是在定义local.settings.json文件(应用程序设置刀片一旦部署):
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"keyVaultName": "thomastestkv",
"queueName": "myqueue"
}
}
Run Code Online (Sandbox Code Playgroud)
该queueConnectionString配置在我keyvault:
| 归档时间: |
|
| 查看次数: |
4345 次 |
| 最近记录: |