CloudFormationをいじる RDS編

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"
                    }
                ]
            },
        },

 

RDSインスタンステンプレ

本体。

ストレージサイズ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部分のみのコンポーネントは以下になる。

f:id:no1497:20170409215805p:plain

 

 

前回の記事と今回の記事を合体させたtemplateファイル。

 

www.dropbox.com