AWS Systems Manager Parameter Store
Parameter Store 是一种集中式配置数据存储,用于存储称为参数的具名值。参数是存储在 Parameter Store 中的任何数据片段,例如文本块、名称列表、AMI ID、许可证密钥等。借助 Parameter Store,您可以安全地大规模存储、组织和检索配置数据。
Parameter Store 简化了跨环境的配置管理。您可以标准化应用程序在运行时访问关键数据的方式,而无需对值进行硬编码或依赖分散的存储解决方案。这样就可以保持一致性、强制实施治理规范,并构建更安全、更易于维护的系统。
Parameter Store 支持以下参数类型:
-
String此类型适用于纯文本值,例如环境名称、端点 URL 或资源标识符。
-
StringList此类型适用于以逗号分隔的纯文本值列表。例如,您可以存储值
subnet-123abc,subnet-456def,subnet-789ghi。 -
SecureString将
SecureString用于需要加密的配置值,例如服务端点和账户标识符。对于数据库凭证、API 密钥或令牌等机密,我们建议使用 AWS Secrets Manager,该服务提供专门构建的安全控制措施,包括自动轮换和跨区域复制。Parameter Store 使用 AWS Key Management Service 来加密值。
有关 参数类型的更多信息,请参阅Parameter Store 参考。
我应在哪里存储应用程序数据?
使用下表来选择适用于您的应用程序数据的服务。
注意
如果您管理诸如用户名、密码或任何其他密钥之类的凭证,我们建议使用 AWS Secrets Manager。Secrets Manager 专为管理数据库凭证、API 密钥和受支持的第三方软件提供的密钥等密钥而设计。有关更多信息,请参阅《AWS Secrets Manager 用户指南》中的什么是 AWS Secrets Manager?。
| 功能 | Parameter Store | AWS AppConfig | AWS Secrets Manager |
|---|---|---|---|
|
使用案例 |
|
|
|
|
典型数据 |
|
|
|
|
加密 |
可选,使用 |
AWS 托管式静态加密;(可选)附加客户自主管理型密钥 |
使用 AWS 托管式密钥或客户自主管理型密钥进行 AWS KMS 静态加密 |
|
凭证轮换 |
无 |
不适用 |
自动,使用原生数据库集成 |
|
成本 |
标准套餐免费;高级套餐和超出限额的吞吐量需要计费 |
按配置请求数计费 |
按每月密钥数和 API 调用次数计费 |
|
部署 |
提供版本控制,无部署前验证或自动回滚 |
逐步实施、有部署前验证以及基于 CloudWatch Logs 警报的自动回滚 |
使用暂存标签进行版本控制 |
Parameter Store 特征
Parameter Store 支持以下功能:
-
集中配置更新
无需更改代码或重新部署即可更新配置,从而提高运营敏捷性并降低风险。例如,可以在迁移清单服务后更新 /myapp/prod/inventory-service-endpoint 以指向新端点。
-
高性能吞吐量选项
Parameter Store 提供适用于小型工作负载的默认吞吐量。对于需要更高请求速率的大型或延迟敏感型应用程序,可以启用高吞吐量模式,但需额外付费。
如果应用程序频繁或大规模地检索参数,请尽早评估吞吐量设置以避免节流。有关启用高吞吐量模式的信息,请参阅管理 Parameter Store 吞吐量。
-
分层参数管理
使用参数层次结构对相关参数进行分组,从而更轻松地在各种环境和应用程序中发现、管理和筛选参数。例如,您可以创建命名规范 /env/computer-type/app/data,然后创建应用程序特定的参数,例如 /dev/webserver/linux/approved-ami 和 /dev/webserver/windows/approved-ami。您可以通过检索路径 /dev/webserver 来查找开发环境的所有 Web 服务器参数,也可以通过检索路径 /dev/webserver/linux 来仅查找 Linux 映像参数。
-
版本控制
对于每个参数,Parameter Store 会保留 100 个最近版本。您可以在调查运行问题时检查和重建以前的值。
-
集成 IAM
使用 IAM 策略来确定应用程序是否有权读取、写入、列出或删除参数。例如,您可以编写一个有权读取以 /myapp/prod/* 为前缀的参数,但不能读取以 /myapp/dev/* 为前缀的参数的应用程序角色。此外还可以向角色授予解密加密参数的权限。
-
从其他 AWS 服务访问的权限
您可以引用来自其他 AWS 服务的参数值。下面是一些示例:
-
Lambda 函数可以使用参数和密钥 Lambda 扩展来检索参数和密钥。
-
Amazon Elastic Container Service 和 AWS Fargate 允许您注入环境变量,这些变量的值将在 Parameter Store 中集中管理。
-
AWS CloudFormation 模板可以引用参数值。
-
AWS AppConfig 使您能够创建引用参数的配置文件,从而允许您使用逐步推出、基于警报的回滚和内置数据验证等功能安全地部署配置更改。
-
AWS CodeBuild 让您能够定义环境变量,这些变量的值会在构建时从 Parameter Store 中动态检索。
-
-
共享账户访问权限
将配置数据集中保管在单个 AWS 账户中,并与其他需要访问权限的账户共享参数。有关更多信息,请参阅 使用 Parameter Store 中的共享参数。
-
操作系统修补
Amazon EC2 允许您通过引用参数而不是对 AMI(AMI)ID 进行硬编码来指定新实例的操作系统。这种方法可确保您的实例自动使用最新的已修补和更新的映像。AWS 和操作系统供应商提供用于跟踪当前 AMI 版本的公共参数,因此您无需手动管理更新。您还可以定义自己的参数来引用集中管理的黄金 AMI,从而更轻松地在整个组织内强制执行一致的、经批准的配置。
-
事件和通知
通过订阅参数更改事件来实现 Parameter Store 中工作流的自动化。此外还可以使用更改事件来强制执行过期,并在参数未在指定的时间范围内轮换时收到通知。
Parameter Store 中的参数层级
Parameter Store 提供不同的参数层级来控制存储限制:AWS 账户和区域中的最大参数数量和大小。可单独配置每个参数来使用标准层级或高级层级。
可以混合使用标准参数和高级参数。例如,在同一 AWS 账户和区域中,您最多可以使用 10 万个高级参数和 1 万个标准参数。下表介绍了每种参数类型支持的不同功能。
下表介绍了参数层之间的区别。
| 功能或使用案例 | 标准 | 高级 |
|---|---|---|
|
使用案例 |
适合大多数配置数据和小型工作负载。这是默认值。 |
适合需要更高限额、更大值或参数策略的场景。 |
|
最大参数 (每个 AWS 账户和 AWS 区域) |
10000 |
100000 |
|
最大值大小 |
4 KB |
8 KB |
|
参数策略 |
不支持 |
支持 有关更多信息,请参阅 在 Parameter Store 中分配参数策略。 |
|
跨 AWS 账户共享功能 |
不支持 |
支持 有关更多信息,请参阅 使用 Parameter Store 中的共享参数。 |
|
升级和降级功能 |
可升级 |
不可降级 |
|
成本 |
无额外费用 |
需支付费用 有关更多信息,请参阅 Parameter Store 的 AWS Systems Manager 定价 |
大多数配置数据应使用标准参数。仅在需要标准参数不支持的功能时才使用高级参数。
有关标准参数和高级参数的详细比较,请参阅选择参数层级。