我在本文后面的Azure Functions应用程序中实现了Azure Key Vault: https://medium.com/statuscode/getting-key-vault-secrets-in-azure-functions-37620fd20a0b
如本文所述,我正在使用托管服务标识(MSI),但看起来我无法读取Key Vault中的值。以下是应该读取值的行。
var myValue = (await kvClient.GetSecretAsync(Environment.GetEnvironmentVariable("documentDbkey"))).Value;
我应该使用key
作为我的参赛作品documentDb
还是使用以bf2550f4e
开头的版本ID?
这是错误:
执行函数时出现异常:IngridNotificationsFunction Microsoft.Azure.WebJobs.Host.FunctionInvocationException:Exception 执行功能时:IngridNotificationsFunction ---> System.ArgumentNullException:值不能为null。参数名称: 在异步的secretIdentifier Microsoft.Azure.KeyVault.KeyVaultClientExtensions.GetSecretAsync(??)
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at async Ingrid.Notifications.IngridNotifications.Initialize()at C:\ Users \ Sam \ Documents \ Visual Studio 2017年\项目\ Ingrid.Notifications \ Ingrid.Notifications \ IngridNotifications.cs :83点 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at async Ingrid.Notifications.IngridNotifications.Run(String myQueueItem) 在C:\ Users \ Sam \ Documents \ Visual Studio 2017年\项目\ Ingrid.Notifications \ Ingrid.Notifications \ IngridNotifications.cs :38点 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at 异步 Microsoft.Azure.WebJobs.Host.Executors.VoidTaskMethodInvoker2.InvokeAsync[TReflected,TReturnType](TReflected instance,Object[] arguments) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\VoidTaskMethodInvoker.cs : 20 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker
2.InvokeAsync [TReflected,TReturnValue](对象 instance,Object [] arguments)at C:\项目\蔚webjobs-SDK-rqm4t的\ src \ Microsoft.Azure.WebJobs.Host \执行人\ FunctionInvoker.cs :63点 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at 异步 Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.InvokeAsync(IFunctionInvoker invoker,ParameterHelper parameterHelper,CancellationTokenSource timeoutTokenSource,CancellationTokenSource functionCancellationTokenSource,Boolean throwOnTimeout,TimeSpan timerInterval,IFunctionInstance实例)at C:\项目\天青-webjobs-SDK-rqm4t \ SRC \ Microsoft.Azure.WebJobs.Hos ...
我可能无法从Azure KeyVault读取值的原因是什么?
答案 0 :(得分:2)
System.ArgumentNullException:值不能为null
根据例外情况,它表示Environment.GetEnvironmentVariable("documentDbkey")
为空。
我可能无法从Azure KeyVault读取值的原因是什么?
如果我们想使用 Environment.GetEnvironmentVariable(“documentDbkey”),我们需要配置azure功能应用设置,以便在您的情况下添加值为https://{yourkeyvalue}.vault.azure.net/Secrets/{yourSecretName}
的密钥documentDbkey。
<强>更新强>
您可以直接使用以下代码来获取秘密。
kvClient.GetSecretAsync("https://{yourkeyvalue}.vault.azure.net/Secrets/{yourSecretName}").Value
在article中还提到他使用应用程序设置来存储密钥库密钥id。
你会注意到我在这种情况下使用环境变量(应用程序设置)作为密钥保管库密码ID,但这本身并不是秘密 - 只是秘密所在的位置存储