Приложение AzureFunctionapp APPSETTING_ добавляется - PullRequest
1 голос
/ 11 октября 2019

У меня есть приложение-функция .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
        }

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Вы не можете использовать «_» в качестве секретного имени.

Имя объекта - это предоставленное пользователем имя, которое должно быть уникальным в хранилище ключей. Имя должно быть строкой из 1-127 символов, содержащей только 0-9, az, AZ и -.

0 голосов
/ 11 октября 2019

Вы передаете envKey на KeyVaultInitializer.GetValuesFromKeyvault, конечно, вы хотите использовать значение настройки, а не ключ?

...