2

我为EventHubTrigger. 这是基本代码:

public static class MyEventHubTriggerFunction
{

    [FunctionName("MyEventHubTriggerFunction")]
    public static async Task Run([EventHubTrigger("EventHubName",
        Connection = "EventHubConnectionString")] 
        string[] eventHubMessages, 
        TraceWriter log, 
        ExecutionContext context)
        { ... }
}

这是我的 local.settings.json 文件:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "EventHubName": "<myEventHubName>",
    "EventHubConnectionString": "<myEventHubConnectionString>"
  }
}

在部署此应用程序时,它可以在机器或 Azure 上正常运行。这里必须将 EventHubConnectionString 粘贴到 json 文件中。

有没有办法使用 MSI 身份验证从 KeyVault 机密中获取该值,并且它应该自动用于实例化EventHubTrigger实例中的 Run 方法参数?

我知道如何在函数范围内获取机密,KeyVaultClient但这里的函数触发run方法本身需要连接字符串,因此我需要一种方法来使用 KeyVault 机密覆盖它。

4

2 回答 2

2

今天不支持此功能。请参阅https://github.com/Azure/azure-webjobs-sdk/issues/746

一种方法(此处提到)是使用 ARM 模板进行部署并从 KeyVault 注入密钥。

于 2018-07-31T15:42:29.693 回答
1

如果有人(如我)偶然发现这个问题并且没有找到这个(https://medium.com/statuscode/getting-key-vault-secrets-in-azure-functions-37620fd20a0b

简而言之(如果链接断开):

在本地运行 - 在 local.settings.json 中设置

迁移到 Azure 时,将连接字符串输入到您的密钥保管库中

最后添加应用程序设置(与 local.settings.json 文件中的密钥相同),但输入密钥库 url 而不是实际的连接字符串

笔记!Azure 函数必须有权访问密钥保管库。这在文章中也有描述

于 2020-03-20T13:12:53.373 回答