У меня есть приложение-функция .net core 2.0 Azure, и у меня есть код инициализатора Keyvault, который выбирает значения из keyvault и присваивает ConcurrentDictionary, функциональность работает нормально, но я вижу множество сбоев зависимостей для каждого из URI keyvault. настройки. Я предполагаю, что APPSETTING_ добавляется к каждому значению настройки. Моя логика кода читает все переменные окружения и пытается выяснить, какие настройки содержат адрес домена Keyvault, для этих значений я обращаюсь к API Keyvault для разрешения значений.
Код:
var envVar = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process);
var retryInstance = RetryHelper.Instance;
SecretBundle secretBundle = new SecretBundle();
var keyVaultAddress = ConfigurationHelper.GetEnvironmentVariables("KeyVaultBaseUrl");
if (!string.IsNullOrWhiteSpace(keyVaultAddress))
{
foreach (string envKey in envVar.Keys)
{
string envValue = envVar[envKey].ToString();
//Check if previously the values have been added to the dictionary or not
if (envValue.Contains(Constants.VAULT) && envValue.Contains(Constants.HTTPS) && !KeyVaultValues.ContainsKey(envKey))
{
retryInstance.RetryAction( () =>
{
secretBundle = KeyVaultInitializer.GetValuesFromKeyvault(envKey,
keyVaultAddress).Result;
}, Constants.MAXRETRIES, Constants.WAITBETWEENRETRY, RetryHelper.BackOffStrategy.Linear);
if (secretBundle != null && secretBundle.Value != null )
KeyVaultValues.TryAdd(envKey, secretBundle.Value);
}
}
} else
{
//TODO: Log failure event
}