Fragmentos de las plantillas de Amazon RDS - AWS CloudFormation

Fragmentos de las plantillas de Amazon RDS

Recurso de instancia de la base de datos de Amazon RDS

En este ejemplo se muestra un recurso de instancia de base de datos de Amazon RDS con contraseña de usuario maestro administrada. Para obtener más información, consulte Administración de contraseñas con AWS Secrets Manager en la Guía del usuario de Amazon RDS y Administración de contraseñas con AWS Secrets Manager en la Guía del usuario de Aurora. Dado que no se especifica la propiedad EngineVersion opcional, se usa la versión del motor predeterminado para esta instancia de base de datos. Para más detalles acerca de la versión del motor predeterminado y otros ajustes predeterminados, consulte CreateDBInstance. La propiedad DBSecurityGroups autoriza la entrada de la red a los recursos AWS::RDS::DBSecurityGroup denominados MyDbSecurityByEC2SecurityGroup y myDBSecurityByCIDripGroup. Para obtener más información, consulte AWS::RDS::DBInstance. El recurso de la instancia de base de datos también tiene un atributo DeletionPolicy y establecido como Snapshot. Con Snapshot establecido en DeletionPolicy, AWS CloudFormation toma una instantánea de esta instancia de base de datos antes de eliminarla durante la eliminación de la pila.

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

Recurso de instancia de base de datos de Oracle de Amazon RDS

En este ejemplo se crea un recurso de instancia de base de datos de Oracle Database con contraseña de usuario maestro administrada. Para obtener más información, consulte Administración de contraseñas con AWS Secrets Manager en la Guía del usuario de Amazon RDS. En el ejemplo se especifica el Engine como oracle-ee con un modelo de licencia de tipo traiga su propia licencia. Para más detalles acerca de las instancias de base de datos de Oracle Database, consulte CreateDBInstance. La propiedad DBSecurityGroups autoriza el acceso a la red de los recursos de AWS::RDS::DBSecurityGroup denominados MyDbSecurityByEC2SecurityGroup y MyDbSecurityByCIDRIPGroup. Para obtener más información, consulte AWS::RDS::DBInstance. El recurso de la instancia de base de datos también tiene un atributo DeletionPolicy y establecido como Snapshot. Con Snapshot establecido en DeletionPolicy, AWS CloudFormation toma una instantánea de esta instancia de base de datos antes de eliminarla durante la eliminación de la pila.

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

Recurso de DBSecurityGroup de Amazon RDS para rango de CIDR

En este ejemplo se muestra un recurso DBSecurityGroup de Amazon RDS con autorización de entrada para el rango de CIDR especificado en el formato ddd.ddd.ddd.ddd/dd. Para obtener más información, consulte AWS::RDS::DBSecurityGroup e 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"

DBSecurityGroup de Amazon RDS con un grupo de seguridad de Amazon EC2

En este ejemplo se muestra un recurso AWS::RDS::DBSecurityGroup con autorización de entrada de un grupo de seguridad de Amazon EC2 al que hace referencia MyEc2SecurityGroup.

Para ello, debe definir un grupo de seguridad de EC2 y, a continuación, usar la función Ref intrínseca para consultar el grupo de seguridad de EC2 en su DBSecurityGroup.

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

Este ejemplo está sacado del siguiente ejemplo completo: 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

Múltiples grupos de seguridad de VPC

En este ejemplo se muestra un recurso AWS::RDS::DBSecurityGroup con autorización de entrada de múltiples grupos de seguridad VPC de Amazon EC2 en AWS::RDS::DBSecurityGroupIngress.

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'

Instancia de base de datos de Amazon RDS en un grupo de seguridad de VPC

En este ejemplo se muestra una instancia de base de datos de Amazon RDS asociada a un grupo de seguridad de VPC de Amazon EC2.

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