AWS RDS · 6 min read · Feb 04, 2026
Use Cloudformation para criar uma Instância RDS MySql na AWS

O AWS Relational Database Service (RDS AWS) é um serviço web que facilita a configuração e operação de um banco de dados relacional na nuvem. Para entender mais sobre o RDS, procure pelo artigo “Como configurar uma instância RDS MySql (Banco de Dados Relacional MySql) na AWS”.
O AWS CloudFormation nos permite usar linguagens de programação (yaml/json) ou um arquivo de texto simples para modelar e provisionar todos os recursos necessários para nossas aplicações. Isso nos dá uma única fonte de verdade para nossos recursos AWS.
Neste artigo, veremos os passos para criar uma Instância RDS MySql usando o Cloudformation Stack.
Pré-requisitos
- Conta AWS (Crie se você não tiver uma).
- Compreensão básica do Cloudformation Stack.
- Compreensão básica da instância RDS MySql (Banco de Dados Relacional MySql) na AWS.
O que faremos?
- Login na AWS.
- Criar uma Instância RDS MySql usando o Cloudformation Stack
Login na AWS
- Clique aqui para ir para a Página de Login da AWS.
Quando clicarmos no link acima, veremos uma página da web como a seguinte, onde somos solicitados a fazer login usando nossos dados de login.

Uma vez que fizermos login na AWS com sucesso, veremos o console principal com todos os serviços listados.

Criar uma Instância RDS MySql usando o Cloudformation.
Antes de criarmos uma instância usando o Cloudformation Stack, copie o código do bloco a seguir ou baixe o template daqui e salve-o em sua máquina local.
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Este stack cria uma Instância RDS MySql 5.7
Parameters:
Owner:
Description: Insira o Nome do proprietário deste Stack.
Type: String
Default: Nome
VPC:
Description: Selecione VPC entre as VPCs disponíveis em sua conta.
Type: AWS::EC2::VPC::Id
PrivateSubnet1:
Description: Selecione a Sub-rede Privada 1.
Type: AWS::EC2::Subnet::Id
PrivateSubnet2:
Description: Selecione a Sub-rede Privada 2.
Type: AWS::EC2::Subnet::Id
PrivateSubnet3:
Description: Selecione a Sub-rede Privada 3.
Type: AWS::EC2::Subnet::Id
MasterUsername:
Description: Nome de administração do banco de dados.
Type: String
Default: rdsroot
MasterUserPassword:
NoEcho: 'true'
Description: Senha de administração do banco de dados.
Type: String
MinLength: '8'
AllowedPattern: "[a-zA-Z0-9!?]*"
ConstraintDescription: Deve conter apenas letras maiúsculas e minúsculas e números
BackupRetentionPeriod:
Description: Insira o Período de Retenção de Backup em Dias.
Type: Number
Default: '5'
MultiAvailabilityZone:
Description: Você deseja habilitar Múltiplas Zonas de Disponibilidade?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
TcpPort:
Description: Insira o número da porta TCP de escuta do RDS.
Type: Number
Default: '3306'
PreferredBackupWindow:
Description: Insira o Horário da Janela de Backup Preferida.
Type: String
Default: 15:00-17:00
PreferredMaintenanceWindow:
Description: Insira o Horário da Janela de Manutenção Preferida.
Type: String
Default: Sun:18:00-Sun:22:00
AllocatedStorage:
Default: '15'
Description: Insira o tamanho do banco de dados (Gb)
Type: Number
MinValue: '5'
MaxValue: '6144'
ConstraintDescription: Deve estar entre 5-6144
SnapshotOnDelete:
Description: Você deseja criar um Snapshot na exclusão da instância?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
AutoMinorVersionUpgrade:
Description: Você deseja permitir a atualização automática de versão menor?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
InstanceType:
Description: Selecione o Tipo de Instância.
Type: String
Default: db.t2.micro
ConstraintDescription: Deve ser um tipo de instância 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: Propriedade
Parameters:
- Owner
- Label:
default: Configuração de Rede
Parameters:
- VPC
- PrivateSubnet1
- PrivateSubnet2
- PrivateSubnet3
- Label:
default: Configuração do RDS
Parameters:
- InstanceType
- MasterUsername
- MasterUserPassword
- BackupRetentionPeriod
- PreferredBackupWindow
- PreferredMaintenanceWindow
- SnapshotOnDelete
- AllocatedStorage
- AutoMinorVersionUpgrade
- TcpPort
- MultiAvailabilityZone
ParameterLabels:
Owner:
default: Proprietário da Equipe ou Individual
InstanceType:
default: Tipo de Instância
PrivateSubnet1:
default: Sub-rede Privada 1
PrivateSubnet2:
default: Sub-rede Privada 2
PrivateSubnet3:
default: Sub-rede Privada 3
MasterUsername:
default: Nome de Usuário Mestre
MasterUserPassword:
default: Senha do Usuário Mestre
BackupRetentionPeriod:
default: Período de Retenção de Backup
PreferredBackupWindow:
default: Janela de Backup Preferida
PreferredMaintenanceWindow:
default: Janela de Manutenção Preferida
AllocatedStorage:
default: Armazenamento Alocado
AutoMinorVersionUpgrade:
default: Atualização Automática de Versão Menor
TcpPort:
default: Porta TCP
MultiAvailabilityZone:
default: Múltiplas Zonas de Disponibilidade?
SnapshotOnDelete:
default: Snapshot na Exclusão?
Resources:
RDSAccessSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Acesso da Instância ao 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 Sub-rede 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: Equipe ou Indivíduo que Possui esta Formação.
Value:
Ref: Owner
VPC:
Description: VPC Usada
Value:
Ref: VPC
RDSHostname:
Description: Nome do Host RDS
Value:
Fn::GetAtt:
- DbInstance
- Endpoint.Address
RDSPort:
Description: Porta RDS
Value:
Fn::GetAtt:
- DbInstance
- Endpoint.Port
DbSubnetGroup:
Description: Grupo de Sub-rede DB Criado.
Value:
Ref: DbSubnetGroup
RDSAccessSecurityGroup:
Description: Grupo de Segurança de Acesso RDS Criado.
Value:
Ref: RDSAccessSecurityGroup
PrivateSubnet1:
Description: Implantação da Sub-rede Privada 1
Value:
Ref: PrivateSubnet1
PrivateSubnet2:
Description: Implantação da Sub-rede Privada 2
Value:
Ref: PrivateSubnet2
PrivateSubnet3:
Description: Implantação da Sub-rede Privada 3
Value:
Ref: PrivateSubnet3
BackupRetentionPeriod:
Description: Período de Retenção de Backup em Dias
Value:
Ref: BackupRetentionPeriod
MultiAvailabilityZone:
Description: Habilitar Múltiplas Zonas de Disponibilidade?
Value:
Ref: MultiAvailabilityZone
SnapshotOnDelete:
Description: Criar Snapshot na Exclusão?
Value:
Ref: SnapshotOnDelete
PreferredBackupWindow:
Description: Janela de Backup Preferida
Value:
Ref: PreferredBackupWindow
PreferredMaintenanceWindow:
Description: Janela de Manutenção Preferida
Value:
Ref: PreferredMaintenanceWindow
AllocatedStorage:
Description: Armazenamento Alocado em GB
Value:
Ref: AllocatedStorage
Uma vez que você tenha o template em sua máquina local, vá para o console da AWS e clique em “Serviços” na barra de menu superior e procure por “Cloudformation”.

Você verá o painel principal do cloudformation como a seguir. Clique no botão “Criar Stack” para criar um stack para criar uma Instância RDS MySql.

Clique no botão de opção “Carregar um arquivo de template” e selecione o template que você salvou em sua máquina local e clique no botão “Próximo”.

Especifique um nome de sua escolha para o stack e preencha os detalhes necessários e clique em “Próximo” para prosseguir.


Você pode fornecer as tags para o Cloudformation Stack que podem ser aplicadas à Instância RDS MySql que será criada pelo stack. Clique em “Próximo” para prosseguir.

Role para baixo e clique em “Criar stack” para criar o stack.

A criação levará algum tempo. Você pode ver a ação sendo realizada sob eventos.

Para ver o status da instância RDS MySql sendo criada, clique em “Serviços” e procure por “RDS”.

No painel principal, clique em “Instâncias DB”.

Aqui, você pode ver que o status da instância é “Modificando”. Isso levará algum tempo para ser criado e estar pronto para uso.

Nos eventos do Cloudformation Stack, você pode ver que após algum tempo, uma vez que a Instância RDS MySql é criada, o status é “CREATE_COMPLETE”

No Console RDS, agora você pode ver que o status é “Disponível”.

Para ver mais detalhes sobre a Instância RDS MySql, clique na Instância RDS MySql –> Conectividade & Segurança.
Para conectar-se à Instância RDS MySql, você pode usar o Endpoint fornecido pela instância.

Uma vez que a instância não seja mais necessária, exclua o Cloudformation Stack do Painel Principal do Cloudformation para economizar custos.
Conclusão
Neste artigo, vimos os passos para criar uma instância RDS MySql usando o Cloudformation Stack.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.