

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

# 在 Parameter Store 中分配参数策略
<a name="parameter-store-policies"></a>

参数策略让您可以将特定条件分配到参数（如到期日期或*存活时间*），通过这种方式来帮助您管理一组不断增加的参数。参数策略在强制您更新或删除 Parameter Store（AWS Systems Manager 中的一项工具）中存储的密码和配置数据时尤其有用。Parameter Store 提供以下策略类型：`Expiration`、`ExpirationNotification` 和 `NoChangeNotification`。

如果您管理需要自动轮换、跨账户访问或精细审核日志记录的凭证，则建议使用 [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。Secrets Manager 专为管理数据库凭证、API 密钥和受支持的第三方软件提供的密钥等密钥而设计。有关更多信息，请参阅 *AWS Secrets Manager 用户指南*中的[什么是AWS Secrets Manager？](https://docs.aws.amazon.com//secretsmanager/latest/userguide/intro.html)。

Parameter Store 通过使用异步的定期扫描强制实施参数策略。创建策略后，您无需执行其他操作来强制实施策略。Parameter Store 会根据您指定的条件独立执行策略定义的操作。

**注意**  
参数策略可用于使用高级参数层的参数。有关更多信息，请参阅 [管理层](parameter-store-advanced-parameters.md)。

参数策略是一个 JSON 数组，如下表所示。您可以在创建新的高级参数时分配策略，也可以通过更新参数应用策略。Parameter Store 支持以下类型的参数策略。


| Policy | Details | 示例 | 
| --- | --- | --- | 
| **过期** | 此策略将删除参数。您可以使用 `ISO_INSTANT` 格式或 `ISO_OFFSET_DATE_TIME` 格式指定特定日期和时间。要更改需要删除参数的时间，请更新策略。更新*参数*不会影响附加到参数的策略的到期日期或时间。当到达到期日期和时间时，Parameter Store 将删除参数。 此示例使用 `ISO_INSTANT` 格式。您还可以使用 `ISO_OFFSET_DATE_TIME` 格式指定日期和时间。以下是一个示例：`2019-11-01T22:13:48.87+10:30:00`。  |  <pre>{<br />    "Type": "Expiration",<br />    "Version": "1.0",<br />    "Attributes": {<br />        "Timestamp": "2018-12-02T21:34:33.000Z"<br />    }<br />}</pre>  | 
| **ExpirationNotification** | 该策略在 Amazon EventBridge (EventBridge) 中启动一个事件，以通知您到期信息。使用此策略，您可以在到达到期时间之前收到通知（以天或小时为单位）。 |  <pre>{<br />    "Type": "ExpirationNotification",<br />    "Version": "1.0",<br />    "Attributes": {<br />        "Before": "15",<br />        "Unit": "Days"<br />    }<br />}</pre>  | 
| **NoChangeNotification** | 如果参数在指定时间段内*未*被修改，该策略将在 EventBridge 中启动一个事件。例如，当在一段时间内需要更改密码时，此策略类型非常有用。<br />此策略通过读取参数的 `LastModifiedTime` 属性确定何时发送通知。如果您更改或编辑参数，系统会根据 `LastModifiedTime` 的新值重置通知时间段。 |  <pre>{<br />    "Type": "NoChangeNotification",<br />    "Version": "1.0",<br />    "Attributes": {<br />        "After": "20",<br />        "Unit": "Days"<br />    }<br />}</pre>  | 

您可向参数分配多个策略。例如，您可以分配 `Expiration` 和 `ExpirationNotification` 策略，让系统启动 EventBridge 事件以通知您即将删除参数。您最多可向参数分配是十 (10) 个策略。

以下示例展示了一个 [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) API 请求的请求语法，该请求将四个策略分配到名为 `ProdDB3` 的新 `SecureString` 参数。

```
{
    "Name": "ProdDB3",
    "Description": "Parameter with policies",
    "Value": "P@ssW*rd21",
    "Type": "SecureString",
    "Overwrite": "True",
    "Policies": [
        {
            "Type": "Expiration",
            "Version": "1.0",
            "Attributes": {
                "Timestamp": "2018-12-02T21:34:33.000Z"
            }
        },
        {
            "Type": "ExpirationNotification",
            "Version": "1.0",
            "Attributes": {
                "Before": "30",
                "Unit": "Days"
            }
        },
        {
            "Type": "ExpirationNotification",
            "Version": "1.0",
            "Attributes": {
                "Before": "15",
                "Unit": "Days"
            }
        },
        {
            "Type": "NoChangeNotification",
            "Version": "1.0",
            "Attributes": {
                "After": "20",
                "Unit": "Days"
            }
        }
    ]
}
```

## 将策略添加到现有参数
<a name="sysman-paramstore-su-policy-create"></a>

本部分包括有关如何使用 AWS Systems Manager 控制台、AWS Command Line Interface (AWS CLI) 和 AWS Tools for Windows PowerShell 将策略添加到现有参数的信息。有关如何创建包含策略的新参数的信息，请参阅 [在 Systems Manager 中创建 Parameter Store 参数](sysman-paramstore-su-create.md)。

**Topics**
+ [使用控制台将策略添加到现有参数](#sysman-paramstore-policy-create-console)
+ [使用 AWS CLI 将策略添加到现有参数](#sysman-paramstore-policy-create-cli)
+ [将策略添加到现有参数 (Tools for Windows PowerShell)](#sysman-paramstore-policy-create-ps)

### 使用控制台将策略添加到现有参数
<a name="sysman-paramstore-policy-create-console"></a>

按照以下过程，使用 Systems Manager 控制台将策略添加到现有参数。

**将策略添加到现有参数**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 在导航窗格中，请选择 **Parameter Store**。

1. 选择要更新以包含策略的参数旁边的选项，然后选择**编辑**。

1. 选择 **Advanced**（高级）。

1. （可选）在 **Parameter policies (参数策略)** 部分中，选择 **Enabled (已启用)**。您可以为此参数指定到期日期以及一个或多个通知策略。

1. 选择**保存更改**。

**重要**  
Parameter Store 会在参数上保留策略，直至您使用新策略覆盖这些策略或删除这些策略。
要从现有参数中删除所有策略，请编辑参数并使用括号和大括号应用空策略，如下所示：`[{}]`
如果您向已有策略的参数添加新策略，Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您希望向已有一个或多个策略的参数添加新策略，请复制并粘贴原始策略，键入新策略，然后保存所做的更改。

### 使用 AWS CLI 将策略添加到现有参数
<a name="sysman-paramstore-policy-create-cli"></a>

使用以下过程，使用 AWS CLI 将策略添加到现有参数。

**将策略添加到现有参数**

1. 安装并配置 AWS Command Line Interface（AWS CLI）（如果尚未执行该操作）。

   有关更多信息，请参阅[安装或更新 AWS CLI 的最新版本](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 运行以下命令将策略添加到现有参数。将每个{{示例资源占位符}}替换为您自己的信息。

------
#### [ Linux & macOS ]

   ```
   aws ssm put-parameter   
       --name "{{parameter name}}" \
       --value '{{parameter value}}' \
       --type {{parameter type}} \
       --overwrite \
       --policies "[{{{policies-enclosed-in-brackets-and-curly-braces}}}]"
   ```

------
#### [ Windows ]

   ```
   aws ssm put-parameter   
       --name "{{parameter name}}" ^
       --value '{{parameter value}}' ^
       --type {{parameter type}} ^
       --overwrite ^
       --policies "[{{{policies-enclosed-in-brackets-and-curly-braces}}}]"
   ```

------

   下面是一个包含在 15 天后删除参数的到期策略的示例。此示例还包含在参数被删除前五 (5) 天生成 Eventbridge 事件的通知策略。最后，它还在 60 天后未对此参数进行更改时包含了 `NoChangeNotification` 策略。此示例对密码和 AWS Key Management Service AWS KMS key使用模糊名称 (`3l3vat3131`)。有关 AWS KMS keys 的更多信息，请参阅* AWS Key Management Service Developer Guide *中的 [AWS Key Management Service 概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)。

------
#### [ Linux & macOS ]

   ```
   aws ssm put-parameter \
       --name "/Finance/Payroll/3l3vat3131" \
       --value "P@sSwW)rd" \
       --type "SecureString" \
       --overwrite \
       --policies "[{\"Type\":\"Expiration\",\"Version\":\"1.0\",\"Attributes\":{\"Timestamp\":\"2020-05-13T00:00:00.000Z\"}},{\"Type\":\"ExpirationNotification\",\"Version\":\"1.0\",\"Attributes\":{\"Before\":\"5\",\"Unit\":\"Days\"}},{\"Type\":\"NoChangeNotification\",\"Version\":\"1.0\",\"Attributes\":{\"After\":\"60\",\"Unit\":\"Days\"}}]"
   ```

------
#### [ Windows ]

   ```
   aws ssm put-parameter ^
       --name "/Finance/Payroll/3l3vat3131" ^
       --value "P@sSwW)rd" ^
       --type "SecureString" ^
       --overwrite ^
       --policies "[{\"Type\":\"Expiration\",\"Version\":\"1.0\",\"Attributes\":{\"Timestamp\":\"2020-05-13T00:00:00.000Z\"}},{\"Type\":\"ExpirationNotification\",\"Version\":\"1.0\",\"Attributes\":{\"Before\":\"5\",\"Unit\":\"Days\"}},{\"Type\":\"NoChangeNotification\",\"Version\":\"1.0\",\"Attributes\":{\"After\":\"60\",\"Unit\":\"Days\"}}]"
   ```

------

1. 运行以下命令验证参数的详细信息。将{{参数名称}}替换为您自己的信息。

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-parameters  \
       --parameter-filters "Key=Name,Values={{parameter name}}"
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-parameters  ^
       --parameter-filters "Key=Name,Values={{parameter name}}"
   ```

------

**重要**  
Parameter Store 会为参数保留策略，直至您使用新策略覆盖这些策略或删除这些策略。
要从现有参数中删除所有策略，请编辑参数并使用括号和大括号应用空策略。将每个{{示例资源占位符}}替换为您自己的信息。例如：  

  ```
  aws ssm put-parameter \
      --name {{parameter name}} \
      --type {{parameter type}}  \
      --value '{{parameter value}}' \
      --policies "[{}]"
  ```

  ```
  aws ssm put-parameter ^
      --name {{parameter name}} ^
      --type {{parameter type}}  ^
      --value '{{parameter value}}' ^
      --policies "[{}]"
  ```
如果您向已有策略的参数添加新策略，Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您希望向已有一个或多个策略的参数添加新策略，请复制并粘贴原始策略，键入新策略，然后保存所做的更改。

### 将策略添加到现有参数 (Tools for Windows PowerShell)
<a name="sysman-paramstore-policy-create-ps"></a>

按照以下过程，使用 Tools for Windows PowerShell 将策略添加到现有参数。将每个{{示例资源占位符}}替换为您自己的信息。

**将策略添加到现有参数**

1. 打开 Tools for Windows PowerShell 并运行以下命令以指定您的凭证。您必须在 Amazon Elastic Compute Cloud (Amazon EC2) 中具有管理员权限，或者 AWS Identity and Access Management (IAM) 中必须为您授予了相应的权限。

   ```
   Set-AWSCredentials `
       –AccessKey {{access-key-name}} `
       –SecretKey {{secret-key-name}}
   ```

1. 运行以下命令，以便为 PowerShell 会话设置区域。此示例使用美国东部（俄亥俄州）区域 (us-east-2)。

   ```
   Set-DefaultAWSRegion `
       -Region us-east-2
   ```

1. 运行以下命令将策略添加到现有参数。将每个{{示例资源占位符}}替换为您自己的信息。

   ```
   Write-SSMParameter `
       -Name "{{parameter name}}" `
       -Value "{{parameter value}}" `
       -Type "{{parameter type}}" `
       -Policies "[{{{policies-enclosed-in-brackets-and-curly-braces}}}]" `
       -Overwrite
   ```

   下面是一个包含在 2020 年 5 月 13 日午夜 12 点 (GMT) 删除参数的到期策略的示例。此示例还包含在参数被删除前五 (5) 天生成 Eventbridge 事件的通知策略。最后，它还在 60 天后未对此参数进行更改时包含了 `NoChangeNotification` 策略。此示例对密码和 AWS 托管式密钥使用模糊名称 (`3l3vat3131`)。

   ```
   Write-SSMParameter `
       -Name "/Finance/Payroll/3l3vat3131" `
       -Value "P@sSwW)rd" `
       -Type "SecureString" `
       -Policies "[{\"Type\":\"Expiration\",\"Version\":\"1.0\",\"Attributes\":{\"Timestamp\":\"2018-05-13T00:00:00.000Z\"}},{\"Type\":\"ExpirationNotification\",\"Version\":\"1.0\",\"Attributes\":{\"Before\":\"5\",\"Unit\":\"Days\"}},{\"Type\":\"NoChangeNotification\",\"Version\":\"1.0\",\"Attributes\":{\"After\":\"60\",\"Unit\":\"Days\"}}]" `
       -Overwrite
   ```

1. 运行以下命令验证参数的详细信息。将{{参数名称}}替换为您自己的信息。

   ```
   (Get-SSMParameterValue -Name "{{parameter name}}").Parameters
   ```

**重要**  
Parameter Store 会在参数上保留策略，直至您使用新策略覆盖这些策略或删除这些策略。
要从现有参数中删除所有策略，请编辑参数并使用括号和大括号应用空策略。例如：  

  ```
  Write-SSMParameter `
      -Name "{{parameter name}}" `
      -Value "{{parameter value}}" `
      -Type "{{parameter type}}" `
      -Policies "[{}]"
  ```
如果您向已有策略的参数添加新策略，Systems Manager 将覆盖附加到该参数的策略。现有策略将被删除。如果您希望向已有一个或多个策略的参数添加新策略，请复制并粘贴原始策略，键入新策略，然后保存所做的更改。