Amazon RDS 템플릿 코드 조각 - AWS CloudFormation

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를 통한 암호 관리를 참조하세요. 이 예제는 Engineoracle-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::DBSecurityGroupIngress를 참조하십시오.

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