AWS CLIですべてのSSM Parameterを一括取得する
こんにちは、CX事業本部の若槻です。
AWS CLIでAWS Systems Manager パラメーターストア(SSM Parameter)からすべてのパラメータの名前や値などの情報を一括取得するコマンドを確認したのでご紹介します。
コマンド
AWS CLIで以下のコマンドを実行すればすべてのパラメータの名前と値を一括取得できます。(ただし、階層が設定されていないパラメータに限る)
aws ssm get-parameters-by-path --path "/"
$ aws ssm get-parameters-by-path --path "/" { "Parameters": [ { "Name": "AAAAAAA", "Type": "String", "Value": "あああああああ", "Version": 1, "LastModifiedDate": 1585235884.237, "ARN": "arn:aws:ssm:ap-southeast-1:123456789012:parameter/AAAAAAA" }, { "Name": "BBBBBBB", "Type": "String", "Value": "12345678", "Version": 1, "LastModifiedDate": 1585235895.919, "ARN": "arn:aws:ssm:ap-southeast-1:123456789012:parameter/BBBBBBB" }, { "Name": "CCCCCCCC", "Type": "String", "Value": "いいいいいいい", "Version": 1, "LastModifiedDate": 1585235959.944, "ARN": "arn:aws:ssm:ap-southeast-1:123456789012:parameter/CCCCCCCC" }, { "Name": "DDDDDDD", "Type": "String", "Value": "0987654321", "Version": 1, "LastModifiedDate": 1585235975.3, "ARN": "arn:aws:ssm:ap-southeast-1:123456789012:parameter/DDDDDDD" } ] }
なぜget-parameters-by-path
コマンドなのか
AWS CLIのaws ssm
コマンドにはパラメータを取得するコマンドとしてget-parameter
やget-parameters
がありますが、いずれもコマンド実行時に取得したいパラメーターの名前を以下の実行例のように明示的に指定する必要があります。
//実行例 $ aws ssm get-parameter --name "MyStringParameter" $ aws ssm get-parameters --names "MyStringParameter" "MyStringListParameter" "MyInvalidParameterName"
また、パラメータを一括取得するlist-parameters
なるコマンドがありそうな気がしますが、このようなコマンドは用意されていません。
じゃあどうすればいいかと言うと、SSM Parameterにはパラメータ階層というパラメータ名にパスを利用してパラメータ管理をしやすくする機能があります。
パラメータ階層を使用すると、パラメータの編成や管理がしやすくなります。階層は、スラッシュを使用して定義するパスを含むパラメータ名です。
そしてこのパラメータ階層を階層ごとに取得できるget-parameters-by-path
コマンドでルートパス/
を指定することにより、階層が設定されていないパラメータを一括取得することができるのです。
逆に、階層が設定されているパラメータ(例:/AAA/BBB
)はaws ssm get-parameters-by-path --path "/"
では取得できません。--path
に明示的に/AAA
と指定してあげる必要があります。
// 「/AAA/BBB」という名前のパラメータを取得する場合 $ aws ssm get-parameters-by-path --path "/AAA" { "Parameters": [ { "Name": "/AAA/BBB", "Type": "String", "Value": "fff", "Version": 1, "LastModifiedDate": 1585237540.855, "ARN": "arn:aws:ssm:ap-southeast-1:123456789012:parameter/AAA/BBB" } ] }
おわりに
設定済みのパラメータを洗い出す際に今回のコマンドが役に立ちました。また今までパラメータ階層という機能は知らなかったですが、便利そうなので機会があれば利用したいです。