RDSでのDB + WebAPの構成を作成する。
RDSを作成する際はパラメータが多いけど、
例のごとく最低限のパラメータで作成する。
以下のサイトが分かりやすい。
qiita.com
recipe.kc-cloud.jp
DBセキュリティグループとVPCセキュリティグループの違い。
今はDBセキュリティグループは使わないんだね。
docs.aws.amazon.com
テンプレ例
最低限のパラメータで作るテンプレ例。
DBサブネットグループテンプレ
サブネット:"Subnet2"とサブネット:"Subnet3"を持つDBサブネットグループ:"RDSSubnetGroup1"を作成
※RDSインスタンスが所属するDBサブネットグループは少なくとも2つのサブネットを持つ必要があるので、DBサブネットグループというものが存在する。2つのサブネットはAZが異なる必要があり、マルチAZのため?
"RDSSubnetGroup1": {
"Type": "AWS::RDS::DBSubnetGroup",
"Properties": {
"DBSubnetGroupDescription": "Subnet2 for RDS",
"SubnetIds": [
{
"Ref": "Subnet2"
},
{
"Ref": "Subnet3"
}
]
},
},
サブネットテンプレ
①VPC:"VPC1"に所属し、AZ:"us-east-1a"を持つ192.168.2.0/24のサブネット:"Subnet2"を作成
②VPC:"VPC1"に所属し、AZ:"us-east-1b"を持つ192.168.3.0/24のサブネット:"Subnet3"を作成
異なるAZを二つ作成するためにAZを明示
①
"Subnet2": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"AvailabilityZone": "us-east-1a",
"VpcId": {
"Ref": "VPC1"
},
"CidrBlock": "192.168.2.0/24"
},
},
②
"Subnet3": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"AvailabilityZone": "us-east-1b",
"VpcId": {
"Ref": "VPC1"
},
"CidrBlock": "192.168.3.0/24"
},
},
セキュリティグループテンプレ
VPC:"VPC1"に紐づくセキュリティグループ:"SecurityGroup2"を作成。
送信元192.168.1.0/24からのインバウンド方向TCP/22~22 通信を許可。
"SecurityGroup2": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"VpcId": {
"Ref": "VPC1"
},
"GroupDescription": "Allow access only EC2",
"SecurityGroupIngress": [
{
"CidrIp": "192.168.1.0/24",
"IpProtocol": "TCP",
"FromPort": "22",
"ToPort": "22"
}
]
},
},
本体。
ストレージサイズ5GB、インスタンスタイプdb.m1.small、データベース種類MySQLのRDSインスタンスを作成
セキュリティグループ:"SecurityGroup2"、DBサブネットグループ:"RDSSubnetGroup1"、に所属させる。
ユーザー:"MyName"、パスワード:"MyPassword"で作成。
"RDSInstance1": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"AllocatedStorage": "5",
"DBInstanceClass": "db.m1.small",
"Engine": "MySQL",
"MasterUsername": "MyName",
"MasterUserPassword": "MyPassword",
"DBSubnetGroupName": {
"Ref": "RDSSubnetGroup1"
},
"VPCSecurityGroups": [
{
"Ref": "SecurityGroup2"
}
]
},
},
上記テンプレを合体
VPCは前回の記事を流用。RDS部分のみのコンポーネントは以下になる。
前回の記事と今回の記事を合体させたtemplateファイル。
www.dropbox.com