AWS System Manager Parameter Store可用于存储配置。
可以使用 AWS API 在您的应用程序中直接使用这些配置。AWS 还提供包以从参数存储中获取值。示例:对于 dotnet 核心 -- https://aws.amazon.com/blogs/developer/net-core-configuration-provider-for-aws-systems-manager/
在 Parameter Store 中,值可以存储为String
、StringList
或SecureString
。
SecureString
可用于存储密码,并且可以使用内置或用户定义的 KMS 密钥进行保护。因此,KMS 密钥只是提供了一个选项(密钥)来保护我们存储在各种 AWS 资源中的数据。
为了存储更安全的信息,可以使用AWS Secret Manager 。
价钱:
标准参数足以存储正常使用的参数。但请确保不要过于频繁地获取参数,并且有一个重试逻辑来从 AWS 参数存储中获取参数,因为存在速率限制(AWS 包将在内部处理重试逻辑,所以我们不需要担心。它甚至提供了在一段时间后刷新配置值的选项)。最好在应用程序启动时获取所有必需的配置值并将其存储在in-memory cache
.
Parameter Store 和 Secret Manager 使用路径形式的命名。这对于存储特定于环境的配置很有用,也可以使用策略根据路径限制对参数的访问。
例子:
- 参数名称 --> /AppName/Environment/ParameterName --> /app/dev/version, /app/prod/version (允许更长的路径)
- 基于路径(名称)策略的限制
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSMAccess",
"Effect": "Allow",
"Action": [
"ssm:PutParameter",
"ssm:DeleteParameter",
"ssm:GetParameterHistory",
"ssm:GetParametersByPath",
"ssm:GetParameters",
"ssm:GetParameter",
"ssm:DescribeParameters",
"ssm:DeleteParameters"
],
"Resource": "arn:aws:ssm:*:*:parameter/*"
},
]
}