AWS Secrets Manager emulatorを使う手順
このエントリでは、
AWSのSecretsManagerから情報を取得するアプリケーションを、
ローカルPCで開発する際に便利な、
AWS Secrets Manager emulatorの使い方手順をまとめています。
AWS Secrets Manager emulator
https://github.com/skarpdev/hapi-aws-secrets-manager-emulator
AWS Secrets Manager emulatorの起動から、
Pythonのアプリケーションから情報を取得するまでの流れを記載します。
AWS Secrets Manager emulatorの起動
Dockerを使わない版
Node.jsの環境が必要です、
Nodeのversionは16.13.1以上17未満である必要があります。
nodenv使っているなら、次のような感じで準備します。
nodenv install 16.20.1
nodenv local 16.20.1
npm install -g yarn
Nodeの環境が準備できたら、ダウンロードと依存ライブラリのインストールをします。
wget https://github.com/skarpdev/hapi-aws-secrets-manager-emulator/archive/refs/tags/v0.4.1.tar.gz
tar zxf v0.4.1.tar.gz
cd hapi-aws-secrets-manager-emulator-0.4.1
yarn install
秘匿情報を準備します。
mkdir secrets
echo '{"key": "secret"}' > secrets/mysecret
emulatorを起動します。
export SECRETS_MANAGER_PRELOAD_DIRECTORY=$(pwd)/secrets
yarn start
Dockerを使う(docker compose)版
秘匿情報を準備します。
mkdir secrets-manager-secrets
echo '{"key": "secret"}' > secrets-manager-secrets/mysecret
docker-compose.yamlファイルを準備します。
docker-compose.yaml
version: '3'
services:
secretsmanager:
image: skarpdev/aws-secrets-manager-emulator:0.1.0
volumes:
- ./secrets-manager-secrets:/secrets
ports:
- 3000:3000
起動します。
docker compose up
Pythonのアプリケーションからの情報取得
アプリケーションを用意します。
main.py
import boto3
import json
# 秘匿情報を取得
client = boto3.client('secretsmanager')
response = client.get_secret_value(SecretId="mysecret")
secret_obj = json.loads(response["SecretString"])
print(secret_obj)
アプリケーションを実行して秘匿情報を取得できているか確認します。
export AWS_ENDPOINT_URL_SECRETS_MANAGER=http://localhost:3000
export AWS_ACCESS_KEY_ID=dummy
export AWS_SECRET_ACCESS_KEY=dummy
export AWS_DEFAULT_REGION=dummy
python main.py
環境変数AWS_ENDPOINT_URL_SECRETS_MANAGER
で、
接続するSecretsManagerをローカルのemulatorに変更するのが肝ですね。
以上。