TECH

【AWS Secrets Manager】プライベート環境でEC2インスタンスからRDSに接続

投稿日:

 

Secrets Managerのチュートリアルに、プライベートサブネットにあるEC2インスタンスでSecrets Manager使っているチュートリアルがなかったから、AWSのドキュメントを参考にやってみました。

プライベートサブネットにあるEC2インスタンスからSecrets Managerのシークレット情報を取得し、プライベートサブネットにあるRDSに接続します。

 

構成

 

各プライベートサブネットにEC2を1台ずつ配置(1a, 1c)

プライベートサブネットにRDSインスタンスを1台構築(1a)

※東京リージョンで実施

 

RDSインスタンスを作成

 

・パブリックアクセシビリティを「No」に設定

・認証方法は任意

・ここで設定したマスターアカウントおよびパスワードはSecrets Managerで使用

あとの項目は任意

 

シークレット作成

 

・対象のRDSを選択しマスターアカウントとパスワードを設定する

あとの項目は任意

 

Secrets Managerのエンドポイントを作成

 

・事前にSecrets Manager用のセキュリティグループを作成、インバウンドルールにHTTPS(443)を許可する

・「エンドポイントの作成」画面でSecrets Managerを選択

・VPCおよびサブネット(EC2インスタンスのあるプライベートサブネット)と事前に作成したセキュリティグループを選択し、VPCエンドポイントを作成する

・プライベートDNSは「有効」に設定

ポリシーは任意で設定(始めはテスト的な面があると思うのでフルポリシーにして、あとで編集するのがベター)

 

テスト

 

EC2にて以下のコマンドを打つ

必要なパッケージをインストール、AWS CLIを最新化

 

Secrets Managerとの疎通確認

 

MySQLに接続

アクセスできたら成功

 

AWS CLIでエラーになった場合

 

リージョンエラー

You must specify a region. You can also configure your region by running "aws configure".

awsコマンドのあとにリージョンをしていするオプションをつければコマンドが通ります。

例:aws s3 ls --region ap-northeast-1

 

名前が見つからない

"The config profile (myname) could not be found"

aws configure で--profileオプション使って認証後、~/.aws/config に自分のプロファイルができています。ここを見るとデフォルトでは [profile foo] といったように、--profileオプションで指定した名前の前にprofileが入っています。これを削除して完全に自分の名前になるようにしてください。

 

【参考】

Error You must specify a region when running command aws ecs list-container-instances

https://stackoverflow.com/questions/29166957/error-you-must-specify-a-region-when-running-command-aws-ecs-list-container-inst

Using AWS Secrets Manager with Amazon RDS and AWS Fargate - Scenario

https://secrets-manager.awssecworkshops.com/RDSFargate/

プライベート VPC で AWS Secrets Manager シークレットをローテーションする方法を教えて下さい

https://aws.amazon.com/jp/premiumsupport/knowledge-center/rotate-secrets-manager-secret-vpc/

 

 

-TECH
-

Copyright© 紳士は変態がお好き , 2020 All Rights Reserved.