{CloudFormation}シークレットマネージャからパスワード取得

https://techblog.zozo.com/entry/pass_secrets_to_cloudformation


-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

-- 1.2 コマンドインストール
sudo yum -y install jq mysql


-- 2. シークレット作成


aws secretsmanager list-secrets

aws secretsmanager create-secret \
--name secret01 \
--description secret01

aws secretsmanager describe-secret \
--secret-id secret01


aws secretsmanager put-secret-value \
--secret-id secret01 \
--secret-string '{"password":"password"}'

aws secretsmanager get-secret-value \
--secret-id secret01

 


-- 3. スタック作成

vim a.yaml

AWSTemplateFormatVersion: "2010-09-09"
Description: Provision RDS using AWS Secrets Manager

Resources:

  RDS: 
    Type: AWS::RDS::DBInstance
    Properties: 
      DBInstanceIdentifier: mysql01
      Engine: MySQL
      EngineVersion: 8.0.25
      DBInstanceClass: db.t3.micro
      AllocatedStorage: 20
      StorageType: gp2
      MasterUsername: root
      MasterUserPassword: '{{resolve:secretsmanager:secret01:SecretString:password}}'
      PubliclyAccessible: false
      MultiAZ: false
      AutoMinorVersionUpgrade: false
      EnablePerformanceInsights : false
      BackupRetentionPeriod: 1
      Tags: 
        - Key: Name
          Value: mysql01
    DeletionPolicy: Delete


aws cloudformation validate-template \
--template-body file://a.yaml


aws cloudformation create-stack \
--stack-name stack01 \
--template-body file://a.yaml

 


-- 4. スタック一覧

aws cloudformation describe-stacks \
--stack-name stack01

aws cloudformation describe-stack-resources \
--stack-name stack01

 

-- 5. 動作確認

mysql -h mysql01.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u root -p

 

-- 6. クリーンアップ

-- スタック削除
aws cloudformation delete-stack \
--stack-name stack01

 

-- シークレット削除
aws secretsmanager list-secrets

aws secretsmanager delete-secret \
--secret-id secret01 \
--force-delete-without-recovery