Amazon Aurora
リンク
VPC Private EC2 to Aurora(MySQL)
確認用のセッションマネージャ用のEC2の作成
VPC
EC2サブネット 、パブリックサブネット(Nat用)、DBサブネットは2台
ルートテーブル、パブリック=IGW、EC2=NAT
セキュリティグループ、DB用はアプリからのインバウンドを許可
エンドポイント
EC2
NATの作成
インターネットゲートウェイの作成
作成したVPCにアタッチ
NAT用のサブネットの作成
NATサブネット用のルートテーブルを作成
NATサブネットへの紐付け
0.0.0.0/0 → インターネットゲートウェイ
NATゲートウェイの作成
Elastic IPの作成
NATサブネットゲートウェイの作成
作成したElastic IPをアタッチ
EC2用のルートテーブルを作成
EC2サブネットへの紐付け
0.0.0.0/0 → NATゲートウェイ
mysql client インストール
GPG keys が古いので更新をしないといけない場合がある
クライアントのインストール
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
sudo yum install mysql-community-client -y
Auroraの作成
サブネットグループの作成
作成したDB用のサブネットを2つ以上選択
パラメータグループの作成
DBクラスタ
DB
データベースの作成
作成したVPC
作成したサブネットグループ
パブリックなし
DB用のセキュリティグループ、デフォルトは外す
作成したパラメータグループ
VPC Private EC2 to Aurora(MySQL) + RDS Proxy
参考
前述の手順を実施
セキュリティグループ
RDS Proxy用のセキュリティグループを作成する
RDS ProxyはアプリからのMySQLのインバウンドを許可を追加
DB用のセキュリティグループを変更
RDSProxyセキュリティグループからのMySQLのインバウンドをアクセスを許可に変更する
エンドポイントの作成
以下を追加する
com.amazonaws.ap-northeast-1.secretsmanager
DBサブネット
プロキシセキュリティグループ
AWS Secrets Managerの作成
RDSデータベース認証
ID,PWの入力
暗号化キーはデフォルトでOK(aws/secretsmanager)
作成したRDSのクラスターを紐付ける
IAMロールの作成
ポリシーの作成
code:json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": [
// 複数ある場合は複数
"作成したシークレットのARN",
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "KMSのaws/secretsmanagerのARN",
"Condition": {
"StringEquals": {
"kms:ViaService": "secretsmanager.ap-northeast-1.amazonaws.com"
}
}
}
]
}
ロールの作成
RDS > Add Role to Database
作成したポリシーを設定
プロキシの作成
作成したDBクラスターを指定
作成したSecretsを指定
IAMロール
プロキシの作成
DB用のサブネットを指定
作成したプロキシ用のセキュリティグループを指定
EC2のセッションマネージャでログインして接続する
VPC Private Lambda to Aurora(MySQL)
VPCの作成
アプリ用サブネット、DB用サブネットを作る
DB用のサブネットは2つ以上が必要
セキュリティグループ
アプリ用のセキュリティグループの作成
DB用のセキュリティグループの作成
インバウンドで、MySQLポートでアプリ用のセキュリティグループからを許可する
Auroraの作成
EC2のときと同じ
IAMロールの作成
AWSLambdaVPCAccessExecutionRoleを持ったロールを作成する
Lambdaの作成
VPC用のラムダを作る
作成したロール
VPCを有効化
作成したVPC、アプリ用サブネット
作成したアプリ用セキュリティグループ
テストをすると接続出来るようになっている
パラメータストアからPWなどを取る場合
パラメータストアから認証情報を取得する場合は、ロールにSSMのアクセス権限が必要
既存のルールに以下を付与すればとりあえずOK
AmazonSSMReadOnlyAccess
エンドポイント
ssm
Lambdaが属するセキュリティグループを付与
意味的にはLambdaからエンドポイントへのアクセスを許可したい
セキュリティグループ
インバウンド
httpsで自身が属するセキュリティグループからのアクセスを許可する
VPC Lambda to RDS Proxy]
前述のVPC Lambdaの手順を実施
VPC
DNSホスト名を編集
DNSホスト名を有効化する
セキュリティグループ
RDS Proxy用のセキュリティグループを作成する
RDS ProxyはアプリからのMySQLのインバウンドを許可を追加
DB用のセキュリティグループを変更
RDSProxyセキュリティグループからのMySQLのインバウンドをアクセスを許可に変更する
エンドポイントの作成
以下を追加する
com.amazonaws.ap-northeast-1.secretsmanager
DBサブネット
プロキシセキュリティグループ
AWS Secrets Managerの作成
RDSデータベース認証
ID,PWの入力
暗号化キーはデフォルト
作成したRDSのクラスターを紐付ける
IAMロールの作成
プロキシの作成
作成したDBクラスターを指定
作成したSecretsを指定
IAMロール
プロキシの作成
DB用のサブネットを指定
作成したプロキシ用のセキュリティグループを指定
Lambda
関数にデータベースプロキシを追加する?TODO 要確認
追加していたが一定期間接続が出来なかった?
勝手に追加される?
データベースプロキシを追加したさいに、VPCエンドポイントが作られている?