我正在 Azure Durable Function 中实现 Azure Key Vault Managed Identity。
启动.cs
public class Startup : FunctionsStartup
{
private const string localSettingsJson = "local.settings.json";
private IConfigurationBuilder GetConfiguration(FunctionsHostBuilderContext context) => new ConfigurationBuilder()
.SetBasePath(context.ApplicationRootPath)
.AddJsonFile(localSettingsJson, optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
public override void Configure(IFunctionsHostBuilder builder)
{
FunctionsHostBuilderContext context = builder.GetContext();
var configBuilder = GetConfiguration(context);
DefaultAzureCredential credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = "61063c32-379d-4e9d-8977-4b826c2bc50a" });
SecretClient secretClient = new SecretClient(new Uri("https://storageaccount.vault.azure.net/"), credential);
configBuilder.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
IConfigurationRoot config = configBuilder.Build();
var keyVaultConnectionStringValue = config["storageaccount-connectionstring"];
//Getting the connection string value in keyVaultConnectionStringValue.
var services = builder.Services;
services.ConfigureAutoMapper();
}
}
编排.cs
public class Orchestration
{
[FunctionName("Orchestrator")]
public async Task Run([OrchestrationTrigger] IDurableOrchestrationContext context, ILogger logger)
{
//Code
}
}
我在 keyVaultConnectionStringValue 变量中获取连接字符串值。现在我想替换local.settings.json文件中的 keyVaultConnectionStringValue 变量值 => 值部分 =>AzureWebJobsStorage
部分值。当前值为“ UseDevelopmentStorage=true
”,我想用 Azure Key Vault 连接字符串值替换。
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true", // Replace "UseDevelopmentStorage=true" value with Azure Key Vault connection string value.
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
},
"WorkflowConfiguration": {
"Name": "Lilly"
}
}
注意:我不想使用环境变量。
非常感谢任何帮助。