AWS RDS · 7 min read · Feb 04, 2026
Usar Cloudformation para crear una instancia RDS MySql en AWS

El AWS Relational Database Service (RDS AWS) es un servicio web que facilita la configuración y operación de una base de datos relacional en la nube. Para entender más sobre RDS, busca el artículo “Cómo configurar una instancia RDS MySql (Base de Datos Relacional MySql) en AWS”.
AWS CloudFormation nos permite usar lenguajes de programación (yaml/json) o un archivo de texto simple para modelar y aprovisionar todos los recursos necesarios para nuestras aplicaciones. Esto nos da una única fuente de verdad para nuestros recursos de AWS.
En este artículo, veremos los pasos para crear una instancia RDS MySql usando Cloudformation Stack.
Pre-requisitos
- Cuenta de AWS (Crea una si no tienes una).
- Comprensión básica de Cloudformation Stack.
- Comprensión básica de la instancia RDS MySql (Base de Datos Relacional MySql) en AWS.
¿Qué haremos?
- Iniciar sesión en AWS.
- Crear una instancia RDS MySql usando Cloudformation Stack
Iniciar sesión en AWS
- Haz clic aquí para ir a la página de inicio de sesión de AWS.
Cuando hagamos clic en el enlace anterior, veremos una página web como la siguiente donde se nos requiere iniciar sesión usando nuestros datos de acceso.

Una vez que iniciemos sesión en AWS con éxito, veremos la consola principal con todos los servicios listados.

Crear una instancia RDS MySql usando Cloudformation.
Antes de crear una instancia usando Cloudformation Stack, copia el código del siguiente bloque o descarga la plantilla desde aquí y guárdala en tu máquina local.
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Esta pila crea una instancia RDS MySql 5.7
Parameters:
Owner:
Description: Ingresa el nombre del propietario de esta pila.
Type: String
Default: Nombre
VPC:
Description: Selecciona VPC de las VPC disponibles en tu cuenta.
Type: AWS::EC2::VPC::Id
PrivateSubnet1:
Description: Selecciona la Subred Privada 1.
Type: AWS::EC2::Subnet::Id
PrivateSubnet2:
Description: Selecciona la Subred Privada 2.
Type: AWS::EC2::Subnet::Id
PrivateSubnet3:
Description: Selecciona la Subred Privada 3.
Type: AWS::EC2::Subnet::Id
MasterUsername:
Description: Nombre de administración de la base de datos.
Type: String
Default: rdsroot
MasterUserPassword:
NoEcho: 'true'
Description: Contraseña de administración de la base de datos.
Type: String
MinLength: '8'
AllowedPattern: "[a-zA-Z0-9!?]*"
ConstraintDescription: Debe contener solo letras mayúsculas y minúsculas y números
BackupRetentionPeriod:
Description: Ingresa el período de retención de copias de seguridad en días.
Type: Number
Default: '5'
MultiAvailabilityZone:
Description: ¿Quieres habilitar múltiples zonas de disponibilidad?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
TcpPort:
Description: Ingresa el número de puerto TCP de escucha de RDS.
Type: Number
Default: '3306'
PreferredBackupWindow:
Description: Ingresa el tiempo de ventana de copia de seguridad preferido.
Type: String
Default: 15:00-17:00
PreferredMaintenanceWindow:
Description: Ingresa el tiempo de ventana de mantenimiento preferido.
Type: String
Default: Dom:18:00-Dom:22:00
AllocatedStorage:
Default: '15'
Description: Ingresa el tamaño de la base de datos (Gb)
Type: Number
MinValue: '5'
MaxValue: '6144'
ConstraintDescription: Debe estar entre 5-6144
SnapshotOnDelete:
Description: ¿Quieres crear una instantánea al eliminar la instancia?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
AutoMinorVersionUpgrade:
Description: ¿Quieres permitir la actualización automática de la versión menor?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
InstanceType:
Description: Selecciona el tipo de instancia.
Type: String
Default: db.t2.micro
ConstraintDescription: Debe ser un tipo de instancia EC2 válido.
Mappings:
Settings:
MySQL:
Engine: MySQL
Version: '5.7'
Conditions:
ConfigureSnapshotOnDelete:
Fn::Equals:
- Ref: SnapshotOnDelete
- 'true'
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: Propiedad
Parameters:
- Owner
- Label:
default: Configuración de Red
Parameters:
- VPC
- PrivateSubnet1
- PrivateSubnet2
- PrivateSubnet3
- Label:
default: Configuración de RDS
Parameters:
- InstanceType
- MasterUsername
- MasterUserPassword
- BackupRetentionPeriod
- PreferredBackupWindow
- PreferredMaintenanceWindow
- SnapshotOnDelete
- AllocatedStorage
- AutoMinorVersionUpgrade
- TcpPort
- MultiAvailabilityZone
ParameterLabels:
Owner:
default: Propietario del equipo o individuo
InstanceType:
default: Tipo de instancia
PrivateSubnet1:
default: Subred Privada 1
PrivateSubnet2:
default: Subred Privada 2
PrivateSubnet3:
default: Subred Privada 3
MasterUsername:
default: Nombre de usuario maestro
MasterUserPassword:
default: Contraseña de usuario maestro
BackupRetentionPeriod:
default: Período de retención de copias de seguridad
PreferredBackupWindow:
default: Ventana de copia de seguridad preferida
PreferredMaintenanceWindow:
default: Ventana de mantenimiento preferida
AllocatedStorage:
default: Almacenamiento asignado
AutoMinorVersionUpgrade:
default: Actualización automática de versión menor
TcpPort:
default: Puerto TCP
MultiAvailabilityZone:
default: ¿Múltiples zonas de disponibilidad?
SnapshotOnDelete:
default: ¿Instantánea al eliminar?
Resources:
RDSAccessSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Acceso a la instancia RDS
VpcId:
Ref: VPC
Tags:
- Key: Name
Value:
Fn::Join:
- ''
- - Ref: AWS::StackName
- "-rds"
- Key: Owner
Value:
Ref: Owner
AccessSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
DependsOn: RDSAccessSecurityGroup
Properties:
GroupId:
Ref: RDSAccessSecurityGroup
IpProtocol: tcp
FromPort:
Ref: TcpPort
ToPort:
Ref: TcpPort
SourceSecurityGroupId:
Ref: RDSAccessSecurityGroup
DbSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription:
Fn::Join:
- ''
- - 'Grupo de Subred RDS para '
- Ref: AWS::StackName
SubnetIds:
- Ref: PrivateSubnet1
- Ref: PrivateSubnet2
- Ref: PrivateSubnet3
Tags:
- Key: Name
Value:
Ref: AWS::StackName
- Key: Owner
Value:
Ref: Owner
DbInstance:
Type: AWS::RDS::DBInstance
DeletionPolicy: Snapshot
DependsOn:
- DbSubnetGroup
- RDSAccessSecurityGroup
Properties:
AllocatedStorage:
Ref: AllocatedStorage
AllowMajorVersionUpgrade: 'false'
AutoMinorVersionUpgrade:
Ref: AutoMinorVersionUpgrade
BackupRetentionPeriod:
Ref: BackupRetentionPeriod
DBInstanceClass:
Ref: InstanceType
DBInstanceIdentifier:
Ref: AWS::StackName
DBSubnetGroupName:
Ref: DbSubnetGroup
Engine:
Fn::FindInMap:
- Settings
- MySQL
- Engine
EngineVersion:
Fn::FindInMap:
- Settings
- MySQL
- Version
MasterUsername:
Ref: MasterUsername
MasterUserPassword:
Ref: MasterUserPassword
MultiAZ:
Ref: MultiAvailabilityZone
Port:
Ref: TcpPort
PreferredBackupWindow:
Ref: PreferredBackupWindow
PreferredMaintenanceWindow:
Ref: PreferredMaintenanceWindow
PubliclyAccessible: 'false'
StorageEncrypted: 'false'
StorageType: gp2
VPCSecurityGroups:
- Ref: RDSAccessSecurityGroup
Tags:
- Key: Name
Value:
Ref: AWS::StackName
- Key: Owner
Value:
Ref: Owner
Outputs:
Owner:
Description: Equipo o individuo que posee esta formación.
Value:
Ref: Owner
VPC:
Description: VPC utilizada
Value:
Ref: VPC
RDSHostname:
Description: Nombre de host RDS
Value:
Fn::GetAtt:
- DbInstance
- Endpoint.Address
RDSPort:
Description: Puerto RDS
Value:
Fn::GetAtt:
- DbInstance
- Endpoint.Port
DbSubnetGroup:
Description: Grupo de subred DB creado.
Value:
Ref: DbSubnetGroup
RDSAccessSecurityGroup:
Description: Grupo de seguridad de acceso RDS creado.
Value:
Ref: RDSAccessSecurityGroup
PrivateSubnet1:
Description: Despliegue de Subred Privada 1
Value:
Ref: PrivateSubnet1
PrivateSubnet2:
Description: Despliegue de Subred Privada 2
Value:
Ref: PrivateSubnet2
PrivateSubnet3:
Description: Despliegue de Subred Privada 3
Value:
Ref: PrivateSubnet3
BackupRetentionPeriod:
Description: Período de retención de copias de seguridad en días
Value:
Ref: BackupRetentionPeriod
MultiAvailabilityZone:
Description: ¿Habilitar múltiples zonas de disponibilidad?
Value:
Ref: MultiAvailabilityZone
SnapshotOnDelete:
Description: ¿Crear instantánea al eliminar?
Value:
Ref: SnapshotOnDelete
PreferredBackupWindow:
Description: Ventana de copia de seguridad preferida
Value:
Ref: PreferredBackupWindow
PreferredMaintenanceWindow:
Description: Ventana de mantenimiento preferida
Value:
Ref: PreferredMaintenanceWindow
AllocatedStorage:
Description: Almacenamiento asignado en GB
Value:
Ref: AllocatedStorageUna vez que tengas la plantilla en tu máquina local, ve a la consola de AWS y haz clic en “Servicios” en la barra de menú superior y busca “Cloudformation”.

Verás el panel principal de Cloudformation como sigue. Haz clic en el botón “Crear Pila” para crear una pila para crear una instancia RDS MySql.

Haz clic en el botón de opción “Subir un archivo de plantilla” y selecciona la plantilla que has guardado en tu máquina local y haz clic en el botón “Siguiente”.

Especifica un nombre de tu elección para la pila y completa los detalles requeridos y haz clic en “Siguiente” para continuar.


Puedes proporcionar etiquetas a la Pila de Cloudformation que se pueden aplicar a la instancia RDS MySql que se creará mediante la pila. Haz clic en “Siguiente” para continuar.

Desplázate hacia abajo y haz clic en “Crear pila” para crear la pila.

La creación tomará algún tiempo. Puedes ver la acción que se está llevando a cabo en los eventos.

Para ver el estado de la instancia RDS MySql que se está creando, haz clic en “Servicios” y busca “RDS”.

En el panel principal, haz clic en “Instancias DB”.

Aquí, puedes ver que el estado de la instancia es “Modificando”. Esto tomará algún tiempo para ser creado y estar listo para su uso.

En los eventos de la Pila de Cloudformation, puedes ver que después de un tiempo, una vez que la instancia RDS MySql se crea, el estado es “CREATE_COMPLETE”

En la consola de RDS, ahora puedes ver que el estado es “Disponible”.

Para ver más detalles sobre la instancia RDS MySql, haz clic en la instancia RDS MySql –> Conectividad y Seguridad.
Para conectarte a la instancia RDS MySql, puedes usar el Endpoint proporcionado por la instancia.

Una vez que la instancia ya no sea necesaria, elimina la Pila de Cloudformation desde el panel principal de Cloudformation para ahorrar en costos.
Conclusión
En este artículo, vimos los pasos para crear una instancia RDS MySql usando Cloudformation Stack.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.