Amazon RDS テンプレートスニペット - AWS CloudFormation

Amazon RDS テンプレートスニペット

Amazon RDS DB Instance リソース

この例では、マネージドマスターユーザーパスワードを持つ Amazon RDS DB Instance のリソースを示しています。詳細については、Amazon RDS ユーザー ガイドの「AWS Secrets Manager を使用したパスワード管理」と Aurora ユーザー ガイドの「AWS Secrets Manager を使用したパスワード管理」を参照してください。この DB インスタンスにはオプションの EngineVersion プロパティが指定されていないため、デフォルトのエンジンバージョンが使用されます。デフォルトのエンジンバージョンおよびその他のデフォルト設定の詳細については、「CreateDBInstance」を参照してください。MyDbSecurityByEC2SecurityGroup および MyDbSecurityByCIDRIPGroup という名前の AWS::RDS::DBSecurityGroup リソースに対し、DBSecurityGroups プロパティでネットワーク進入許可を与えています。詳細については、「 AWS::RDS::DBInstance」を参照してください。また、この DB Instance リソースは、DeletionPolicy 属性が Snapshot に設定されています。DeletionPolicy が Snapshot に設定されている場合、AWS CloudFormation は、スタックを削除する過程で、この DB インスタンスのスナップショットをあらかじめ作成したうえで、DB インスタンスを削除します。

JSON

"MyDB" : { "Type" : "AWS::RDS::DBInstance", "Properties" : { "DBSecurityGroups" : [ {"Ref" : "MyDbSecurityByEC2SecurityGroup"}, {"Ref" : "MyDbSecurityByCIDRIPGroup"} ], "AllocatedStorage" : "5", "DBInstanceClass" : "db.t2.small", "Engine" : "MySQL", "MasterUsername" : "MyName", "ManageMasterUserPassword" : true, "MasterUserSecret" : { "KmsKeyId" : {"Ref" : "KMSKey"} } }, "DeletionPolicy" : "Snapshot" }

YAML

MyDB: Type: AWS::RDS::DBInstance Properties: DBSecurityGroups: - Ref: MyDbSecurityByEC2SecurityGroup - Ref: MyDbSecurityByCIDRIPGroup AllocatedStorage: '5' DBInstanceClass: db.t2.small Engine: MySQL MasterUsername: MyName ManageMasterUserPassword: true MasterUserSecret: KmsKeyId: !Ref KMSKey DeletionPolicy: Snapshot

Amazon RDS Oracle Database DB Instance リソース

この例では、マネージドマスターユーザーパスワードを使用して Oracle データベース (DB) インスタンスリソースを作成します。詳細については、Amazon RDS ユーザー ガイドの「AWS Secrets Manager を使用したパスワード管理」を参照してください。この例では、エンジンを bring-your-own-license のライセンス モデルを持つ oracle-ee として指定します。Oracle Database DB Instance の設定の詳細については、「CreateDBInstance」を参照してください。MyDbSecurityByEC2SecurityGroup および MyDbSecurityByCIDRIPGroup という名前の AWS::RDS::DBSecurityGroup リソースに対し、DBSecurityGroups プロパティでネットワーク進入許可を与えています。詳細については、「 AWS::RDS::DBInstance」を参照してください。また、この DB Instance リソースは、DeletionPolicy 属性が Snapshot に設定されています。DeletionPolicy が Snapshot に設定されている場合、AWS CloudFormation は、スタックを削除する過程で、この DB インスタンスのスナップショットをあらかじめ作成したうえで、DB インスタンスを削除します。

JSON

"MyDB" : { "Type" : "AWS::RDS::DBInstance", "Properties" : { "DBSecurityGroups" : [ {"Ref" : "MyDbSecurityByEC2SecurityGroup"}, {"Ref" : "MyDbSecurityByCIDRIPGroup"} ], "AllocatedStorage" : "5", "DBInstanceClass" : "db.t2.small", "Engine" : "oracle-ee", "LicenseModel" : "bring-your-own-license", "MasterUsername" : "master", "ManageMasterUserPassword" : true, "MasterUserSecret" : { "KmsKeyId" : {"Ref" : "KMSKey"} } }, "DeletionPolicy" : "Snapshot" }

YAML

MyDB: Type: AWS::RDS::DBInstance Properties: DBSecurityGroups: - Ref: MyDbSecurityByEC2SecurityGroup - Ref: MyDbSecurityByCIDRIPGroup AllocatedStorage: '5' DBInstanceClass: db.t2.small Engine: oracle-ee LicenseModel: bring-your-own-license MasterUsername: master ManageMasterUserPassword: true MasterUserSecret: KmsKeyId: !Ref KMSKey DeletionPolicy: Snapshot

CIDR 範囲の Amazon RDS DBSecurityGroup リソース

この例では、Amazon RDS DBSecurityGroup リソースに対し、ddd.ddd.ddd.ddd/dd 形式で指定された CIDR 範囲の進入許可を与えています。詳細については、「AWS::RDS::DBSecurityGroup」と「Ingress」を参照してください。

JSON

"MyDbSecurityByCIDRIPGroup" : { "Type" : "AWS::RDS::DBSecurityGroup", "Properties" : { "GroupDescription" : "Ingress for CIDRIP", "DBSecurityGroupIngress" : { "CIDRIP" : "192.168.0.0/32" } } }

YAML

MyDbSecurityByCIDRIPGroup: Type: AWS::RDS::DBSecurityGroup Properties: GroupDescription: Ingress for CIDRIP DBSecurityGroupIngress: CIDRIP: "192.168.0.0/32"

Amazon EC2 セキュリティグループを使用した Amazon RDS DBSecurityGroup

この例では、MyEc2SecurityGroup で参照された Amazon EC2 セキュリティグループの進入許可を AWS::RDS::DBSecurityGroup リソースに与えています。

そのためには、EC2 セキュリティグループを定義したうえで、Ref 組み込み関数を使用し、DBSecurityGroup 内から EC2 セキュリティグループを参照します。

JSON

"DBInstance" : { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName" : { "Ref" : "DBName" }, "Engine" : "MySQL", "MasterUsername" : { "Ref" : "DBUsername" }, "DBInstanceClass" : { "Ref" : "DBClass" }, "DBSecurityGroups" : [ { "Ref" : "DBSecurityGroup" } ], "AllocatedStorage" : { "Ref" : "DBAllocatedStorage" }, "MasterUserPassword": { "Ref" : "DBPassword" } } }, "DBSecurityGroup": { "Type": "AWS::RDS::DBSecurityGroup", "Properties": { "DBSecurityGroupIngress": { "EC2SecurityGroupName": { "Fn::GetAtt": ["WebServerSecurityGroup", "GroupName"] } }, "GroupDescription" : "Frontend Access" } }, "WebServerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable HTTP access via port 80 and SSH access", "SecurityGroupIngress" : [ {"IpProtocol" : "tcp", "FromPort" : 80, "ToPort" : 80, "CidrIp" : "0.0.0.0/0"}, {"IpProtocol" : "tcp", "FromPort" : 22, "ToPort" : 22, "CidrIp" : "0.0.0.0/0"} ] } }

YAML

この例は、以下の完全なサンプルから抽出したものです。Drupal_Single_Instance_With_RDS.template

DBInstance: Type: AWS::RDS::DBInstance Properties: DBName: Ref: DBName Engine: MySQL MasterUsername: Ref: DBUsername DBInstanceClass: Ref: DBClass DBSecurityGroups: - Ref: DBSecurityGroup AllocatedStorage: Ref: DBAllocatedStorage MasterUserPassword: Ref: DBPassword DBSecurityGroup: Type: AWS::RDS::DBSecurityGroup Properties: DBSecurityGroupIngress: EC2SecurityGroupName: Ref: WebServerSecurityGroup GroupDescription: Frontend Access WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable HTTP access via port 80 and SSH access SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0

複数の VPC セキュリティグループ

この例では、AWS::RDS::DBSecurityGroupIngress で複数の Amazon EC2 VPC セキュリティグループに対する進入認証を持つ AWS::RDS::DBSecurityGroup リソースを示しています。

JSON

{ "Resources" : { "DBinstance" : { "Type" : "AWS::RDS::DBInstance", "Properties" : { "AllocatedStorage" : "5", "DBInstanceClass" : "db.t2.small", "DBName" : {"Ref": "MyDBName" }, "DBSecurityGroups" : [ { "Ref" : "DbSecurityByEC2SecurityGroup" } ], "DBSubnetGroupName" : { "Ref" : "MyDBSubnetGroup" }, "Engine" : "MySQL", "MasterUserPassword": { "Ref" : "MyDBPassword" }, "MasterUsername" : { "Ref" : "MyDBUsername" } }, "DeletionPolicy" : "Snapshot" }, "DbSecurityByEC2SecurityGroup" : { "Type" : "AWS::RDS::DBSecurityGroup", "Properties" : { "GroupDescription" : "Ingress for Amazon EC2 security group", "EC2VpcId" : { "Ref" : "MyVPC" }, "DBSecurityGroupIngress" : [ { "EC2SecurityGroupId" : "sg-b0ff1111", "EC2SecurityGroupOwnerId" : "111122223333" }, { "EC2SecurityGroupId" : "sg-ffd722222", "EC2SecurityGroupOwnerId" : "111122223333" } ] } } } }

YAML

Resources: DBinstance: Type: AWS::RDS::DBInstance Properties: AllocatedStorage: '5' DBInstanceClass: db.t2.small DBName: Ref: MyDBName DBSecurityGroups: - Ref: DbSecurityByEC2SecurityGroup DBSubnetGroupName: Ref: MyDBSubnetGroup Engine: MySQL MasterUserPassword: Ref: MyDBPassword MasterUsername: Ref: MyDBUsername DeletionPolicy: Snapshot DbSecurityByEC2SecurityGroup: Type: AWS::RDS::DBSecurityGroup Properties: GroupDescription: Ingress for Amazon EC2 security group EC2VpcId: Ref: MyVPC DBSecurityGroupIngress: - EC2SecurityGroupId: sg-b0ff1111 EC2SecurityGroupOwnerId: '111122223333' - EC2SecurityGroupId: sg-ffd722222 EC2SecurityGroupOwnerId: '111122223333'

VPC セキュリティグループの Amazon RDS データベースインスタンス

この例は、Amazon EC2 VPC セキュリティグループに関連付けられた Amazon RDS データベースインスタンスを示しています。

JSON

{ "DBEC2SecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription": "Open database for access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : 3306, "ToPort" : 3306, "SourceSecurityGroupName" : { "Ref" : "WebServerSecurityGroup" } }] } }, "DBInstance" : { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName" : { "Ref" : "DBName" }, "Engine" : "MySQL", "MultiAZ" : { "Ref": "MultiAZDatabase" }, "MasterUsername" : { "Ref" : "DBUser" }, "DBInstanceClass" : { "Ref" : "DBClass" }, "AllocatedStorage" : { "Ref" : "DBAllocatedStorage" }, "MasterUserPassword": { "Ref" : "DBPassword" }, "VPCSecurityGroups" : [ { "Fn::GetAtt": [ "DBEC2SecurityGroup", "GroupId" ] } ] } } }

YAML

DBEC2SecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Open database for access SecurityGroupIngress: - IpProtocol: tcp FromPort: 3306 ToPort: 3306 SourceSecurityGroupName: Ref: WebServerSecurityGroup DBInstance: Type: AWS::RDS::DBInstance Properties: DBName: Ref: DBName Engine: MySQL MultiAZ: Ref: MultiAZDatabase MasterUsername: Ref: DBUser DBInstanceClass: Ref: DBClass AllocatedStorage: Ref: DBAllocatedStorage MasterUserPassword: Ref: DBPassword VPCSecurityGroups: - !GetAtt DBEC2SecurityGroup.GroupId