

• Amazon Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# Amazon Systems Manager Parameter Store
<a name="systems-manager-parameter-store"></a>

Parameter Store 提供安全的分层存储，用于配置数据管理和密钥管理。您可以将密码、数据库字符串、Amazon Machine Image (AMI) ID 和许可证代码等数据存储为参数值。可以将值存储为纯文本或加密数据。您可以使用创建 Systems Manager 参数时指定的唯一名称，在脚本、命令、SSM 文档以及配置和自动化工作流中引用该参数。要开始使用 Parameter Store，请打开 [Systems Manager 控制台](https://console.amazonaws.cn//systems-manager/parameters)。在导航窗格中，请选择 **Parameter Store**。

Parameter Store 还与 Secrets Manager 进行了集成。您可以在使用其他已支持引用 Parameter Store 参数的 Amazon Web Services 服务时检索 Secrets Manager 密钥。有关更多信息，请参阅 [通过 Parameter Store 参数引用 Amazon Secrets Manager 密钥](integration-ps-secretsmanager.md)。

**注意**  
要实施密码轮换生命周期，请使用 Amazon Secrets Manager。您可以使用 Secrets Manager 在数据库凭证、API 密钥和其他密钥的整个生命周期内对其进行轮换、管理和检索。有关更多信息，请参阅 *Amazon Secrets Manager 用户指南*中的[什么是Amazon Secrets Manager？](https://docs.amazonaws.cn//secretsmanager/latest/userguide/intro.html)。

## 我的组织如何从 Parameter Store 获益？
<a name="parameter-store-benefits"></a>

Parameter Store 具备下列优势：
+ 使用安全、可扩展的托管密钥管理服务，无需管理服务器。
+ 通过将数据与代码分离来改善安保状况。
+ 分层存储配置数据和加密的字符串，而且可跟踪版本。
+ 实现以细粒度控制和审核访问。
+ 可靠地存储参数，因为 Parameter Store 托管在 Amazon Web Services 区域的多个可用区中。

## 谁应该使用 Parameter Store？
<a name="parameter-store-who"></a>
+ 任何希望集中管理配置数据的 Amazon 客户。
+ 希望存储不同登录和引用流的软件开发人员。
+ 希望在密钥和密码发生更改或未更改时接收通知的管理员。

## Parameter Store 具有哪些功能？
<a name="parameter-store-features"></a>
+ **更改通知**

  您可以为参数和参数策略配置更改通知并调用自动操作。有关更多信息，请参阅 [基于 Parameter Store 事件设置通知或触发操作](sysman-paramstore-cwe.md)。
+ **组织参数**

  您可以单独标记参数，以便根据为其分配的标签识别一个或多个参数。例如，可以为特定环境或部门标记参数。
+ **标签版本**

  您可以通过创建标签将别名与参数版本关联。标签可帮助您在存在多个版本时记住参数版本的用途。
+ **数据验证**

  您可以创建指向 Amazon Elastic Compute Cloud (Amazon EC2) 实例的参数，Parameter Store 会验证这些参数，以确保其引用预期的资源类型，此类资源存在，并且客户有权使用此类资源。例如，您可以使用 Amazon Machine Image (AMI) ID 创建一个参数，作为 `aws:ec2:image` 数据类型的值。Parameter Store 会执行异步验证操作，以确保参数值满足 AMI ID 的格式设置要求，并且指定的 AMI 在您的 Amazon Web Services 账户 中可用。
+ **引用密钥**

  Parameter Store 现已与 Amazon Secrets Manager 集成，因此您可以在使用其他已支持引用 Parameter Store 参数的 Amazon Web Services 服务时检索 Secrets Manager 密钥。
+ **与其他账户共享参数**

  您可以选择将配置数据集中保管在单个 Amazon Web Services 账户 中，以便与其他需要访问参数的账户共享参数。
+ **可从其他 Amazon Web Services 服务访问**

  您可以将 Parameter Store 参数与其他 Systems Manager 工具和 Amazon Web Services 服务结合使用，从集中存储中检索密钥和配置数据。参数可与 Systems Manager 工具配合使用，例如 Run Command、Automation 和State Manager（都是 Amazon Systems Manager 中工具）。您还可以在许多其他 Amazon Web Services 服务中引用参数，其中包括：
  + Amazon Elastic Compute Cloud（Amazon EC2）
  + Amazon Elastic Container Service（Amazon ECS）
  + Amazon Secrets Manager
  + Amazon Lambda
  + Amazon CloudFormation
  + Amazon CodeBuild
  + Amazon CodePipeline
  + Amazon CodeDeploy
+ **与其他 Amazon Web Services 服务集成**

  配置与以下 Amazon Web Services 服务的集成以实现加密、通知、监控和审计：
  + Amazon Key Management Service (Amazon KMS)
  + Amazon Simple Notification Service (Amazon SNS)
  + Amazon CloudWatch：有关更多信息，请参阅 [为参数和参数策略配置 Eventbridge 规则](sysman-paramstore-cwe.md#cwe-parameter-changes)。
  + Amazon EventBridge：有关更多信息，请参阅 [使用 Amazon SNS 通知监控 Systems Manager 状态更改](monitoring-sns-notifications.md) 和 [引用：Amazon EventBridge 事件模式和 Systems Manager 类型](reference-eventbridge-events.md)。
  + Amazon CloudTrail：有关更多信息，请参阅 [使用 Amazon CloudTrail 记录 Amazon Systems Manager API 调用](monitoring-cloudtrail-logs.md)。

## 什么是参数？
<a name="what-is-a-parameter"></a>

Parameter Store 参数是保存在 Parameter Store 中的任何数据片段，例如文本数据块、名称列表、密码、AMI ID、许可证密钥等。可以在脚本、命令和 SSM 文档中集中安全地引用此数据。

在引用参数时，使用以下惯例指定参数名称。

{{`ssm:{{parameter-name}}`}}

**注意**  
参数不能被引用或嵌套在其他参数的值中。参数值中不能包含 `{{}}` 或 `{{ssm:{{parameter-name}}}}`。

Parameter Store 支持三种类型的参数：`String`、`StringList` 和 `SecureString`。

有一个例外，当创建或更新参数时，您将以明文形式输入参数值，并且 Parameter Store 不对输入的文本执行验证。但是，对于 `String` 参数，您可以将数据类型指定为 `aws:ec2:image`，并且 Parameter Store 会验证您输入的值是否为 Amazon EC2 AMI 的正确格式；例如：`ami-12345abcdeEXAMPLE`。

### 参数类型：String
<a name="parameter-type-string"></a>

默认情况下，`String` 参数的值由您输入的任何文本数据块组成。例如：
+ `abc123`
+ `Example Corp`
+ `<img src="images/bannerImage1.png"/>`

### 参数类型：StringList
<a name="parameter-type-stringlist"></a>

`StringList` 参数值包含以逗号分隔的值列表，如下面的示例所示。

`Monday,Wednesday,Friday`

`CSV,TSV,CLF,ELF,JSON`

### 参数类型：SecureString
<a name="parameter-type-securestring"></a>

`SecureString` 参数的值是需要以安全的方式存储和引用的任何敏感数据。如果您有不希望用户更改或以明文形式引用的数据（例如密码或许可证密钥），则应使用 `SecureString` 数据类型创建这些参数。

**重要**  
请勿将敏感数据存储在 `String` 或 `StringList` 的参数中。对于必须保持加密状态的所有敏感数据，请仅使用 `SecureString` 参数类型。  
有关更多信息，请参阅 [使用 Amazon CLI 来创建 SecureString 参数](param-create-cli.md#param-create-cli-securestring)。

建议您在以下情形中使用 `SecureString` 参数：
+ 您想要跨 Amazon Web Services 服务使用数据/参数，但又不想以明文形式在命令、函数、代理日志或 CloudTrail 日志中公开这些值。
+ 您想要控制可以访问敏感数据的人。
+ 您希望在有人访问敏感数据时进行审核 (CloudTrail)。
+ 您希望对您的敏感数据进行加密，并想用自己的加密密钥管理访问。

**重要**  
只会加密 `SecureString` 参数的*值*。不会加密参数名称、描述和其他属性。

您可以将 `SecureString` 参数类型用于要加密的文本数据，例如密码、应用程序密钥、机密配置数据或需要保护的任何其他类型的数据。使用 Amazon KMS 密钥对 `SecureString` 数据进行加密和解密。您可以使用 Amazon 提供的默认 KMS 密钥，也可以创建和使用您自己的 Amazon KMS key。（如果您想要限制用户对 `SecureString` 参数的访问，可以使用自己的 Amazon KMS key。有关更多信息，请参阅 [有关使用 Amazon 默认密钥和客户托管密钥的 IAM 权限](sysman-paramstore-access.md#ps-kms-permissions)。）

您还可以将 `SecureString` 参数与其他 Amazon Web Services 服务结合使用。在以下示例中，Lambda 函数使用 [GetParameters](https://docs.amazonaws.cn/systems-manager/latest/APIReference/API_GetParameters.html) API 检索 `SecureString` 参数。

```
import json
import boto3
ssm = boto3.client('ssm', 'us-east-2')
def get_parameters():
    response = ssm.get_parameters(
        Names=['LambdaSecureString'],WithDecryption=True
    )
    for parameter in response['Parameters']:
        return parameter['Value']
        
def lambda_handler(event, context):
    value = get_parameters()
    print("value1 = " + value)
    return value  # Echo back the first key value
```

**Amazon KMS 加密和定价**  
如果您在创建参数时选择了 `SecureString` 参数类型，Systems Manager 将使用 Amazon KMS 加密参数值。

**重要**  
Parameter Store 仅支持[对称加密 KMS 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks)。不能使用[非对称加密 KMS 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/symmetric-asymmetric.html)来加密您的参数。要获取确定 KMS 密钥是对称还是非对称密钥的帮助，请参阅 *Amazon Key Management Service 开发人员指南*中的[识别对称 KMS 密钥和非对称 KMS 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/find-symm-asymm.html)。

创建 `SecureString` 参数不收取 Parameter Store 任何费用，但使用 Amazon KMS 加密的费用确实适用。有关更多信息，请参阅 [Amazon Key Management Service 定价](https://www.amazonaws.cn/kms/pricing)。

有关 Amazon 托管式密钥和客户管理型密钥的更多信息，请参阅《Amazon Key Management Service 开发人员指南》中的 [Amazon Key Management Service 概念](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html)。有关 Parameter Store 和 Amazon KMS 加密的更多信息，请参阅 [Amazon Systems ManagerParameter Store 如何使用 Amazon KMS](https://docs.amazonaws.cn/kms/latest/developerguide/services-parameter-store.html)。

**注意**  
要查看 Amazon 托管式密钥，请使用 Amazon KMS `DescribeKey` 操作。此 Amazon Command Line Interface（Amazon CLI）示例使用 `DescribeKey` 查看 Amazon 托管式密钥。  

```
aws kms describe-key --key-id alias/aws/ssm
```

**更多信息**  
+ [在 Parameter Store 中创建 SecureString 参数并将节点加入域（PowerShell）](sysman-param-securestring-walkthrough.md)
+ [使用 Parameter Store 安全地访问 CodeDeploy 中的密钥和配置数据](https://www.amazonaws.cn/blogs/mt/use-parameter-store-to-securely-access-secrets-and-config-data-in-aws-codedeploy/)
+ [有关 Amazon EC2 Systems Manager Parameter Store 的有趣文章](https://www.amazonaws.cn/blogs/mt/interesting-articles-on-ec2-systems-manager-parameter-store/)

## 参数大小限制
<a name="parameter-size-limits"></a>

根据您使用的参数层，Parameter Store 对参数值有不同的大小限制：
+ **标准参数**：最大值大小为 4 KB
+ **高级参数**：最大值大小为 8 KB

如果需要存储大于 4 KB 的参数值，则必须使用高级参数层。高级参数提供了附加功能，但会在您的 Amazon 账户中产生费用。有关参数层及其功能的更多信息，请参阅 [管理参数层](parameter-store-advanced-parameters.md)。

有关 Parameter Store 配额和限制的完整列表，请参阅《*Amazon 一般参考*》中的 [Amazon Systems Manager endpoints and quotas](https://docs.amazonaws.cn/general/latest/gr/ssm.html#parameter-store)。