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

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

创建 Systems Manager 参数 (Amazon CLI)

您可以将Amazon Command Line Interface(Amazon CLI) 创建StringStringList, 和SecureString参数类型。

参数不能被引用或嵌套在其他参数的值中。您不能加入{{}}或者{{ssm:parameter-name}}(在参数值中)。

注意

参数仅在 Amazon Web Services 区域 他们是在那里创建的。

创建 String 参数 (Amazon CLI)

  1. 安装和配置Amazon Command Line Interface(Amazon CLI),如果您尚未启动。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

  2. 运行以下命令以创建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 选项支持层次结构。有关层次结构的更多信息,请参阅使用参数层次结构

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

    重要

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

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

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

    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"
  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 参数 (Amazon CLI)

  1. 安装和配置Amazon Command Line Interface(Amazon CLI),如果您尚未启动。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

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

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

    下面是一个使用参数层次结构的 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 类型。

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

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

创建 SecureString 参数 (Amazon CLI)

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

重要

仅使用SecureString参数已加密。参数名称、描述和其他属性不会加密。

重要

Parameter Store 仅支持Ob称KMS key。您不能使用非对称 KMS 密钥来加密您的参数。要获取确定 KMS 密钥是对称还是非对称的帮助,请参阅识别对称密钥和非对称 KMS 密钥中的Amazon Key Management Service开发人员指南

  1. 安装和配置Amazon Command Line Interface(Amazon CLI),如果您尚未启动。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

  2. 运行one创建一个参数,使用SecureString数据类型。

    Linux & macOS

    创建SecureString参数使用默认Amazon管理的密钥

    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"

    创建SecureString使用自定义Amazon KMS密钥

    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-Amazon KMS-key" \ --tags "Key=tag-key,Value=tag-value"
    Windows

    创建SecureString参数使用默认Amazon管理的密钥

    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"

    创建SecureString使用自定义Amazon 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"account-ID/the-custom-Amazon KMS-key"

    如果创建SecureString参数,通过使用Amazon托管Amazon Key Management Service(Amazon KMS) 键入您的账户和区域,然后您请勿使用必须为--key-id参数。

    注意

    使用Amazon KMS key将配方 Amazon Web Services 账户 和 Amazon Web Services 区域 中,删除key-id参数。有关 的更多信息Amazon KMS keys,请参阅AmazonKey Management Service 概念中的Amazon Key Management Service开发人员指南

    使用客户管理的密钥而不是Amazon托管密钥分配给您的帐户,请使用--key-id参数。该参数支持以下 KMS 参数格式。

    • 关键 Amazon 资源名称 (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

    您可以使用Amazon Web Services Management Console或Amazon KMSAPI。以下Amazon CLI命令在当前 Amazon Web Services 区域 的 Amazon Web Services 账户 。

    aws kms create-key

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

    以下示例使用模糊名称 (3l3vat3131)作为密码参数和Amazon KMS key。

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

    如果您不指定 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
  4. 运行以下命令,查看参数元数据。

    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"
  5. 运行以下命令,更改参数值(如果您是不是使用客户托管客户Amazon 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

    -或者-

    运行以下命令之一以更改参数值,如果您的使用客户托管客户Amazon 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
  6. 运行以下命令,查看最新的参数值。

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

    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值,用户必须有权调用Amazon KMS DecryptAPI 操作。有关配置的信息Amazon KMS访问控制,请参阅。的 身份验证和访问控制Amazon KMS中的Amazon Key Management Service开发人员指南

创建多行参数 (Amazon CLI)

您可以将Amazon CLI创建带换行符的参数。使用换行符将文本划分为较长的参数值,以获得更好的易读性,或者例如,更新网页的多段参数内容。您可以将内容包含在 JSON 文件中,并使用--cli-input-json选项,使用换行符(如/n,如以下示例所示。

  1. 安装和配置Amazon Command Line Interface(Amazon CLI),如果您尚未启动。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

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

    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>