【问题标题】:Per environment configurations for Azure Functions?Azure Functions 的每个环境配置?
【发布时间】:2020-10-22 16:19:16
【问题描述】:

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

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

我曾与 Consul 进行本地安装,这很容易。我不确定在 Azure 的情况下应该采用什么正确的方法。使用带有环境标签的 Azure App Configuration 服务,还是进入每个功能实例并手动添加配置并使用 KeyVault 映射一些?

【问题讨论】:

  • 我的回答对您有帮助吗,或者还有其他问题吗?

标签: c# azure azure-functions serverless


【解决方案1】:

host.json

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

Settings -> Application Settings -> New Application Setting

你填写的地方

Name: ApiKey
Value: thankscasper

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

密钥库

如果您确实想使用 KeyVault,请为 Function App 设置系统分配的托管标识

根据 KeyVault 的访问策略授予托管标识获取密钥的权限

如果您存储的秘密称为X,您可以从密钥库访问它

Environment.GetEnvironmentVariable("X", EnvironmentVariableTarget.Process);

【讨论】:

  • 感谢您的回答。对于您的第一个解决方案,我不希望每次部署新功能时都手动输入配置。也可以使用超过 1 个功能使用某个配置。因此,理想情况下,不应为多个功能部署复制相同的配置。
  • @Ibrahim,在您上传新版本的函数应用后,该设置会保留在那里。此外,您可以使用Advanced edit 选项复制粘贴您的host.json 文件。
  • 如果多个功能应用使用相同的设置,最好将它们放入保险库中:)
猜你喜欢
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 2021-01-17
  • 2014-09-27
  • 2023-04-06
  • 1970-01-01
相关资源
最近更新 更多