Azure Functions 的每个环境配置?

Per environment configurations for Azure Functions?

对于本地开发,我可以做 Environment.GetEnvironmentVariable("ApiKey") 并且在我的 local.settings.json 文件中我会有一个 JSON 属性 ApiKey: "abc123".

但是当我将我的函数从 Visual Studio 或从 Azure Pipeline 发布到暂存或生产中时。他们应该根据环境和 KeyVault 读取配置值。

我使用过 Consul 本地安装,这很容易。对于 Azure,我不确定什么才是正确的方法。使用带有环境标签的 Azure 应用程序配置服务或进入每个功能实例并手动添加配置并使用 KeyVault 映射一些配置?

host.json

您不需要使用 KeyVault 来存储这些秘密。 在 Azure 门户中打开您的 Function App,然后

Settings -> Application Settings -> New Application Setting

填写的地方

Name: ApiKey
Value: thankscasper

您可以像在本地一样访问它们。

KeyVault

如果您确实想使用 KeyVault,请为 Function App 设置一个 system-assigned 托管身份

根据 KeyVault 的访问策略

授予托管身份 get 密钥权限

如果您存储的密钥名为 X,您可以使用

从密钥库访问它
Environment.GetEnvironmentVariable("X", EnvironmentVariableTarget.Process);