Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] Amazon EC2 Systems Manager 入門 (5) パラメータストア

More than 3 years have passed since last update.

この記事について

JAWS-UG CLI専門支部 #81 Amazon EC2 Systems Manager 入門で実施するハンズオン用の手順書です。

前提条件

必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。

  • EC2 Systems Manager(ssm)のフルコントロール権限
  • EC2のフルコントロール権限
  • CloudFormationの関するフルコントロール権限
  • IAMの関するフルコントロール権限
  • S3の関するフルコントロール権限
  • SNSの関するフルコントロール権限

0. 準備

0.1. リージョンを指定

ハンズオンでは東京リージョンを利用しますが、必要に応じて他のリージョンに変更してご利用ください。(東京リージョンを他の検証目的で利用している、など)

コマンド
export AWS_DEFAULT_REGION="ap-northeast-1"

0.2. 資格情報を確認

コマンド
aws configure list

インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。

結果
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************QSAA         iam-role
secret_key     ****************c1xY         iam-role
    region                us-west-2              env    AWS_DEFAULT_REGION

0.3. バージョン確認

コマンド
aws --version
結果
(可能な限り最新版を利用しましょう)

0.4. バージョンアップ(必要に応じて)

コマンド
sudo pip install -U awscli

1. パラメータの設定

1.1. 文字列の設定

パラメータ名の指定

コマンド
PARAMETER_NAME="test-string"
PARAMETER_DESCRIPTION="JAWS-UG CLI Branch EC2 Systems Manager"

パラメータ名の指定

コマンド
PARAMETER_VALUE="test"

パラメータタイプの指定

コマンド
PARAMETER_TYPE="String"

同名パラメータの不存在を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": []
}

パラメータの確認

コマンド
cat << ETX

    PARAMETER_NAME: ${PARAMETER_NAME}
    PARAMETER_DESCRIPTION: ${PARAMETER_DESCRIPTION}
    PARAMETER_VALUE: ${PARAMETER_VALUE}
    PARAMETER_TYPE: ${PARAMETER_TYPE}

ETX
結果
    PARAMETER_NAME: test-string
    PARAMETER_DESCRIPTION: JAWS-UG CLI Branch EC2 Systems Manager
    PARAMETER_VALUE: test
    PARAMETER_TYPE: String

パラメータの設定

コマンド
aws ssm put-parameter \
    --name ${PARAMETER_NAME} \
    --description "${PARAMETER_DESCRIPTION}" \
    --value ${PARAMETER_VALUE} \
    --type ${PARAMETER_TYPE} \
    --no-overwrite

パラメータの存在を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": [
        {
            "LastModifiedUser": "arn:aws:sts::************:assumed-role/CLI/i-*****************",
            "LastModifiedDate": 1490529282.442,
            "Type": "String",
            "Name": "test-string",
            "Description": "JAWS-UG CLI Branch EC2 Systems Manager"
        }
    ]
}

1.2. 文字列のリストの設定

パラメータ名の指定

コマンド
PARAMETER_NAME="test-list"
PARAMETER_DESCRIPTION="JAWS-UG CLI Branch EC2 Systems Manager"

パラメータ名の指定

コマンド
PARAMETER_VALUE="test1,test2,test3,test4,test5,test6"

パラメータタイプの指定

コマンド
PARAMETER_TYPE="StringList"

同名パラメータの不存在を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": []
}

パラメータの確認

コマンド
cat << ETX

    PARAMETER_NAME: ${PARAMETER_NAME}
    PARAMETER_DESCRIPTION: ${PARAMETER_DESCRIPTION}
    PARAMETER_VALUE: ${PARAMETER_VALUE}
    PARAMETER_TYPE: ${PARAMETER_TYPE}

ETX
結果
    PARAMETER_NAME: test-list
    PARAMETER_DESCRIPTION: JAWS-UG CLI Branch EC2 Systems Manager
    PARAMETER_VALUE: test1,test2,test3,test4,test5,test6
    PARAMETER_TYPE: StringList

パラメータの設定

コマンド
aws ssm put-parameter \
    --name ${PARAMETER_NAME} \
    --description "${PARAMETER_DESCRIPTION}" \
    --value ${PARAMETER_VALUE} \
    --type ${PARAMETER_TYPE} \
    --no-overwrite

パラメータの存在を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": [
        {
            "LastModifiedUser": "arn:aws:sts::************:assumed-role/CLI/i-*****************",
            "LastModifiedDate": 1490529738.402,
            "Type": "StringList",
            "Name": "test-list",
            "Description": "JAWS-UG CLI Branch EC2 Systems Manager"
        }
    ]
}

1.3. 暗号化された文字列の設定

パラメータ名の指定

コマンド
PARAMETER_NAME="test-securestring"
PARAMETER_DESCRIPTION="JAWS-UG CLI Branch EC2 Systems Manager"

パラメータ名の指定

コマンド
PARAMETER_VALUE="test1"

パラメータタイプの指定

コマンド
PARAMETER_TYPE="SecureString"

同名パラメータの不存在を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": []
}

パラメータの確認

コマンド
cat << ETX

    PARAMETER_NAME: ${PARAMETER_NAME}
    PARAMETER_DESCRIPTION: ${PARAMETER_DESCRIPTION}
    PARAMETER_VALUE: ${PARAMETER_VALUE}
    PARAMETER_TYPE: ${PARAMETER_TYPE}

ETX
結果
    PARAMETER_NAME: test-securestring
    PARAMETER_DESCRIPTION: JAWS-UG CLI Branch EC2 Systems Manager
    PARAMETER_VALUE: test1
    PARAMETER_TYPE: SecureString

パラメータの設定

コマンド
aws ssm put-parameter \
    --name ${PARAMETER_NAME} \
    --description "${PARAMETER_DESCRIPTION}" \
    --value ${PARAMETER_VALUE} \
    --type ${PARAMETER_TYPE} \
    --no-overwrite

パラメータの存在を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": [
        {
            "KeyId": "alias/aws/ssm",
            "Name": "test-securestring",
            "LastModifiedDate": 1490529907.779,
            "LastModifiedUser": "arn:aws:sts::************:assumed-role/CLI/i-*****************",
            "Type": "SecureString",
            "Description": "JAWS-UG CLI Branch EC2 Systems Manager"
        }
    ]
}

2. パラメータの取得

2.1. 文字列の取得

変更履歴の確認

バージョンが1つしか無いため、何も表示されません

コマンド
PARAMETER_NAME="test-string"
コマンド
aws ssm get-parameter-history \
    --name ${PARAMETER_NAME}
結果
{
    "Parameters": []
}

値の取得

コマンド
aws ssm get-parameters \
    --names ${PARAMETER_NAME}
結果
{
    "InvalidParameters": [],
    "Parameters": [
        {
            "Type": "String",
            "Name": "test-string",
            "Value": "test"
        }
    ]
}

2.2. 文字列リストの取得

変更履歴の確認

バージョンが1つしか無いため、何も表示されません

コマンド
PARAMETER_NAME="test-list"
コマンド
aws ssm get-parameter-history \
    --name ${PARAMETER_NAME}
結果
{
    "Parameters": []
}

値の取得

コマンド
aws ssm get-parameters \
    --names ${PARAMETER_NAME}
結果
{
    "InvalidParameters": [],
    "Parameters": [
        {
            "Type": "StringList",
            "Name": "test-stringlist",
            "Value": "test1,test2,test3,test4,test5,test6"
        }
    ]
}

2.3. 暗号化された文字列の取得

変更履歴の確認

バージョンが1つしか無いため、何も表示されません

コマンド
PARAMETER_NAME="test-securestring"
コマンド
aws ssm get-parameter-history \
    --name ${PARAMETER_NAME}
結果
{
    "Parameters": []
}

値の取得(復号化オプションなし)

コマンド
aws ssm get-parameters \
    --names ${PARAMETER_NAME}
結果
{
    "InvalidParameters": [],
    "Parameters": [
        {
            "Type": "SecureString",
            "Name": "test-securestring",
            "Value": "AQECAHiUI/G7eV8mb0bhaItPG0LdDL5TjSku7AShFDfQANtscgAAAGMwYQYJKoZIhvcNAQcGoFQwUgIBADBNBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDIUxgYaIGOJ3D3gMBgIBEIAgq2xO6QEAGlDcjdXamiINWyr+P8Gld1wiBw4q9lKRv3k="
        }
    ]
}

値の取得(復号化オプションあり)

コマンド
aws ssm get-parameters \
    --names ${PARAMETER_NAME} \
    --with-decryption
結果
{
    "InvalidParameters": [],
    "Parameters": [
        {
            "Type": "SecureString",
            "Name": "test-securestring",
            "Value": "test1"
        }
    ]
}

3. パラメータの削除

3.1. パラメータの削除(文字列)

パラメータ名の指定

コマンド
PARAMETER_NAME="test-string"

パラメータの削除

コマンド
aws ssm delete-parameter \
    --name ${PARAMETER_NAME}

パラメータの削除を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": []
}

3.2. パラメータの削除(文字列リスト)

パラメータ名の指定

コマンド
PARAMETER_NAME="test-list"

パラメータの削除

コマンド
aws ssm delete-parameter \
    --name ${PARAMETER_NAME}

パラメータの削除を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": []
}

3.3. パラメータの削除(暗号化された文字列)

パラメータ名の指定

コマンド
PARAMETER_NAME="test-securestring"

パラメータの削除

コマンド
aws ssm delete-parameter \
    --name ${PARAMETER_NAME}

パラメータの削除を確認

コマンド
aws ssm describe-parameters \
    --filters Key="Name",Values="${PARAMETER_NAME}"
結果
{
    "Parameters": []
}

以上

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした