Amazon RDS 템플릿 코드 조각
주제
Amazon RDS DB 인스턴스 리소스
이 예에서는 관리형 마스터 사용자 암호를 사용하는 Amazon RDS DB 인스턴스 리소스를 보여 줍니다. 자세한 내용은 Amazon RDS 사용 설명서의 AWS Secrets Manager를 통한 암호 관리 및 Aurora 사용 설명서의 AWS Secrets Manager를 통한 암호 관리를 참조하세요. 선택 사항인 EngineVersion
속성을 지정하지 않은 경우 기본 엔진 버전이 이 DB 인스턴스에 사용됩니다. 기본 엔진 버전과 기타 기본 설정에 대한 자세한 내용은 CreateDBInstance를 참조하십시오. DBSecurityGroups
속성은 MyDbSecurityByEC2SecurityGroup
과 MyDbSecurityByCIDRIPGroup이라는 AWS::RDS::DBSecurityGroup
리소스에 대한 네트워크 수신을 승인합니다. 세부 정보는 AWS::RDS::DBInstance을 참조하세요. 또한 DB 인스턴스 리소스에서는 DeletionPolicy
속성을 Snapshot
으로 설정합니다. Snapshot
DeletionPolicy
세트를 사용하여 AWS CloudFormation에서는 스택 삭제 중 이 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 인스턴스 리소스
이 예에서는 관리형 마스터 사용자 암호를 사용하는 Oracle Database DB 인스턴스 리소스를 생성합니다. 자세한 내용은 Amazon RDS 사용 설명서의 AWS Secrets Manager를 통한 암호 관리를 참조하세요. 이 예제는 Engine
을 oracle-ee
로 지정하고 라이선스 모델로 기존 보유 라이선스 사용을 사용합니다. Oracle Database DB 인스턴스 설정에 대한 자세한 내용은 CreateDBInstance를 참조하십시오. DBSecurityGroups 속성은 MyDbSecurityByEC2SecurityGroup 및 MyDbSecurityByCIDRIPGroup이라는 AWS::RDS::DBSecurityGroup
리소스에 네트워크 진입을 허가합니다. 세부 정보는 AWS::RDS::DBInstance을 참조하세요. 또한 DB 인스턴스 리소스에서는 DeletionPolicy
속성을 Snapshot
으로 설정합니다. Snapshot
DeletionPolicy
세트를 사용하여 AWS CloudFormation에서는 스택 삭제 중 이 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 리소스
이 예제는 ddd.ddd.ddd.ddd/dd
형식으로 지정된 CIDR 범위에 대한 수신 권한이 부여된 Amazon RDS DBSecurityGroup
리소스를 보여줍니다. 자세한 내용은 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