Amazon web services 使用AWS参数存储的更好方法?1.将所有变量作为JSON 2保存在单个参数中。将每个变量保持为单独的参数

Amazon web services 使用AWS参数存储的更好方法?1.将所有变量作为JSON 2保存在单个参数中。将每个变量保持为单独的参数,amazon-web-services,configuration,appsettings,ssm,aws-parameter-store,Amazon Web Services,Configuration,Appsettings,Ssm,Aws Parameter Store,我有一个web应用程序要托管在AWS云上。我们正在从AWS参数存储读取所有应用程序配置。但是,我不确定是应该将所有变量作为json格式的单个参数,还是在参数存储中为每个变量指定一个参数 将单个参数作为json字符串存在的问题是,AWS参数存储不返回json对象,而是返回字符串。所以我们必须将字符串绑定到一个涉及反射的模型(这是一个非常繁重的操作)。每个变量有单独的参数意味着程序中有额外的代码行(这并不昂贵) 另外,我的应用程序是一个多租户应用程序,在中间件中有一个租户解析程序。因此,每个租户都会

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

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


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

这里没有正确答案,这取决于具体情况。我能分享的是我团队的逻辑

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

2)SSM参数存储可以将值馈送到环境变量中
这包括Lambda、ECS容器等。 这允许我们存储加密(SSM安全)、传输加密和注入应用程序。它为您处理KMS解密(假设您具有安装权限)

3)Jenkins(我们的CI)还可以从Jenkins凭证中注入环境变量

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

结论
这里的关键是,我相信您希望代码具有灵活性,能够处理多种不同的情况。在所有应用程序设计中将其用作默认设置。我们历来使用1:1映射,因为最初SSM长度是有限的。我们仍然可以使用它,因为它是灵活的,并且支持secrets manager尚不支持的一些特殊轮换策略


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

这一推理似乎是合理的。从你的经历中我有了更好的判断:-)非常感谢分享你的观点,@sfblackl