メニュー
Amazon EC2 Systems Manager
ユーザーガイド

Systems Manager パラメータストアのチュートリアル

以下のチュートリアルでは、テスト環境でパラメータストアを使用してパラメータを作成、保存、実行する方法を示します。このチュートリアルは、その他の Systems Manager 機能でパラメーターストアを使用する方法を示しています。他の AWS のサービスと一緒にパラメータストアを使用することもできます。詳細については、「その他の AWS サービスで Secure String パラメーターを使用する」を参照してください。

コマンド (EC2 コンソール) でのパラメータの作成および使用

以下の手順では、パラメータストアでパラメータを作成し、そのパラメータを使用する Run Command コマンドを実行するプロセスについて説明します。

パラメータストアを使用してパラメータを作成するには

  1. Amazon EC2 コンソールを開き、ナビゲーションペインで [Systems Manager Shared Resources] を展開して、[Parameter Store] を選択します。

  2. [Create Parameter] を選択します。

  3. [Name] に、階層および名前を入力します。たとえば、/Test/helloWorld と入力します。パラメータ階層の詳細については、「パラメータを階層に編成」を参照してください。

  4. [Description] フィールドに、このパラメータをテストパラメータとして識別するための説明を入力します。

  5. [Type] で、[String] を選択します。

  6. [Value] フィールドに文字列を入力します。たとえば、My1stParameter と入力します。

  7. [Create Parameter] を選択します。システムがパラメータを作成したあと、OK を選択します。

  8. EC2 コンソールのナビゲーションウィンドウで、[Commands] を展開し、[Run Command] を選択します。

  9. [Run a command] を選択します。

  10. [Command Document] リストで、AWS-RunPowershellScript (Windows) または AWS-RunShellScript (Linux) を選択します。

  11. [Target instances] で、先ほど作成したインスタンスを選択します。

  12. [Commands] フィールドに、「echo {{ssm:parameter name}}」と入力します (たとえば、「echo {{ssm:/Test/helloWorld}}」)。

  13. [Run] を選択します。

  14. コマンド履歴リストで、先ほど実行したコマンドを選択し、[Output] タブを選択してから、[View Output] を選択します。

コマンド (AWS CLI) でのパラメータの作成および使用

以下の手順では、AWS CLI を使用してパラメータを作成および保存するプロセスについて説明します。

パラメータストアを使用して String パラメータを作成するには

  1. AWS CLI をローカルマシンにダウンロードします。

  2. AWS CLI を開いて次のコマンドを実行し、認証情報とリージョンを指定します。Amazon EC2 で管理者権限を持っているか、AWS Identity and Access Management (IAM) で適切なアクセス権限を付与されている必要があります。

    Copy
    aws configure

    以下を指定するよう求められます。

    Copy
    AWS Access Key ID [None]: key_name AWS Secret Access Key [None]: key_name Default region name [None]: region Default output format [None]: ENTER
  3. 以下のコマンドを実行して、String データ型を使用するパラメータを作成します。--name パラメータは階層を使用します。階層の詳細については、「パラメータを階層に編成」を参照してください。

    Copy
    aws ssm put-parameter --name "a_name" --value "a value" --type String

    名前にパラメータ階層を使用する例を次に示します。パラメータ階層の詳細については、「パラメータを階層に編成」を参照してください。

    Copy
    aws ssm put-parameter --name "/Test/IAD/helloWorld" --value "My1stParameter" --type String

    コマンドには出力がありません。

  4. 以下のコマンドを実行して、パラメータのメタデータを表示します。

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

    注記

    [Name] は大文字である必要があります。

    以下のような情報が返されます。

    {
        "Parameters": [
            {
                "LastModifiedUser": "arn:aws:iam::123456789:user/User's name",
                "LastModifiedDate": 1494529763.156,
                "Type": "String",
                "Name": "helloworld"
            }
        ]
    }
    
  5. 以下のコマンドを実行して、パラメータの値を変更します。

    Copy
    aws ssm put-parameter --name "/Test/IAD/helloWorld" --value "good day sunshine" --type String --overwrite

    コマンドには出力がありません。

  6. 以下のコマンドを実行して、最新のパラメータの値を表示します。

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

    以下のような情報が返されます。

    {
        "InvalidParameters": [],
        "Parameters": [
            {
                "Type": "String",
                "Name": "/Test/IAD/helloWorld",
                "Value": "good day sunshine"
            }
        ]
    }
  7. 以下のコマンドを実行して、パラメータ値の履歴を表示します。

    Copy
    aws ssm get-parameter-history --name "/Test/IAD/helloWorld"
  8. 以下のコマンドを実行して、このパラメータを Run Command コマンドで使用します。

    Copy
    aws ssm send-command --document-name "AWS-RunShellScript" --parameters "commands=["echo {{ssm:/Test/IAD/helloWorld}}"]" --targets "Key=instance-ids,Values=the ID of an instance configured for Systems Manager"

次の手順に従って、Secure String パラメータを作成します。Secure String パラメーターの詳細については、「Secure String パラメーターを使用する」を参照してください。

AWS CLI を使用して Secure String パラメータを作成するには

  1. 以下のコマンドのいずれかを実行して、Secure String データ型を使用するパラメータを作成します。

    デフォルトの KMS キーを使用する Secure String パラメータを作成する

    Copy
    aws ssm put-parameter --name "a_name" --value "a value, for example P@ssW%rd#1" --type "SecureString"

    カスタム AWS KMS キーを使用する Secure String パラメーターを作成する

    Copy
    aws ssm put-parameter --name "a_name" --value "a value" --type "SecureString" --key-id "your AWS user account ID/the custom AWS KMS key"

    カスタム AWS KMS キーを使用する例を次に示します。

    Copy
    aws ssm put-parameter --name "db-password" --value "P@ssW%rd#1" --type "SecureString" --key-id "arn:aws:kms:us-east-1:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e"

    重要

    Secure String パラメータの値のみが暗号化されます。パラメータの名前、説明などのプロパティは暗号化されません。したがって、パラメータ名に「password」という単語が入らないような命名法の作成を考慮してください。

  2. 以下のコマンドを実行して、パラメータのメタデータを表示します。

    Copy
    aws ssm describe-parameters --filters "Key=Name,Values=the name that you specified"
  3. 以下のコマンドを実行して、パラメータの値を変更します。

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

    デフォルトの KMS キーを使用する Secure String パラメータを更新する

    Copy
    aws ssm put-parameter --name "the name that you specified" --value "new value" --type "SecureString" --key-id "the AWS KMS key ID" --overwrite

    カスタム KMS キーを使用する Secure String パラメータを更新する

    Copy
    aws ssm put-parameter --name "the name that you specified" --value "new value" --type "SecureString" --key-id "your AWS user account alias/the custom KMS key" --overwrite
  4. 以下のコマンドを実行して、最新のパラメータの値を表示します。

    Copy
    aws ssm get-parameters --names "the name that you specified" --with-decryption
  5. 以下のコマンドを実行して、パラメータ値の履歴を表示します。

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

重要

Secure String パラメータの値のみが暗号化されます。パラメータの名前、説明などのプロパティは暗号化されません。したがって、パラメータ名に「password」という単語が入らないような命名法の作成を考慮してください。

Secure String パラメータを作成し、インスタンスをドメイン (PowerShell) に結合する

このチュートリアルでは、Systems Manager の Secure String パラメータおよび Run Command を使用して、Windows インスタンスをドメインに参加させる方法を示します。チュートリアルでは、DNS アドレス、ドメイン名、およびドメインユーザー名など一般的なドメインパラメータを使用します。これらの値は、暗号化されていない文字列値として渡されます。ドメインパスワードは、AWS KMS マスターキーを使用して暗号化され、Secure String として渡されます。

Secure String パラメータを作成し、インスタンスをドメインに結合する

  1. AWS Tools for Windows PowerShell を使用してシステムにパラメータを入力します。

    Copy
    Write-SSMParameter -Name DNS-IP -Value a DNS IP address -Type String Write-SSMParameter -Name domainName -Value the domain name -Type String Write-SSMParameter -Name domainJoinUserName -Value a user name -Type String Write-SSMParameter -Name domainJoinPassword -Value a password -Type SecureString

    重要

    Secure String パラメータの値のみが暗号化されます。パラメータの名前、説明などのプロパティは暗号化されません。したがって、パラメータ名に「password」という単語が入らないような命名法の作成を考慮してください。

  2. インスタンスの IAM ロールのアクセス許可に、AmazonEC2RoleforSSM の管理ポリシーをアタッチします。詳細については、「管理ポリシーおよびインラインポリシー」を参照してください。

  3. インスタンスにアタッチされた IAM ロールを編集し、次のポリシーを追加します。このポリシーは、kms:Decrypt API を呼び出すためのアクセス許可をインスタンスに与えます。

    Copy
    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "kms:Decrypt" ], "Resource":[ "arn:aws:kms:region:account_id:key/key_id" ] } ] }
  4. 次の json サンプルをシンプルなテキストエディタにコピーして貼り付け、次の場所に JoinInstanceToDomain.json としてファイルを保存します。c:\temp\JoinInstanceToDomain.json

    Copy
    { "schemaVersion":"2.0", "description":"Run a PowerShell script to securely domain-join a Windows instance", "mainSteps":[ { "action":"aws:runPowerShellScript", "name":"runPowerShellWithSecureString", "inputs":{ "runCommand":[ "$ipdns = (Get-SSMParameterValue -Name dns).Parameters[0].Value\n", "$domain = (Get-SSMParameterValue -Name domainName).Parameters[0].Value\n", "$username = (Get-SSMParameterValue -Name domainJoinUserName).Parameters[0].Value\n", "$password = (Get-SSMParameterValue -Name domainJoinPassword -WithDecryption $True).Parameters[0].Value | ConvertTo-SecureString -asPlainText -Force\n", "$credential = New-Object System.Management.Automation.PSCredential($username,$password)\n", "Set-DnsClientServerAddress \"Ethernet 2\" -ServerAddresses $ipdns\n", "Add-Computer -DomainName $domain -Credential $credential\n", "Restart-Computer -force" ] } } ] }
  5. 新しい SSM ドキュメントを作成するには、AWS Tools for Windows PowerShell で次のコマンドを実行します。

    Copy
    $json = Get-Content C:\temp\JoinInstanceToDomain | Out-String New-SSMDocument -Name JoinInstanceToDomain -Content $json
  6. インスタンスにドメインを結合させるには、AWS Tools for Windows PowerShell で次のコマンドを実行します。

    Copy
    Send-SSMCommand -InstanceId Instance-ID -DocumentName JoinInstanceToDomain

階層を使用したパラメータの管理

このウォークスルーは、AWS CLI を使用してパラメータおよびパラメータ階層を使用する方法について説明します。パラメータ階層の詳細については、「パラメータを階層に編成」を参照してください。

階層を使用してパラメータを管理するには

  1. AWS CLI をローカルマシンにダウンロードします。

  2. AWS CLI を開いて次のコマンドを実行し、認証情報とリージョンを指定します。Amazon EC2 で管理者権限を持っているか、AWS Identity and Access Management (IAM) で適切なアクセス権限を付与されている必要があります。

    Copy
    aws configure

    以下を指定するよう求められます。

    Copy
    AWS Access Key ID [None]: key_name AWS Secret Access Key [None]: key_name Default region name [None]: region Default output format [None]: ENTER
  3. 以下のコマンドを実行して、allowedPattern パラメータおよび String データ型を使用するパラメータを作成します。この例の許容されているパターンは、パラメータの値が 1~4 桁である必要があることを意味します。

    Copy
    aws ssm put-parameter --name "/MyService/Test/MaxConnections" --value 100 --allowed-pattern "\d{1,4}" --type String

    コマンドには出力がありません。

  4. 次のコマンドを実行して、先ほど新しい値で作成したパラメータの上書きを試みます。

    Copy
    aws ssm put-parameter --name "/MyService/Test/MaxConnections" --value 10,000 --type String --overwrite

    システムは、新しい値が前のステップで指定した許容されるパターンの要件を満たしていないため、次のエラーをスローします。

    An error occurred (ParameterPatternMismatchException) when calling the PutParameter operation: Parameter value, cannot be validated against allowedPattern: \d{1,4}

  5. 以下のコマンドを実行して、デフォルト AWS KMS キーを使用する Secure String パラメータを作成します。この例の許容されているパターンは、ユーザーが任意の文字を指定でき、値が 8~20 文字である必要があることを意味します。

    Copy
    aws ssm put-parameter --name "/MyService/Test/DBpassword" --value "p#sW*rd33" --allowed-pattern ".{8,20}" --type SecureString
  6. 次のコマンドを実行し、前のステップの階層構造を使用するパラメータをさらに作成します。

    Copy
    aws ssm put-parameter --name "/MyService/Test/DBname" --value "SQLDevDb" --type String
    Copy
    aws ssm put-parameter --name "/MyService/Test/user" --value "SA" --type String
    Copy
    aws ssm put-parameter --name "/MyService/Test/userType" --value "SQLuser" --type String
  7. 次のコマンドを実行して、2 つのパラメータの値を取得します。

    Copy
    aws ssm get-parameters --names "/MyService/Test/user" "/MyService/Test/userType"
  8. 次のコマンドを実行して、単一レベル内のすべてのパラメータをクエリします。

    Copy
    aws ssm describe-parameters --filters Key=Name,Values="/MyService/Test"
  9. 次のコマンドを実行して、2 つの関数を削除します。

    Copy
    aws ssm delete-parameters --name "/IADRegion/Dev/user" "/IADRegion/Dev/userType"