

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

# 使用 AWS CLI 来创建 Parameter Store 参数
<a name="param-create-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 创建 `String`、`StringList` 和 `SecureString` 参数类型。删除参数后，至少等待 30 秒才能创建具有相同名称的参数。

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

**注意**  
参数只在创建它的 AWS 区域 可用。

**Topics**
+ [使用 AWS CLI 来创建 `String` 参数](#param-create-cli-string)
+ [使用 AWS CLI 来创建 StringList 参数](#param-create-cli-stringlist)
+ [使用 AWS CLI 来创建 SecureString 参数](#param-create-cli-securestring)
+ [使用 AWS CLI 来创建多行参数](#param-create-cli-multiline)

## 使用 AWS CLI 来创建 `String` 参数
<a name="param-create-cli-string"></a>

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

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

1. 运行以下命令，创建 `String` 类型参数。将每个*示例资源占位符*替换为您自己的信息。

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

   ```
   aws ssm put-parameter \
       --name "parameter-name" \
       --value "parameter-value" \
       --type String \
       --tags "Key=tag-key,Value=tag-value"
   ```

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

   ```
   aws ssm put-parameter ^
       --name "parameter-name" ^
       --value "parameter-value" ^
       --type String ^
       --tags "Key=tag-key,Value=tag-value"
   ```

------

   - 或者 -

   运行以下命令，创建一个包含 Amazon Machine Image (AMI) ID 作为参数值的参数。

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

   ```
   aws ssm put-parameter \
       --name "parameter-name" \
       --value "an-AMI-id" \
       --type String \
       --data-type "aws:ec2:image" \
       --tags "Key=tag-key,Value=tag-value"
   ```

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

   ```
   aws ssm put-parameter ^
       --name "parameter-name" ^
       --value "an-AMI-id" ^
       --type String ^
       --data-type "aws:ec2:image" ^
       --tags "Key=tag-key,Value=tag-value"
   ```

------

   `--name` 选项支持层次结构。有关层次结构的更多信息，请参阅 [处理 Parameter Store 中的参数层次结构](sysman-paramstore-hierarchies.md)。

   仅当要创建包含 AMI ID 的参数时，才必须指定 `--data-type` 选项。它会验证您输入的参数值是否为格式正确的 Amazon Elastic Compute Cloud (Amazon EC2) AMI ID。对于所有其他参数，默认数据类型为 `text`，并且可以选择指定一个值。有关更多信息，请参阅 [在 Parameter Store 中为 Amazon Machine Image ID 使用本机参数支持](parameter-store-ec2-aliases.md)。
**重要**  
如果成功，则该命令返回参数的版本号。**例外**：如果您已将 `aws:ec2:image` 指定为数据类型，则响应中的新版本号并不意味着参数值已经过验证。有关更多信息，请参阅 [在 Parameter Store 中为 Amazon Machine Image ID 使用本机参数支持](parameter-store-ec2-aliases.md)。

   以下示例将两个键/值对标签添加到参数。

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

   ```
   aws ssm put-parameter \
       --name parameter-name \
       --value "parameter-value" \
       --type "String" \
       --tags '[{"Key":"Region","Value":"East"},{"Key":"Environment", "Value":"Production"}]'
   ```

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

   ```
   aws ssm put-parameter ^
       --name parameter-name ^
       --value "parameter-value" ^
       --type "String" ^
       --tags [{\"Key\":\"Region1\",\"Value\":\"East1\"},{\"Key\":\"Environment1\",\"Value\":\"Production1\"}]
   ```

------

   以下是在名称中使用参数层次结构创建明文 `String` 参数的示例。它会返回参数的版本号。有关参数层次结构的更多信息，请参阅 [处理 Parameter Store 中的参数层次结构](sysman-paramstore-hierarchies.md)。

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

   **不在层次结构中的参数**

   ```
   aws ssm put-parameter \
       --name "golden-ami" \
       --type "String" \
       --value "ami-12345abcdeEXAMPLE"
   ```

   **层次结构中的参数**

   ```
   aws ssm put-parameter \
       --name "/amis/linux/golden-ami" \
       --type "String" \
       --value "ami-12345abcdeEXAMPLE"
   ```

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

   **不在层次结构中的参数**

   ```
   aws ssm put-parameter ^
       --name "golden-ami" ^
       --type "String" ^
       --value "ami-12345abcdeEXAMPLE"
   ```

   **层次结构中的参数**

   ```
   aws ssm put-parameter ^
       --name "/amis/windows/golden-ami" ^
       --type "String" ^
       --value "ami-12345abcdeEXAMPLE"
   ```

------

1. 运行以下命令，查看最新参数值并验证新参数的详细信息。

   ```
   aws ssm get-parameters --names "/Test/IAD/helloWorld"
   ```

   系统将返回类似于以下内容的信息。

   ```
   {
       "InvalidParameters": [],
       "Parameters": [
           {            
               "Name": "/Test/IAD/helloWorld",
               "Type": "String",
               "Value": "My updated parameter value",
               "Version": 2,
               "LastModifiedDate": "2020-02-25T15:55:33.677000-08:00",
               "ARN": "arn:aws:ssm:us-east-2:123456789012:parameter/Test/IAD/helloWorld"            
           }
       ]
   }
   ```

运行以下命令，更改参数值。它会返回参数的版本号。

```
aws ssm put-parameter --name "/Test/IAD/helloWorld" --value "My updated 1st parameter" --type String --overwrite
```

运行以下命令，查看参数值的历史记录。

```
aws ssm get-parameter-history --name "/Test/IAD/helloWorld"
```

运行以下命令，在命令中使用该参数。

```
aws ssm send-command --document-name "AWS-RunShellScript" --parameters '{"commands":["echo {{ssm:/Test/IAD/helloWorld}}"]}' --targets "Key=instanceids,Values=instance-ids"
```

如果您只想检索参数值，请运行以下命令。

```
aws ssm get-parameter --name testDataTypeParameter --query "Parameter.Value"
```

如果您只想使用 `get-parameters` 检索参数值，请运行以下命令。

```
aws ssm get-parameters --names "testDataTypeParameter" --query "Parameters[*].Value"
```

运行以下命令，查看参数元数据。

```
aws ssm describe-parameters --filters "Key=Name,Values=/Test/IAD/helloWorld"
```

**注意**  
*名称*必须大写。

系统将返回类似于以下内容的信息。

```
{
    "Parameters": [
        {
            "Name": "helloworld",
            "Type": "String",
            "LastModifiedUser": "arn:aws:iam::123456789012:user/JohnDoe",
            "LastModifiedDate": 1494529763.156,
            "Version": 1,
            "Tier": "Standard",
            "Policies": []           
        }
    ]
}
```

## 使用 AWS CLI 来创建 StringList 参数
<a name="param-create-cli-stringlist"></a>

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 "a-comma-separated-list-of-values" \
       --type StringList \
       --tags "Key=tag-key,Value=tag-value"
   ```

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

   ```
   aws ssm put-parameter ^
       --name "parameter-name" ^
       --value "a-comma-separated-list-of-values" ^
       --type StringList ^
       --tags "Key=tag-key,Value=tag-value"
   ```

------
**注意**  
如果成功，则该命令返回参数的版本号。

   此示例将两个键/值对添加到参数。（根据本地计算机上的操作系统类型，运行以下命令之一。从本地 Windows 计算机运行的版本包含转义字符（“\$1”），您需要从命令行工具运行命令。）

   下面是一个使用参数层次结构的 `StringList` 示例。

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

   ```
   aws ssm put-parameter \
       --name /IAD/ERP/Oracle/addUsers \
       --value "Milana,Mariana,Mark,Miguel" \
       --type StringList
   ```

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

   ```
   aws ssm put-parameter ^
       --name /IAD/ERP/Oracle/addUsers ^
       --value "Milana,Mariana,Mark,Miguel" ^
       --type StringList
   ```

------
**注意**  
`StringList` 中的项目必须用逗号 (,) 分隔。不能使用其他标点符号或特殊字符对列表中的项目进行转义。如果您有需要逗号的参数值，则使用 `String` 类型。

1. 运行 `get-parameters` 命令，验证该参数的详细信息。例如：

   ```
   aws ssm get-parameters --name "/IAD/ERP/Oracle/addUsers"
   ```

## 使用 AWS CLI 来创建 SecureString 参数
<a name="param-create-cli-securestring"></a>

使用以下过程创建 `SecureString` 参数。将每个*示例资源占位符*替换为您自己的信息。

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

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

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

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

1. 运行以下命令**之一**，创建使用 `SecureString` 数据类型的参数。

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

   **使用默认的 AWS 托管式密钥创建 `SecureString` 参数**

   ```
   aws ssm put-parameter \
       --name "parameter-name" \
       --value "parameter-value" \
       --type "SecureString"
   ```

   **创建使用客户托管密钥的 `SecureString` 参数**

   ```
   aws ssm put-parameter \
       --name "parameter-name" \
       --value "a-parameter-value, for example P@ssW%rd#1" \
       --type "SecureString"
       --tags "Key=tag-key,Value=tag-value"
   ```

   **创建使用自定义 AWS KMS 密钥的 `SecureString` 参数**

   ```
   aws ssm put-parameter \
       --name "parameter-name" \
       --value "a-parameter-value, for example P@ssW%rd#1" \
       --type "SecureString" \
       --key-id "your-account-ID/the-custom-AWS KMS-key" \
       --tags "Key=tag-key,Value=tag-value"
   ```

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

   **使用默认的 AWS 托管式密钥创建 `SecureString` 参数**

   ```
   aws ssm put-parameter ^
       --name "parameter-name" ^
       --value "parameter-value" ^
       --type "SecureString"
   ```

   **创建使用客户托管密钥的 `SecureString` 参数**

   ```
   aws ssm put-parameter ^
       --name "parameter-name" ^
       --value "a-parameter-value, for example P@ssW%rd#1" ^
       --type "SecureString" ^
       --tags "Key=tag-key,Value=tag-value"
   ```

   **创建使用自定义 AWS KMS 密钥的 `SecureString` 参数**

   ```
   aws ssm put-parameter ^
       --name "parameter-name" ^
       --value "a-parameter-value, for example P@ssW%rd#1" ^
       --type "SecureString" ^
       --key-id " ^
       --tags "Key=tag-key,Value=tag-value"account-ID/the-custom-AWS KMS-key"
   ```

------

   如果您在自己的账户和区域中使用 AWS 托管式密钥创建 `SecureString` 参数，则*无需*提供 `--key-id` 参数的值。
**注意**  
要使用分配给您的 AWS 账户和 AWS 区域的 AWS KMS key，请从命令中删除 `key-id` 参数。有关 AWS KMS keys 的更多信息，请参阅 * AWS Key Management Service 开发人员指南*中的 [AWS Key Management Service 概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)。

   要使用客户托管密钥而不是分配给您的账户的 AWS 托管式密钥，需要使用 `--key-id` 参数指定密钥。该参数支持以下 KMS 参数格式。
   + 密钥 Amazon Resource Name (ARN) 示例：

      `arn:aws:kms:us-east-2:123456789012:key/key-id`
   + 别名 ARN 示例:

     `arn:aws:kms:us-east-2:123456789012:alias/alias-name`
   + 密钥 ID 示例：

     `12345678-1234-1234-1234-123456789012`
   + 别名示例:

     `alias/MyAliasName`

   您可以使用 AWS 管理控制台 或 AWS KMS API 创建客户托管密钥。以下 AWS CLI 命令在您的 AWS 账户的当前 AWS 区域创建客户托管密钥。

   ```
   aws kms [create-key](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)
   ```

   使用以下格式的命令，利用您刚刚创建的密钥创建 `SecureString` 参数。

   以下示例对密码参数和 AWS KMS key 使用模糊名称 (`3l3vat3131`)。

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

   ```
   aws ssm put-parameter \
       --name /Finance/Payroll/3l3vat3131 \
       --value "P@sSwW)rd" \
       --type SecureString \
       --key-id arn:aws:kms:us-east-2:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e
   ```

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

   ```
   aws ssm put-parameter ^
       --name /Finance/Payroll/3l3vat3131 ^
       --value "P@sSwW)rd" ^
       --type SecureString ^
       --key-id arn:aws:kms:us-east-2:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e
   ```

------

1. 运行以下命令验证参数的详细信息。

   如果您不指定 `with-decryption` 参数，或者如果您指定`no-with-decryption` 参数，命令会返回加密的 GUID。

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

   ```
   aws ssm get-parameters \
       --name "the-parameter-name-you-specified" \
       --with-decryption
   ```

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

   ```
   aws ssm get-parameters ^
       --name "the-parameter-name-you-specified" ^
       --with-decryption
   ```

------

1. 运行以下命令，查看参数元数据。

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

   ```
   aws ssm describe-parameters \
       --filters "Key=Name,Values=the-name-that-you-specified"
   ```

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

   ```
   aws ssm describe-parameters ^
       --filters "Key=Name,Values=the-name-that-you-specified"
   ```

------

1. 如果您使用的**不是**客户托管的 AWS KMS key，请运行以下命令更改参数值。

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

   ```
   aws ssm put-parameter \
       --name "the-name-that-you-specified" \
       --value "a-new-parameter-value" \
       --type "SecureString" \
       --overwrite
   ```

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

   ```
   aws ssm put-parameter ^
       --name "the-name-that-you-specified" ^
       --value "a-new-parameter-value" ^
       --type "SecureString" ^
       --overwrite
   ```

------

   - 或者 -

   如果您使用的**是**客户托管的 AWS KMS key，请运行以下命令之一更改参数值。

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

   ```
   aws ssm put-parameter \
       --name "the-name-that-you-specified" \
       --value "a-new-parameter-value" \
       --type "SecureString" \
       --key-id "the-KMSkey-ID" \
       --overwrite
   ```

   ```
   aws ssm put-parameter \
       --name "the-name-that-you-specified" \
       --value "a-new-parameter-value" \
       --type "SecureString" \
       --key-id "account-alias/the-KMSkey-ID" \
       --overwrite
   ```

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

   ```
   aws ssm put-parameter ^
       --name "the-name-that-you-specified" ^
       --value "a-new-parameter-value" ^
       --type "SecureString" ^
       --key-id "the-KMSkey-ID" ^
       --overwrite
   ```

   ```
   aws ssm put-parameter ^
       --name "the-name-that-you-specified" ^
       --value "a-new-parameter-value" ^
       --type "SecureString" ^
       --key-id "account-alias/the-KMSkey-ID" ^
       --overwrite
   ```

------

1. 运行以下命令，查看最新的参数值。

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

   ```
   aws ssm get-parameters \
       --name "the-name-that-you-specified" \
       --with-decryption
   ```

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

   ```
   aws ssm get-parameters ^
       --name "the-name-that-you-specified" ^
       --with-decryption
   ```

------

1. 运行以下命令，查看参数值的历史记录。

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

   ```
   aws ssm get-parameter-history \
       --name "the-name-that-you-specified"
   ```

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

   ```
   aws ssm get-parameter-history ^
       --name "the-name-that-you-specified"
   ```

------

**注意**  
您可以使用加密值手动创建参数。在本例中，由于值已经加密，因此您无需选择 `SecureString` 参数类型。如果您选择 `SecureString`，将对您的参数进行双重加密。

默认情况下，所有 `SecureString` 值均显示为密码文本。要解密 `SecureString` 值，用户必须有权调用 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) API 操作。有关配置 AWS KMS 访问控制的信息，请参阅 *AWS Key Management Service 开发人员指南*中的 [AWS KMS 的身份验证和访问控制](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)。

**重要**  
如果更改用于加密参数的 KMS 密钥的别名，则还必须更新该参数用于引用 AWS KMS 的密钥别名。这仅适用于 KMS 密钥别名；除非删除整个密钥，否则别名附加到的密钥 ID 将保持不变。

## 使用 AWS CLI 来创建多行参数
<a name="param-create-cli-multiline"></a>

您可以使用 AWS CLI 来创建带换行符的参数。使用换行符将文本分成更长的参数值，使其易于阅读，或者，例如，更新网页的多段参数内容。您可以将内容包含在 JSON 文件中并使用 `--cli-input-json` 选项，使用诸如 `\n` 等换行符，如以下示例所示。

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 "MultiLineParameter" \
       --type String \
       --cli-input-json file://MultiLineParameter.json
   ```

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

   ```
   aws ssm put-parameter ^
       --name "MultiLineParameter" ^
       --type String ^
       --cli-input-json file://MultiLineParameter.json
   ```

------

   以下示例显示 `MultiLineParameter.json` 文件的内容。

   ```
   {
       "Value": "<para>Paragraph One</para>\n<para>Paragraph Two</para>\n<para>Paragraph Three</para>"
   }
   ```

保存的参数值的存储方式如下。

```
<para>Paragraph One</para>
<para>Paragraph Two</para>
<para>Paragraph Three</para>
```