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

  1. Conta AWS (Crie se você não tiver uma).
  2. Compreensão básica do Cloudformation Stack.
  3. Compreensão básica da instância RDS MySql (Banco de Dados Relacional MySql) na AWS.

O que faremos?

  1. Login na AWS.
  2. Criar uma Instância RDS MySql usando o Cloudformation Stack

Login na AWS

  1. 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.

Logar na AWS

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

Console de Gerenciamento da AWS

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”.

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.

Stacks

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”.

Criar Cloudformation Stack

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

Especificar Detalhes do Stack

Senha do usuário mestre

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.

Tags

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

Criar Stack

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

RDS MySQL

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

RDS

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

Criar banco de dados

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

Lista de Banco de Dados RDS

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”

Log de ação RDS

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

Banco de Dados MySQL na AWS

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.

Detalhes do banco de dados

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.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.