使用AWS参数存储的更好方式? 1.将所有变量作为JSON保留在单个参数中2.将每个变量作为单独的参数保留

问题描述 投票:1回答:1

我有一个Web应用程序要托管在AWS云上。我们正在从AWS参数存储读取所有应用程序配置。但是,我不确定是否应该将所有变量都以json格式作为单个参数使用,还是应该对参数存储区中的每个变量使用一个参数。

具有单个参数作为json字符串的问题,AWS参数存储不会返回JSON对象,而是一个字符串。因此,我们必须将字符串绑定到涉及反射的模型(这是非常繁重的操作)。每个变量具有单独的参数意味着程序中具有额外的代码行(这并不昂贵)。

另外,我的应用程序是一个多租户应用程序,在中间件中有一个租户解析器。因此,将为每个租户提供配置变量。

amazon-web-services configuration appsettings ssm aws-parameter-store
1个回答
1
投票

这里没有正确的答案-这要看情况。我可以分享的是我团队的逻辑。

1)应用程序始终构建为读取环境变量以覆盖默认值在我们的应用程序中,所有配置/秘密都是以此方式设计的。主要原因是我们不喜欢未加密存储在磁盘上的机密。是的,即使这样也可以读取env变量,但其风险要小于可能会备份的磁盘]

2)SSM参数存储可以将值输入环境变量中这包括Lambda,ECS容器等。这使我们能够存储加密的(SSM安全),传输加密的内容并注入到应用程序中。它为您处理KMS解密(假设您具有设置权限)。

3)Jenkins(我们的CI)也可以从Jenkins凭证中注入env变量

4)没有什么可以阻止您构建支持这两种技术的库我们的代码读取一个称为secrets_json的环境变量,如果该变量存在并通过验证,则将其中的键/值设置为环境变量。注意:这也可以处理您提到的有关JSON是字符串的方面。

结论这里的关键是我相信您希望拥有灵活的代码并处理几种不同的情况。在所有应用程序设计中均将其用作默认值。我们历史上使用1:1映射,因为最初的SSM长度受到限制。我们可能仍会使用它,因为它很灵活,并且支持Secrets Manager尚不支持的某些特殊轮换策略。

希望我们的经验可以让您为您和您的团队选择最佳方式。

© www.soinside.com 2019 - 2024. All rights reserved.