{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "this is my sample template.", "Resources" : { "SampleSG" : { "Type" : "AWS::EC2::SecurityGroup", "DeletionPolicy" : "Delete", "Properties" : { "GroupDescription" : "this is a sample.", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "XXX.XXX.XXX.XXX" }, { "IpProtocol" : "tcp", "FromPort" : "5432", "ToPort" : "5432", "CidrIp" : "XXX.XXX.XXX.XXX" } ] } }, "SampleInstance" : { "Type" : "AWS::EC2::Instance", "DeletionPolicy" : "Delete", "Properties" : { "Tags" : [ { "Key" : "Name", "Value" : "SampleInstance" } ], "ImageId" : "ami-00000000", "InstanceType" : "t2.micro", "AvailabilityZone" : "ap-notrheast-1", "SecurityGroups" : [ { "Ref" : "SampleSG" } ], "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "#!/bin/bash -v\n", "yum update -y aws-cfn-bootstrap\n", "# wait for the EBS volume to show up\n", "while [ ! -e /dev/sdh ]; do echo Waiting for EBS volume to attach; sleep 5; done\n", "while [ ! -e /dev/sdi ]; do echo Waiting for EBS volume to attach; sleep 5; done\n", "while [ ! -e /dev/sdj ]; do echo Waiting for EBS volume to attach; sleep 5; done\n", "# mount EBS volume\n", "mount /dev/sdh /var/lib/pgsql9/data1\n", "mount /dev/sdi /var/lib/pgsql9/data2\n", "mount /dev/sdj /var/lib/pgsql9/data3\n", "# start postgresql server\n", "service postgresql start\n" ]]}} } }, "File" : { "Type" : "AWS::EC2::Volume", "DeletionPolicy" : "Delete", "Properties" : { "AvailabilityZone" : "ap-notrheast-1", "Encrypted" : "false", "VolumeType" : "standard", "Size" : "10" } }, "MountPointFile" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : { "InstanceId" : { "Ref" : "SampleInstance" }, "VolumeId" : { "Ref" : "File" }, "Device" : "/dev/sdf" } }, "DatabaseVolumeDB01" : { "Type" : "AWS::EC2::Volume", "DeletionPolicy" : "Delete", "Properties" : { "AvailabilityZone" : "ap-notrheast-1", "SnapshotId" : "snap-00000001", "Encrypted" : "false", "VolumeType" : "standard", "Size" : "10" } }, "MountPointDB01" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : { "InstanceId" : { "Ref" : "SampleInstance" }, "VolumeId" : { "Ref" : "DatabaseVolumeDB01" }, "Device" : "/dev/sdh" } }, "DatabaseVolumeDB02" : { "Type" : "AWS::EC2::Volume", "DeletionPolicy" : "Delete", "Properties" : { "AvailabilityZone" : "ap-notrheast-1", "SnapshotId" : "snap-00000002", "Encrypted" : "false", "VolumeType" : "standard", "Size" : "10" } }, "MountPointDB02" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : { "InstanceId" : { "Ref" : "SampleInstance" }, "VolumeId" : { "Ref" : "DatabaseVolumeDB02" }, "Device" : "/dev/sdi" } }, "DatabaseVolumeDB03" : { "Type" : "AWS::EC2::Volume", "DeletionPolicy" : "Delete", "Properties" : { "AvailabilityZone" : "ap-notrheast-1", "SnapshotId" : "snap-00000003", "Encrypted" : "false", "VolumeType" : "standard", "Size" : "10" } }, "MountPointDB03" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : { "InstanceId" : { "Ref" : "SampleInstance" }, "VolumeId" : { "Ref" : "DatabaseVolumeDB03" }, "Device" : "/dev/sdj" } } } }