创建 Systems Manager 参数 (AWS CLI) - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建 Systems Manager 参数 (AWS CLI)

您可以使用 AWS Command Line Interface (AWS CLI) 创建 StringStringListSecureString 参数类型。

注意

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

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

创建String参数 (AWS CLI)

  1. 安装并配置 AWS CLI(如果尚未执行该操作)。

    有关信息,请参阅安装或升级 AWS 命令行工具

  2. 运行以下命令以创建 String类型参数。

    Linux
    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 系统映像 (AMI) ID 作为参数值的参数。

    Linux
    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 选项支持层次结构。有关层次结构的更多信息,请参阅使用参数层次结构.

    仅当要创建包含 AMI ID 的参数时,才必须指定 --data-type 选项。它验证您输入的参数值是否为格式正确的 Amazon Elastic Compute Cloud (Amazon EC2) AMI ID。对于所有其他参数,默认数据类型为 text ,并且指定值是可选的。有关更多信息,请参阅Amazon 系统映像的本机参数支持 IDs.

    重要

    如果成功,则该命令返回参数的版本号。例外:如果您已将 aws:ec2:image 指定为数据类型,则响应中的新版本号并不意味着参数值已经过验证。有关更多信息,请参阅Amazon 系统映像的本机参数支持 IDs.

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

    Linux
    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参数。它返回参数的版本号。有关参数层次结构的更多信息,请参阅使用参数层次结构.

    Linux

    参数不在层次结构中

    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"
  3. 运行以下命令,查看最新参数值并验证新参数的详细信息。

    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"

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

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/user-name",
            "LastModifiedDate": 1494529763.156,
            "Version": 1,
            "Tier": "Standard",
            "Policies": []           
        }
    ]
}

创建StringList参数 (AWS CLI)

  1. 安装并配置 AWS CLI(如果尚未执行该操作)。

    有关信息,请参阅安装或升级 AWS 命令行工具

  2. 运行以下命令创建一个参数。

    Linux
    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 计算机运行的版本包含转义字符 (“\\”),您需要从命令行工具运行命令。)

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

    Linux
    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 类型。

  3. 运行 get-parameters 命令,验证该参数的详细信息。例如:

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

创建SecureString参数 (AWS CLI)

使用以下过程创建 SecureString 参数。

重要

仅对 SecureString 参数的 进行加密。参数的名称、描述和其他属性不会被加密。

  1. 安装并配置 AWS CLI(如果尚未执行该操作)。

    有关信息,请参阅安装或升级 AWS 命令行工具

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

    Linux

    使用默认 SecureString 托管密钥创建AWS参数

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

    创建使用客户托管客户主密钥 (CMK) 的 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"

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

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

    使用默认 SecureString 托管密钥创建AWS参数

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

    创建使用客户托管客户主密钥 (CMK) 的 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"

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

    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"your-AWS-user-account-ID/the-custom-AWS KMS-key"

    如果您在您的账户和区域中使用 SecureString托管AWS密钥创建AWS KMS参数,则不必--key-id 参数提供值。

    注意

    要使用分配给您的账户和区域的 AWS Key Management Service (KMS) 客户主密钥 (CMK),请从 命令中删除 key-id 参数。有关 的更多信息CMKs,请参阅 中的 AWS Key Management Service AWS Key Management Service Developer Guide概念

    要使用客户托管 CMK 而不是分配给您的账户的 AWS 托管 CMK,您必须使用 --key-id 参数指定密钥。该参数支持以下 KMS 参数格式。

    • 密钥 ARN 示例:

      arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012

    • 别名 ARN 示例:

      arn:aws:kms:us-east-2:123456789012:alias/MyAliasName

    • 密钥 ID 示例:

      12345678-1234-1234-1234-123456789012

    • 别名示例:

      alias/MyAliasName

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

    aws kms create-key

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

    以下示例对密码参数和 CMK 使用模糊名称 (3l3vat3131

    Linux
    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
  3. 运行以下命令验证参数的详细信息。

    Linux
    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
    注意

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

  4. 运行以下命令,查看参数元数据。

    Linux
    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"
  5. 如果您未使用客户托管的客户主密钥 (CMK),请运行以下命令更改参数值。

    Linux
    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

    -或者-

    如果您使用的是客户托管客户主密钥 (CMK),请运行以下命令之一来更改参数值。

    Linux
    aws ssm put-parameter \ --name "the-name-that-you-specified" \ --value "a-new-parameter-value" \ --type "SecureString" \ --key-id "the-CMK-ID" \ --overwrite
    aws ssm put-parameter \ --name "the-name-that-you-specified" \ --value "a-new-parameter-value" \ --type "SecureString" \ --key-id "your-AWS-user-account-alias/the-CMK-ID" \ --overwrite
    Windows
    aws ssm put-parameter ^ --name "the-name-that-you-specified" ^ --value "a-new-parameter-value" ^ --type "SecureString" ^ --key-id "the-CMK-ID" ^ --overwrite
    aws ssm put-parameter ^ --name "the-name-that-you-specified" ^ --value "a-new-parameter-value" ^ --type "SecureString" ^ --key-id "your-AWS-user-account-alias/the-CMK-ID" ^ --overwrite
  6. 运行以下命令,查看最新的参数值。

    Linux
    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
  7. 运行以下命令,查看参数值的历史记录。

    Linux
    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值,用户必须有权调用 KMS Decrypt API 操作。有关配置 KMS AWS KMS 访问控制的信息,请参阅 AWS Key Management Service Developer Guide 中的 的身份验证和访问控制。

创建多行参数 (AWS CLI)

您可以使用 AWS CLI 创建带换行符的参数。通过添加换行符,您可以拆分较长参数值中的文本以提高可读性,或者更轻松地更新网页的多段落参数内容。您可以在 JSON 文件中包含内容并使用 --cli-input-json 选项,使用换行符(如 /n),如以下示例所示。

  1. 安装并配置 AWS CLI(如果尚未执行该操作)。

    有关信息,请参阅安装或升级 AWS 命令行工具

  2. 运行以下命令以创建多行参数。

    Linux
    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>