【AWS】Secrets Manager ~ AWS CLI 編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/03/12/220717
https://dk521123.hatenablog.com/entry/2021/10/05/105550

の続き。

 AWS Secrets Manager でのシークレットの作成を
AWS CLIで行う必要ができたので、メモ。
ついでに過去の記事も整理。

目次

【1】コマンド
 1)list-secrets
 2)get-secret-value
 3)create-secret
 4)put-secret-value
【2】サンプル
 例1:list-secrets(シークレット一覧)
 例2:get-secret-value(シークレットの取得)
 例3:create-secret (シークレットの作成)

【1】コマンド

* 紹介していないコマンドについては、
 以下の公式ドキュメントを参照。

https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/index.html
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/tutorials_basic.html#tutorial-basic-step2
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/tutorials_db-rotate.html

1)list-secrets

* シークレット一覧表示

2)get-secret-value

* シークレットの取得。

公式ドキュメント
https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html

3)create-secret

* シークレットの作成

公式ドキュメント
https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/create-secret.html

4)put-secret-value

【2】サンプル

例1:list-secrets(シークレット一覧)

# 一覧がJSON形式で返ってくる
aws secretsmanager list-secrets

# Jq を利用してシークレット名を一覧で取得
aws secretsmanager list-secrets | jq ".SecretList[] .Name"

例2:get-secret-value(シークレットの取得)

# 権限があれば、JSONで結果が返ってくる
aws secretsmanager get-secret-value \
--region us-east-1 --secret-id sample-rds-key

# jqコマンドを使用してJSONをパースする (sudo apt install jq などでインストール)
# jq の -r オプション : 囲み文字であるダブルクォートが除去
aws secretsmanager get-secret-value \
--region us-east-1 --secret-id sample-rds-key | jq -r .SecretString | jq -r .username

# 変数に格納する
secret=$(aws secretsmanager get-secret-value  --region us-east-1 --secret-id sample-rds-key | jq .SecretString | jq fromjson)
user=$(echo $secret | jq -r .username)
password=$(echo $secret | jq -r .password)

# 確認
echo $user

例3:create-secret (シークレットの作成)

# JSONファイルをシークレットとして作成(登録?)
aws secretsmanager create-secret \
--region us-east-1 \
--name demo-secret --description "This is a sample" \
--secret-string file://input_demo.json
# 「file://」は重要。詳細は、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2022/06/01/154618

<出力結果 (作成したらARNなどが返ってくる)>

{
  "ARN": "arn:aws:secretsmanager:us-east-1:000000000:secret:demo-secret-xxxxx",
  "Name": "demo-secret",
  "VersionId": "xxxx-xxxx-xxxx-xxxx"
}

input_demo.json

{
  "Key1": "Hello",
  "Key2": "World",
  "Key3": "!!!"
}

参考文献

https://qiita.com/inductor/items/ac8f4a1a947f0d3bbaa6

関連記事

機密データの管理 ~ Secrets Manager 編 ~
https://dk521123.hatenablog.com/entry/2020/03/12/220717
機密データの管理 ~ Secrets Manager / boto3 編 ~
https://dk521123.hatenablog.com/entry/2021/10/05/105550
エラー「Invalid length for parameter SAMLMetadataDocument」が発生
https://dk521123.hatenablog.com/entry/2022/06/01/154618
AWS CLI ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/12/01/000000