建立 Systems Manager 參數 (AWS CLI) - AWS Systems Manager

建立 Systems Manager 參數 (AWS CLI)

您可以使用 AWS Command Line Interface (AWS CLI) 來建立 StringStringListSecureString 參數類型。刪除參數後,請等待至少 30 秒以建立具有相同名稱的參數。

不能在其他參數的值中參考或巢套參數。參數值中不能包含 {{}}{{ssm:parameter-name}}

注意

參數只能在建立該參數的 AWS 區域 中使用。

建立 String 參數 (AWS CLI)

  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請進行相應的操作。

    如需相關資訊,請參閱安裝或升級 AWS 命令列工具

  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 選項支援階層。如需有關階層的詳細資訊,請參閱使用參數階層

    只有在建立包含 AMI ID 的參數時,才需要指定 --data-type 選項。它會驗證您輸入的參數值是否為格式正確的 Amazon Elastic Compute Cloud (Amazon EC2) AMI ID。對於所有其他參數,預設資料類型為 text,可選擇指定一個值。如需詳細資訊,請參閱 Amazon Machine Image ID 的原生參數支援

    重要

    如果成功,該命令將會傳回參數的版本號碼。例外狀況:如果您已將 aws:ec2:image 指定為資料類型,則回應中的新版本號碼並不表示參數值已經過驗證。如需詳細資訊,請參閱 Amazon Machine Image 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"

如果您只想擷取參數值,請執行下列命令。

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": []           
        }
    ]
}

建立 StringList 參數 (AWS CLI)

  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請進行相應的操作。

    如需相關資訊,請參閱安裝或升級 AWS 命令列工具

  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 參數 (AWS CLI)

使用下列程序建立 SecureString 參數。

重要

僅加密 SecureString 參數的。參數名稱、說明和其他屬性不會加密。

重要

Parameter Store 只支援對稱 KMS 金鑰。您無法使用非對稱 KMS 金鑰來加密您的參數。如需判斷 KMS 金鑰為對稱或非對稱的說明,請參閱《AWS Key Management Service 開發人員指南》中的識別對稱鍵和非對稱金鑰

  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請進行相應的操作。

    如需相關資訊,請參閱安裝或升級 AWS 命令列工具

  2. 執行以下其中個命令,以建立使用 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 管理的 AWS Key Management Service (AWS KMS) 金鑰來建立 SecureString 參數,則不必提供 --key-id 參數的值。

    注意

    若要使用指派給 AWS 帳戶 和 AWS 區域 的 AWS KMS key,請從命令中移除 key-id 參數。如需有關 AWS KMS keys 的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的 AWS 金鑰管理服務概念

    若要使用客戶受管金鑰,而非由 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

    • Key ID 範例:

      12345678-1234-1234-1234-123456789012

    • 別名範例:

      alias/MyAliasName

    您可以使用 AWS Management Console 或 AWS KMS API 來建立客戶受管金鑰。以下 AWS CLI 命令在您的 AWS 帳戶 的目前 AWS 區域 建立客戶受管金鑰。

    aws kms create-key

    使用以下格式的命令,以您剛建立的金鑰建立 SecureString 參數。

    以下範例使用混淆代碼名稱 (3l3vat3131) 作為密碼參數,並使用 AWS 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. 如果您使用客戶受管 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
  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 值,使用者必須具有呼叫 KMS AWS KMS Decrypt API 操作的許可。如需有關設定 AWS KMS 存取控制的資訊,請參閱《AWS Key Management Service 開發人員指南》中的 ​AWS KMS 的身分驗證與存取控制

重要

如果您變更用於加密參數之 KMS 金鑰的 KMS 金鑰別名,則也必須更新參數用來參考 AWS KMS 的金鑰別名。這只適用於 KMS 金鑰別名;別名連接的金鑰 ID 會保持不變,除非您刪除整個金鑰。

建立多列參數 (AWS CLI)

您可以使用 AWS CLI 來建立帶有分行符號的參數。使用分行符號來分割較長參數值中的文字以提高可讀性,或者更新網頁的多段落參數內容。使用分行字元 (例如 \n),您可以將內容包含在 JSON 檔案中並使用 --cli-input-json 選項,如下列範例所示。

  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請進行相應的操作。

    如需相關資訊,請參閱安裝或升級 AWS 命令列工具

  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>