最初は0からRDS(MySQL)を作成して、ユーザーやデータベースを作り、
初期データをインポートしてからスナップショットを取り、その後は、
スナップショットからRDSを作成するって場合があると思います。
特にCloudFormationで環境を作成したり削除したりする場合は、
最初に上記の手順を実施するとが多いと思います。
0からRDS(MySQL)を作るCloudFormationを作るテンプレートは、こんな感じです。
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "ProjectName": { "Type": "String", "Default": "suzlab" }, "DbSubnetGroupName": { "Type": "String", "Default": "xxxxxxxx" }, "VpcSecurityGroup": { "Type": "AWS::EC2::SecurityGroup::Id", "Default": "sg-yyyyyyyy" } }, "Resources": { "DbInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "Engine": "MySQL", "AllocatedStorage": "5", "MasterUsername": "root", "DBInstanceClass": "db.t2.micro", "DBSubnetGroupName": { "Ref": "DbSubnetGroupName" }, "DBInstanceIdentifier": { "Ref": "ProjectName" }, "VPCSecurityGroups": [ { "Ref": "VpcSecurityGroup"} ], "MasterUserPassword": { "Fn::Join" : [ "", [ { "Ref": "ProjectName" }, "!Z3" ] ] } }, "DeletionPolicy": "Snapshot" } } }
ポイントは
"DeletionPolicy": "Snapshot"
を付けることで、スタックを削除したときにRDSのスナップショットが自動的に
作成されるようにしています。
作成したRDS(MySQL)に対して、下記のようにユーザーとデータベースを作成します。
CREATE DATABASE xxxxxxxx DEFAULT CHARACTER SET utf8; CREATE USER xxxxxxxx_user IDENTIFIED BY 'xxxxxxxx_pass'; GRANT ALL ON xxxxxxxx.* TO xxxxxxxx_user;
初期データのインポートは、こんな感じです。
mysql -u xxxxxxxx_user -p -h xxx.xxx.xxx.xxx xxxxxxxxこの状態でスタックを削除すると、上述の通りスナップショットが作成されます。
このスナップショットを利用してRDSを作成するテンプレートです。
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "ProjectName": { "Type": "String", "Default": "suzlab" }, "DbSubnetGroupName": { "Type": "String", "Default": "xxxxxxxx" }, "VpcSecurityGroup": { "Type": "AWS::EC2::SecurityGroup::Id", "Default": "sg-yyyyyyyy" } }, "Resources": { "DbInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "AllocatedStorage": "5", "DBInstanceClass": "db.t2.micro", "DBSnapshotIdentifier": "xxxxxxxx-snapshot-dbinstance", "DBSubnetGroupName": { "Ref": "DbSubnetGroupName" }, "DBInstanceIdentifier": { "Ref": "ProjectName" }, "VPCSecurityGroups": [ { "Ref": "VpcSecurityGroup"} ], "MasterUserPassword": { "Fn::Join" : [ "", [ { "Ref": "ProjectName" }, "!Z3" ] ] } }, "DeletionPolicy": "Snapshot" } } }0からRDS(MySQL)を作成する場合は、テンプレートに
"Engine": "MySQL", "MasterUsername": "root",を指定していましたが、スナップショットから作成する場合は、
これらのパラメータのかわりにスナップショットの指定をしています。"DBSnapshotIdentifier": "xxxxxxxx-snapshot-dbinstance",元記事はこちら