AWS Systems Manager(SSM) パラメータストアの使用方法
パラメータストアとは
AWSのサービスであるSystems Manager(SSM)の一部であり、構成データやセキュリティ情報などの機密情報を安全に保存し、アプリケーションやサービスから簡単に取得できるようにするサービスです。
またデータを保護するためにAWS Key Management Service(KMS)を使用することができます。この組み合わせにより、保存された機密データが暗号化され、セキュリティが向上します。
KMSとは
Key Management Service(KMS)は、データを暗号化するためのキーを作成・管理するサービスです。
パラメータを設定する
下記のコマンドで設定できます。
aws ssm put-parameter --name "<パラメータ名>" --type String --value <値>
ちなみにaws
とssm
は識別名として利用できない文字のため、パラメータ名に使用できません。
Parameter name: can't be prefixed with "aws" or "ssm" (case-insensitive).
というエラーが表示されます。
パラメータの値を取得する
下記のオプションがついていないコマンドを使用するとJSON形式で出力されます。
aws ssm get-parameter --name "<パラメータ名>" --region <リージョン名>
出力結果
{
"Parameter": {
"Name": "<パラメータ名>",
"Type": "String",
"Value": "<値>",
"Version": 1,
"LastModifiedDate": "2023-11-22T11:40:41.254000+09:00",
"ARN": "arn:aws:ssm:<リージョン名>:<アカウントID>:parameter/<パラメータ名>",
"DataType": "text"
}
}
オプションについて
全てのオプションを指定した場合下記のような記述になります。
aws ssm get-parameter --name "<パラメータ名>" --with-decryption --region <リージョン名> --output table | jq -r '.Parameter.Value')
--with-decryption
: パラメータの値が暗号化されている場合に、復号化して値を取得
下記の安全な文字列を選択しているときには、--with-decryption
オプションを指定してください。
--output
: 出力形式を指定できます。出力形式はjson
、text
、table
、yaml
、yaml-stream
の5つから指定できます。今回はtable形式を指定したのでデフォルトのJSON形式ではなく、下記のように取得できます。
| jq -r '.Parameter.Value'
: jqコマンドを使用して、JSON出力から特定のフィールド(ここでは .Parameter.Value)を取り出し、その値を表示
|
演算子を使用して、AWS CLIの出力をjqに渡し、jqで必要なデータを抽出しています。
ロールにポリシーをアタッチする
AmazonSSMFullAccess
というポリシーをロールにアタッチしてください。
CodePipeline - buildspec.ymlで使用する場合
下記のように記述します。
$AWS_DEFAULT_REGION
のみCodeBuildの環境変数を使用しています。
version: 0.2
# pre_buildで取得した値を環境変数として利用する
env:
parameter-store:
ACCOUNT_ID: "ACCOUNT_ID"
# ビルド実行時にCodeBuildが実行するコマンド
phases:
pre_build:
commands:
# SSMパラメータストアから値を取得する
- export ACCOUNT_ID=$(aws ssm get-parameter --name "ACCOUNT_ID" --with-decryption --region $AWS_DEFAULT_REGION | jq -r '.Parameter.Value')
料金
基本的には追加料金なしの無料で利用できます。
下記の安全な文字列を選択しても料金は無料でした。
ですが、スタンダードという追加料金なしのパラメータ種別のほかに、アドバンスドというパラメータ種別が存在します。アドバンスドというパラメータ種別を利用する場合は料金がかかります。
スタンダードとアドバンスドの違い
コンソールからの設定方法は以下になります。
AWS Systems Manager>パラメータストア>設定>パラメータストアのデフォルト階層
デフォルト階層の変更から変更できます。
AWS Systems Manager Parameter StoreとSecrets Managerの違い
使用シーン
料金
Secrets Managerは作成しているだけで使用していなくても料金がかかります。
終わりに
何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉
Discussion