LAB 12 - Deploy na AWS com Elastic Beanstalk e RDS
🎯 Objetivo
Neste laboratório vamos fazer o deploy da aplicação carstore-spring-boot na AWS usando o Elastic Beanstalk. O Elastic Beanstalk é um serviço gerenciado que facilita o deploy de aplicações web, automaticamente provisionando recursos como load balancers, Auto Scaling groups e bancos de dados.
O deploy será realizado através do console web da AWS, e configuraremos a aplicação para:
- Usar H2DB em ambiente de desenvolvimento local;
- Usar RDS (Amazon Relational Database Service) automaticamente provisionado pelo Elastic Beanstalk em produção.
Ao final você deverá saber:
- Criar uma aplicação no Elastic Beanstalk via console web;
- Configurar o ambiente para incluir um banco de dados RDS;
- Ajustar o
application.propertiespara suportar múltiplos ambientes (local e AWS); - Fazer o upload do JAR da aplicação e monitorar o deploy;
- Acessar a aplicação rodando na AWS.
Pré-requisitos
- Ter acesso a AWS Academy ou ter uma conta da AWS ativa;
- Ter completado os laboratórios anteriores (especialmente LAB 7 - integração com banco);
- Projeto carstore-spring-boot compilando localmente;
- Ter o JAR da aplicação pronto (
mvn clean package); - Conhecimento básico sobre serviços da AWS.
Checklist Pré-Deploy
Antes de começar, verifique se você possui:
- JAR da aplicação foi gerado com sucesso:
target/carstore-spring-boot-*.jarexiste? - Arquivo
application-aws.propertiesfoi criado emsrc/main/resources/? - Caso você não tenha essas dependências no seu pom.xml, basta adicionar conforme exemplo:
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
Arquitetura do Ambiente Elastic Beanstalk
A seguir, apresentamos a estrutura que será criada na AWS quando configurarmos o ambiente do Elastic Beanstalk com RDS:
graph TB
subgraph "Internet"
User[Usuário/Navegador]
end
subgraph "AWS Elastic Beanstalk"
LB[Load Balancer<br/>Auto Scaling Group]
subgraph "EC2 Instances"
EC1[EC2 Instance 1<br/>Spring Boot App]
EC2[EC2 Instance 2<br/>Spring Boot App]
EC3[EC2 Instance N<br/>Spring Boot App]
end
LB --> EC1
LB --> EC2
LB --> EC3
end
subgraph "AWS RDS"
RDS[(Amazon RDS<br/>MySQL Database)]
end
subgraph "Security Groups"
SG_EB[Security Group EB<br/>Porta 80/443]
SG_RDS[Security Group RDS<br/>Porta 3306]
end
User --> LB
EC1 --> RDS
EC2 --> RDS
EC3 --> RDS
SG_EB -.-> LB
SG_RDS -.-> RDS
SG_EB -.-> EC1
SG_EB -.-> EC2
SG_EB -.-> EC3
style User fill:#e1f5ff
style LB fill:#fff4e1
style EC1 fill:#e8f5e9
style EC2 fill:#e8f5e9
style EC3 fill:#e8f5e9
style RDS fill:#fce4ec
style SG_EB fill:#f3e5f5
style SG_RDS fill:#f3e5f5
Componentes provisionados automaticamente:
- Load Balancer: Distribui o tráfego entre as instâncias EC2
- Auto Scaling Group: Gerencia automaticamente o número de instâncias EC2
- EC2 Instances: Servidores onde a aplicação Spring Boot roda
- RDS Instance: Banco de dados MySQL gerenciado
- Security Groups: Regras de firewall para controlar o acesso
- VPC: Rede virtual isolada na AWS
Contrato (curto)
- Entrada: JAR da aplicação Spring Boot configurado para ambientes múltiplos;
- Saída: Aplicação rodando na AWS com banco de dados RDS provisionado automaticamente;
- Erros: falhas no deploy são visíveis no console do Elastic Beanstalk (logs, eventos);
- Critério de sucesso: aplicação acessível via URL do Elastic Beanstalk, persistindo dados no RDS.
Panorama das alterações (arquivos-chave)
src/main/resources/application.properties- configuração para múltiplos ambientes;src/main/resources/application-aws.properties- configuração específica para AWS;target/carstore-spring-boot-*.jar- artefato gerado pelo Maven para deploy.
Tarefa 1: Preparando o projeto para múltiplos ambientes
Parte 1: Configuração local (H2DB)
Vamos manter a configuração atual para desenvolvimento local. Abra o arquivo src/main/resources/application.properties e mantenha as configurações do H2:
# Configuração local - H2DB
spring.datasource.url=jdbc:h2:~/test;AUTO_SERVER=TRUE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
Parte 2: Configuração AWS (RDS)
Crie um novo arquivo chamado application-aws.properties no diretório src/main/resources/. Este arquivo será usado automaticamente quando a aplicação rodar no Elastic Beanstalk:
# Configuração AWS - RDS (MySQL)
# Estas variáveis de ambiente devem ser configuradas no Elastic Beanstalk
spring.datasource.url=jdbc:mysql://${RDS_HOSTNAME}:3306/${RDS_DB_NAME}?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=${RDS_USERNAME}
spring.datasource.password=${RDS_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA configuração para produção
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
# Desabilitar H2 console em produção
spring.h2.console.enabled=false
Nota: As variáveis de ambiente
RDS_HOSTNAME,RDS_USERNAME,RDS_PASSWORDeRDS_DB_NAMEdevem ser configuradas no Elastic Beanstalk. Embora a documentação da AWS diga que elas são criadas automaticamente, na prática (especialmente em contas AWS Academy Sandbox) isso pode não funcionar. Verifique e configure manualmente se necessário (veja Tarefa 10).IMPORTANTE - MySQL 8.0+: O parâmetro
allowPublicKeyRetrieval=trueé OBRIGATÓRIO para MySQL 8.0+ (incluindo a versão 8.4.8 usada neste laboratório). O MySQL 8.0+ usa o método de autenticaçãocaching_sha2_passwordque requer este parâmetro para funcionar corretamente com o driver JDBC. Sem ele, você receberá o erro: “Public Key Retrieval is not allowed”.Variáveis necessárias (para este laboratório):
RDS_HOSTNAME: Endpoint do banco de dados RDS (ex:awseb-e-xxxxx-stack-awsebrdsdatabase-xxxxx.xxxx.us-east-1.rds.amazonaws.com) - Cada aluno terá um endpoint diferenteRDS_DB_NAME:ebdb(nome padrão do banco criado pelo Elastic Beanstalk)RDS_USERNAME:carstore(usuário mestre configurado na criação)RDS_PASSWORD:carstore123*(senha configurada na criação)Importante: Usamos porta fixa
3306em vez de${RDS_PORT}pois o Elastic Beanstalk pode não injetar esta variável consistentemente. MySQL sempre usa porta 3306.
Parte 3: Adicionar dependência do MySQL
Como o RDS padrão do Elastic Beanstalk usa MySQL, precisamos adicionar confirmar se temos a dependência do driver MySQL no pom.xml:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
Caso ainda não tenha adicionado, adicione esta dependência dentro da seção
<dependencies>do seupom.xml.
Adicionalmente, se o seu projeto ainda não tiver o Spring Boot Actuator, adicione também esta dependência (necessária para os endpoints de health check configurados acima):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
O Spring Boot Actuator fornece endpoints de monitoramento e gerenciamento, incluindo o endpoint
/actuator/healthusado pelo Elastic Beanstalk para verificar se a aplicação está saudável.
Parte 4: Configurações específicas para Elastic Beanstalk
Para garantir que a aplicação funcione corretamente no Elastic Beanstalk, adicione as seguintes configurações no arquivo application-aws.properties:
# Configuração de porta (Elastic Beanstalk usa porta 8080 por padrão)
server.port=${PORT:8080}
# Configuração de contexto (opcional - use root context)
server.servlet.context-path=/
# Configuração de encoding e timezone
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
spring.jackson.time-zone=UTC
# Configuração de health check (importante para Elastic Beanstalk)
management.endpoints.web.exposure.include=health,info,metrics
management.endpoint.health.show-details=when-authorized
# Configuração de logging para produção
logging.level.root=INFO
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=INFO
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
# Configuração de compressão (opcional - melhora performance)
server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain
Importante sobre Health Check: O Elastic Beanstalk verifica se a aplicação está saudável fazendo requisições ao endpoint
/. Se sua aplicação Spring Boot Security proteger a rota/, você pode precisar configurar o health check ou ajustar as regras de segurança.
Nota sobre porta: O Elastic Beanstalk usa nginx como proxy reverso na porta 80 (HTTP) e 443 (HTTPS), e encaminha as requisições para a aplicação na porta 8080. A variável de ambiente
PORTserá configurada automaticamente. Esta configuração é padrão e geralmente não precisa ser alterada.
Parte 5: Configurar o profile ativo (CRÍTICO)
A variável de ambiente SPRING_PROFILES_ACTIVE=aws é OBRIGATÓRIA para ativar o arquivo application-aws.properties.
Se esta variável não for configurada:
- A aplicação usará as configurações de H2 do
application.properties - A aplicação tentará conectar a um banco H2 local que não existe no servidor
- Resultado: erro de conexão e aplicação fora do ar
O Elastic Beanstalk não ativa automaticamente o profile correto. Você DEVE adicionar essa variável manualmente nas Environment Properties (veja Tarefa 6, seção “Environment Properties”).
Tarefa 2: Gerando o JAR para deploy
Parte 1: Build do projeto
Execute o comando Maven para gerar o JAR da aplicação:
mvn clean package -DskipTests
Este comando irá:
- Limpar builds anteriores (
clean); - Compilar o projeto e gerar o JAR (
package); - Pular testes (
-DskipTests) para agilizar o processo.
Parte 2: Localizar o JAR
Após o build, o JAR estará disponível em:
target/carstore-spring-boot-<version>.jar
Anote o caminho completo deste arquivo, pois será necessário na etapa de upload.
Tarefa 3: Criando o ambiente no Elastic Beanstalk (Wizard Web)
O processo de criação do ambiente no Elastic Beanstalk agora segue um wizard de 5 passos. Vamos configurar cada passo conforme nossa necessidade.
Parte 1: Acessar o console da AWS
- Faça login no Console da AWS;
- Na barra de busca, digite “Elastic Beanstalk” e selecione o serviço;
- Clique em “Create environment” (o wizard será iniciado diretamente).
Tarefa 4: Configurando o Step 1 - Configure environment Info
No primeiro passo do wizard, configuramos as informações básicas do ambiente.
Environment tier Info
Selecione o tipo de ambiente:
- Environment tier: Selecione Web server environment (para rodar nossa aplicação web que serve requisições HTTP)
- Deixe Worker environment desmarcado (usado para processamento em background)
Application information Info
Preencha as informações da aplicação:
- Application name:
carstore-spring-boot(máximo 100 caracteres) - Application tags: (opcional) deixe vazio por enquanto
Environment information Info
Configure as informações do ambiente:
- Environment name:
CarStore-prod(4 a 40 caracteres, apenas letras, números e hífens) - Domain: Deixe o padrão (ex:
.us-east-1.elasticbeanstalk.com) - Clique em “Check availability” para verificar disponibilidade
- Environment description:
Ambiente de produção da aplicação CarStore com RDS
Platform Info
Configure a plataforma da aplicação:
- Platform: Selecione Java
- Platform branch: Escolha Java running on 64bit Amazon Linux 2023 (ou a versão mais recente disponível)
- Platform version: Deixe a versão mais recente selecionada
Application code Info
Configure o código da aplicação:
- Selecione Upload your code
- Clique em “Choose file” e selecione o JAR gerado na Tarefa 2 (
target/carstore-spring-boot-*.jar) - Em “Version label”, dê um nome para esta versão (ex:
v1.0.0)
Presets Info
Escolha a configuração preset:
- Configuration presets: Selecione Single instance (free tier eligible) para este laboratório
- Esta opção é ideal para desenvolvimento e teste
- Para produção, você pode escolher High availability posteriormente
Nota: O preset “Custom configuration” remove os valores recomendados e usa os padrões do serviço. Para este laboratório, usaremos o preset de instância única.
Após preencher todas as configurações do Step 1, clique em Next para avançar para o Step 2.
Tarefa 5: Configurando o Step 2 - Configure service access
Neste passo configuramos as permissões IAM necessárias para o Elastic Beanstalk gerenciar os recursos.
⚠️ Importante para contas AWS Academy Sandbox: Em ambientes de laboratório da AWS Academy, os roles IAM são predefinidos e você não tem permissão para criar novos roles. Use os roles especificados abaixo.
Service access Info
Configure os papéis IAM que permitem ao Elastic Beanstalk criar e gerenciar seu ambiente.
Service role
O Elastic Beanstalk precisa de um role de serviço para assumir e gerenciar recursos:
- Service role: Selecione LabRole
- Este role é predefinido em contas AWS Academy Sandbox
- Ele já possui as permissões IAM gerenciadas necessárias
- Não tente criar um novo role, pois você não terá permissão
- O sistema mostrará “Service roles refreshed” quando atualizar
Nota: O
LabRolepermite que o Elastic Beanstalk crie e gerencie instâncias EC2, Load Balancers, RDS e outros recursos em ambientes de laboratório.
EC2 instance profile
As instâncias EC2 precisam de um perfil de instância para realizar operações necessárias:
- EC2 instance profile: Selecione LabInstanceProfile
- Este perfil é predefinido em contas AWS Academy Sandbox
- Ele já permite que suas instâncias EC2 realizem operações necessárias
- Não tente criar um novo perfil, pois você não terá permissão
- O sistema mostrará “EC2 instance profile refreshed” quando atualizar
Nota: O
LabInstanceProfilepermite que as instâncias EC2 acessem logs, enviem métricas para CloudWatch, e outras operações essenciais.
EC2 key pair (opcional)
Para acesso SSH às instâncias EC2:
- EC2 key pair: Deixe em branco
- Em contas AWS Academy Sandbox, geralmente não há key pairs configurados
- Não teremos acesso SSH neste laboratório
- Para produção em sua própria conta, é recomendado configurar para troubleshooting
Nota: O key pair permite acesso seguro via SSH às instâncias EC2 para debug e manutenção. Em ambientes de laboratório, geralmente não é necessário.
Após configurar as permissões, clique em Next para avançar para o Step 3.
Tarefa 6: Configurando o Step 3 - Set up networking, database, and tags
Este é o passo mais importante onde configuramos a rede e, principalmente, o banco de dados RDS.
Instance settings
Configure as configurações de rede das instâncias.
VPC
- VPC: Deixe selecionado o valor padrão (
-) que representa o VPC padrão da sua região- O Elastic Beanstalk usará o VPC padrão da sua conta na região selecionada
- Se preferir, você pode clicar em Create VPC para criar um VPC personalizado
Nota: O VPC (Virtual Private Cloud) é uma rede virtual isolada onde seus recursos AWS serão executados. Para este laboratório, usaremos o VPC padrão.
Public IP address
- Public IP address: Deixe Enable marcado
- Isso atribui endereços IP públicos às instâncias EC2
- Necessário para que as instâncias possam ser acessadas via Load Balancer
Instance subnets
- Instance subnets: Deixe as subnets padrão selecionadas
- O Elastic Beanstalk selecionará automaticamente subnets em diferentes Availability Zones
- Você verá informações de Availability Zone, Subnet, CIDR e Name para cada subnet
Nota: Se não houver subnets configuradas, você pode criá-las no console VPC. Para este laboratório, as subnets padrão são suficientes.
Database Info
Esta é a seção crucial onde configuramos o RDS automaticamente.
Enable database
- Marque a opção Enable database para integrar um banco de dados RDS ao ambiente
- Deixe Restore a snapshot desmarcado (usaremos um banco novo)
Database settings
Configure os parâmetros do banco de dados:
- Engine: Selecione mysql (MySQL)
- Engine version: Deixe a versão mais recente (ex:
8.0ou superior) - Instance class: Selecione db.t3.micro (Free Tier eligible em contas AWS Academy)
- Storage: Configure 20 GB (suficiente para desenvolvimento e testes)
- Username: Digite
carstore(username padrão para este laboratório)- ⚠️ Importante: Não use
adminourootcomo username, pois são usuários reservados - Use
carstorecomo especificado para este laboratório
- ⚠️ Importante: Não use
- Password: Digite
carstore123*(senha padrão para este laboratório)- A senha deve ter no mínimo 8 caracteres
- Anote esta senha: você precisará dela para configurar as variáveis de ambiente
Availability
- Availability: Selecione Low (one AZ) para este laboratório
- Para produção, considere alta disponibilidade com múltiplas AZs
Database deletion policy
Configure o que acontece com o banco quando o ambiente for terminado:
- Database deletion policy: Selecione Create snapshot
- Esta opção salva um snapshot do banco antes de deletá-lo
- Você pode restaurar o banco a partir do snapshot posteriormente
- Útil para não perder dados em caso de terminação acidental
Opções disponíveis:
- Create snapshot: Salva snapshot antes de deletar (recomendado)
- Retain: O banco continua existindo fora do Elastic Beanstalk
- Delete: O banco é completamente deletado sem backup
Tags (opcional)
- Tags: Você pode adicionar até 50 tags para organizar e filtrar recursos
- Para este laboratório, deixe vazio
- Tags são pares key-value úteis para organização e custeamento
Environment Properties (Importante para AWS Academy)
Configure as variáveis de ambiente necessárias para a aplicação funcionar corretamente:
Clique em “Add property” para adicionar uma nova variável de ambiente
Configure da seguinte forma:
- Source: Plain text
- Name: PORT
- Value: 8080
Clique em “Add property” novamente para adicionar outra variável:
- Source: Plain text
- Name: SPRING_PROFILES_ACTIVE
- Value: aws
⚠️ Importante: A variável de ambiente
PORT=8080é necessária em contas AWS Academy Sandbox para garantir que a aplicação Spring Boot use a porta correta. Sem essa configuração, a aplicação pode não iniciar corretamente.Nota: A variável
SPRING_PROFILES_ACTIVE=awsgarante que o profile correto seja ativado para carregar as configurações doapplication-aws.properties.
Sobre as variáveis RDS:
A documentação da AWS diz que o Elastic Beanstalk cria automaticamente as variáveis RDS_HOSTNAME, RDS_DB_NAME, RDS_USERNAME e RDS_PASSWORD quando você configura um banco de dados acoplado. Porém, na prática (especialmente em contas AWS Academy Sandbox), isso pode não funcionar.
Após criar o ambiente, você DEVE verificar se essas variáveis foram criadas automaticamente:
- No console do Elastic Beanstalk, vá em Configuration → Software → Environment properties
- Verifique se as variáveis RDS estão presentes
- Se NÃO estiverem presentes, você precisará adicioná-las manualmente:
Para obter os valores:
- Acesse o console RDS → Databases → clique na instância criada
- RDS_HOSTNAME: Copie o “Endpoint” (ex:
awseb-e-xxxxx-stack-awsebrdsdatabase-xxxxx.xxxx.us-east-1.rds.amazonaws.com) - Cada aluno terá um endpoint diferente - RDS_DB_NAME:
ebdb(verifique em Configuration se for diferente) - RDS_USERNAME:
carstore(o username que você definiu no Step 3) - RDS_PASSWORD:
carstore123*(a senha que você definiu no Step 3)
Adicione estas variáveis manualmente no Environment Properties se elas não estiverem presentes.
Após configurar rede, banco de dados, tags e environment properties, clique em Next para avançar para o Step 4.
Tarefa 7: Revisando e criando o ambiente (Step 4 e Step 5)
Step 4 - Review (opcional)
Neste passo você pode revisar todas as configurações antes de criar o ambiente:
- Verifique todas as configurações dos passos anteriores
- Revise os custos estimados (se disponível)
- Se necessário, clique em Edit para voltar e ajustar configurações
Configurações adicionais importantes para AWS Academy:
Durante o review ou em uma etapa separada, verifique/ajuste as seguintes configurações:
Health reporting: Configure como Basic
- Esta configuração determina a frequência e tipo de relatórios de saúde do ambiente
- “Basic” é suficiente para ambientes de laboratório
Managed updates: Deixe DESMARCADO
- Não habilite atualizações gerenciadas em ambientes AWS Academy Sandbox
- Isso evita conflitos com as restrições da conta de laboratório
Step 5 - Create
Após revisar tudo:
Clique em Create environment para iniciar a criação
O Elastic Beanstalk começará a provisionar todos os recursos:
- Instâncias EC2
- Security Groups
- Instância RDS MySQL
- Load Balancer (se configurado no preset)
- VPC e subnets (se usando custom)
Você será redirecionado para a página do ambiente onde pode acompanhar o progresso
Tarefa 8: Acompanhando o deploy
Parte 1: Monitorar o progresso da criação
Após clicar em “Create environment”, você será redirecionado para a página do ambiente. O processo de criação pode levar 5-15 minutos.
Acompanhe o status do ambiente na parte superior da página:
- Launching: Recursos estão sendo criados
- Updating: Configurações estão sendo aplicadas
- Ready: Ambiente está pronto para uso
Monitore a aba Events para ver o progresso detalhado:
- Você verá mensagens sobre criação de EC2, RDS, Security Groups, etc.
- Se houver erros, eles aparecerão aqui em vermelho
Acompanhe a aba Health para ver o status das instâncias:
- Severe: Problemas críticos
- Degraded: Problemas de performance
- Warning: Avisos não críticos
- No Data: Ainda não há dados suficientes
- Ok: Tudo funcionando normalmente
Parte 2: Verificar o status dos recursos
Você pode verificar individualmente os recursos criados:
Instâncias EC2:
- No menu lateral, clique em “Instances”
- Verifique se as instâncias estão rodando
- Confirme se o status é “Running”
Banco de dados RDS:
- No menu lateral, clique em “Configuration” -> “Database”
- Verifique as informações do RDS criado
- Confirme se o status é “Available”
Security Groups:
- No console EC2, vá para “Security Groups”
- Verifique os grupos criados pelo Elastic Beanstalk
- Confirme as regras de entrada/saída
Tarefa 9: Verificando o deploy
Parte 1: Acessar a aplicação
Quando o ambiente estiver com status “Ready”:
- No console do Elastic Beanstalk, copie a URL do ambiente (ex:
http://carstore-prod.us-east-1.elasticbeanstalk.com) - Abra esta URL no seu navegador
- A aplicação deve carregar normalmente
Parte 2: Testar a persistência de dados
- Crie um novo carro através da interface web
- Verifique se o carro foi criado com sucesso
- Atualize a página ou acesse de outro navegador para confirmar que os dados persistiram (indicando que o RDS está funcionando)
Parte 3: Verificar logs (se necessário)
Se houver problemas, você pode verificar os logs:
- No menu lateral do ambiente, clique em “Logs”
- Clique em “Request logs” -> “Last 100 lines”
- Procure por erros ou mensagens de startup da aplicação
- Você também pode fazer “Full logs” para baixar logs completos
Tarefa 10: Gerenciando variáveis de ambiente (IMPORTANTE)
Parte 1: Acessar configurações do ambiente
- No menu lateral do ambiente, clique em “Configuration”
- Role até a seção “Software”
- Clique em “Edit”
Parte 2: Verificar variáveis de ambiente RDS (CRÍTICO)
⚠️ IMPORTANTE: Embora a documentação da AWS diga que o Elastic Beanstalk cria automaticamente as variáveis RDS, na prática isso pode não funcionar (especialmente em contas AWS Academy Sandbox).
Verifique se as seguintes variáveis de ambiente estão presentes:
RDS_HOSTNAME=<endpoint-do-rds>
RDS_DB_NAME=ebdb
RDS_USERNAME=carstore
RDS_PASSWORD=carstore123*
Se as variáveis NÃO estiverem presentes:
- Acesse o console RDS → Databases → clique na instância criada pelo Elastic Beanstalk
- Copie as informações necessárias:
- Endpoint: Para
RDS_HOSTNAME(ex:awseb-e-xxxxx-stack-awsebrdsdatabase-xxxxx.xxxx.us-east-1.rds.amazonaws.com) - Cada aluno terá um endpoint diferente - Database name: Para
RDS_DB_NAME(deve serebdb)
- Endpoint: Para
- Volte para o Elastic Beanstalk → Configuration → Software → Edit
- Adicione manualmente as variáveis faltantes:
- Name:
RDS_HOSTNAME, Value: cole o endpoint copiado do console RDS - Name:
RDS_DB_NAME, Value:ebdb - Name:
RDS_USERNAME, Value:carstore - Name:
RDS_PASSWORD, Value:carstore123*
- Name:
- Clique em “Apply” para salvar
- O ambiente será reiniciado automaticamente
Nota: O
RDS_USERNAMEpara este laboratório écarstore(conforme definido no Step 3).Nota: Se as variáveis não forem configuradas manualmente quando necessário, a aplicação falhará ao iniciar com erro “Communications link failure”.
Parte 3: Adicionar variáveis personalizadas (opcional)
Se precisar adicionar outras variáveis de ambiente:
- Em “Environment properties”, clique em “Add property”
- Defina o nome e valor da propriedade
- Clique em “Apply” para salvar as alterações
- O ambiente será reiniciado automaticamente
Exemplos de variáveis úteis:
SPRING_PROFILES_ACTIVE=aws(para ativar profile específico)LOG_LEVEL=INFO(para configurar nível de log)- Variáveis de configuração específicas da sua aplicação
Tarefa 11: Acessando o RDS diretamente (opcional)
Parte 1: Encontrar o endpoint do RDS
- No console da AWS, vá para o serviço “RDS”
- Clique em “Databases” no menu lateral
- Você verá a instância RDS criada pelo Elastic Beanstalk
- Clique na instância para ver os detalhes
- Copie o “Endpoint” (algo como
carstore.xxxx.us-east-1.rds.amazonaws.com)
Parte 2: Conectar via cliente MySQL
Se você tiver um cliente MySQL (MySQL Workbench, DBeaver, etc.):
- Use o endpoint copiado como host
- Use a porta
3306 - Use o username
carstoree passwordcarstore123*(definidos no Step 3) - Conecte-se para verificar as tabelas e dados criados pela aplicação
Nota: Para conectar externamente, você precisa garantir que o Security Group do RDS permite sua conexão. Por padrão, o Elastic Beanstalk restringe o acesso ao RDS apenas para as instâncias EC2 do ambiente.
Conclusão
Neste laboratório você aprendeu a:
- Configurar uma aplicação Spring Boot para múltiplos ambientes (local e AWS);
- Usar o Elastic Beanstalk para deploy simplificado na AWS;
- Provisionar automaticamente um banco de dados RDS;
- Fazer deploy via console web da AWS;
Esta configuração permite que você desenvolva localmente com H2DB (rápido e simples) e faça deploy em produção com RDS (robusto e escalável), sem precisar alterar código - apenas configurações.
Parabéns! 🎉
Você concluiu o LAB 12 e agora sabe como fazer o deploy da sua aplicação Spring Boot na AWS usando Elastic Beanstalk com RDS!