Início rápido: implantar uma aplicação Java no Elastic Beanstalk
Este tutorial de início rápido orienta você no processo de criação de uma aplicação Java e sua implantação em um ambiente AWS Elastic Beanstalk.
nota
Este tutorial de início rápido foi criado para fins de demonstração. Não use a aplicação criada neste tutorial para tráfego de produção.
Seções
- Sua conta da AWS
- Pré-requisitos
- Etapa 1: criar uma aplicação Java
- Etapa 2: executar a aplicação localmente
- Etapa 3: implantar sua aplicação Java com a EB CLI
- Etapa 4: executar a aplicação no Elastic Beanstalk
- Etapa 5: limpar
- Recursos da AWS para sua aplicação
- Próximas etapas
- Implantar com o console do Elastic Beanstalk
Sua conta da AWS
Se você ainda não for um cliente da AWS, será necessário criar uma conta da AWS. O cadastro habilita o acesso ao Elastic Beanstalk e outros serviços necessários da AWS.
Se você já tem uma conta da AWS, pode prosseguir para Pré-requisitos.
Cadastrar-se em uma Conta da AWS
Se você ainda não tem Conta da AWS, siga as etapas a seguir para criar um.
Para se cadastrar em uma Conta da AWS
Abra https://portal.aws.amazon.com/billing/signup
. Siga as instruções online.
Parte do procedimento de inscrição envolve receber uma chamada telefônica e inserir um código de verificação no teclado do telefone.
Quando você se cadastra em uma Conta da AWS, um Usuário raiz da conta da AWS é criado. O usuário raiz tem acesso a todos os Serviços da AWS e atributos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar tarefas que exigem acesso de usuário-raiz.
A AWS envia um e-mail de confirmação depois que o processo de cadastramento é concluído. A qualquer momento, é possível visualizar as atividades da conta atual e gerenciar sua conta acessando https://aws.amazon.com/
Criar um usuário com acesso administrativo
Depois de se cadastrar em uma Conta da AWS, proteja seu Usuário raiz da conta da AWS, habilite o AWS IAM Identity Center e crie um usuário administrativo para não usar o usuário raiz em tarefas cotidianas.
Proteger seu Usuário raiz da conta da AWS
-
Faça login no AWS Management Console
como o proprietário da conta ao escolher a opção Usuário raiz e inserir o endereço de e-mail da Conta da AWS. Na próxima página, insira sua senha. Para obter ajuda ao fazer login usando o usuário raiz, consulte Fazer login como usuário raiz no Guia do usuário do Início de Sessão da AWS.
-
Habilite a autenticação multifator (MFA) para o usuário raiz.
Para obter instruções, consulte Habilitar um dispositivo MFA virtual para o usuário raiz de sua conta da Conta da AWS (console) no Guia do usuário do IAM.
Criar um usuário com acesso administrativo
-
Habilitar o IAM Identity Center.
Para obter instruções, consulte Habilitar AWS IAM Identity Center no Guia do usuário do AWS IAM Identity Center.
-
No Centro de Identidade do IAM, conceda o acesso administrativo para um usuário.
Para obter um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como fonte de identidade, consulte Configurar o acesso dos usuários com o Diretório do Centro de Identidade do IAM padrão no Guia do usuário do AWS IAM Identity Center.
Iniciar sessão como o usuário com acesso administrativo
-
Para fazer login com seu usuário do Centro de Identidade do IAM, use o URL de login que foi enviado ao seu endereço de e-mail quando você criou o usuário do Centro do Usuário do IAM.
Para obter ajuda com o login utilizando um usuário do Centro de Identidade do IAM, consulte Fazer login no portal de acesso da AWS, no Guia do usuário do Início de Sessão da AWS.
Atribuir acesso a usuários adicionais
-
No Centro de Identidade do IAM, crie um conjunto de permissões que siga as práticas recomendadas de aplicação de permissões com privilégio mínimo.
Para obter instruções, consulte Create a permission set no Guia do usuário do AWS IAM Identity Center.
-
Atribua usuários a um grupo e, em seguida, atribua o acesso de autenticação única ao grupo.
Para obter instruções, consulte Add groups no Guia do usuário do AWS IAM Identity Center.
Pré-requisitos
nota
Contas da AWS criadas após 1º de outubro de 2024 precisarão definir temporariamente uma opção para criar um novo ambiente com êxito. Como acontece com novas contas, mas somente em regiões nas quais conta ainda não possui um ambiente, as contas existentes precisarão realizar a mesma ação. Para ter mais informações, consulte Modelos de execução.
Para seguir os procedimentos neste manual, você precisa de um terminal de linha de comando ou de um shell para executar os comandos. Nas listagens, os comandos são mostrados precedidos por um símbolo de prompt ($) e pelo nome do diretório atual, quando apropriado.
~/eb-project$ this is a command
this is output
No Linux e no macOS, você pode usar seu gerenciador de pacotes e de shell preferido. No Windows, você pode instalar o subsistema Windows para Linux
EB CLI
Este tutorial também usa a Interface de Linhas de Comando do Elastic Beanstalk (CLI do EB). Para obter detalhes sobre a instalação e configuração da CLI do EB, consulte Instalar a interface de linha de comando do Elastic Beanstalk e Configurar a EB CLI.
Java e Maven
Se você não tiver o Amazon Corretto instalado no computador local, poderá instalá-lo seguindo as instruções de instalação no Guia do Usuário do Amazon Corretto.
Verifique sua instalação do Java executando o seguinte comando.
~$ java -version
Este tutorial usa o Maven. Siga as instruções de download
Verifique sua instalação do Maven executando o seguinte comando.
~$ mvn -v
Etapa 1: criar uma aplicação Java
Crie um diretório do projeto.
~$ mkdir eb-java
~$ cd eb-java
Depois, crie uma aplicação a ser implantada usando o Elastic Beanstalk. Vamos criar um serviço Web RESTful "Hello World".
Este exemplo usa a framework Spring Boot
Crie os seguintes arquivos:
Esse arquivo cria uma aplicação Spring Boot simples.
exemplo ~/eb-java/src/main/java/com/example/Application.java
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Esse arquivo cria um mapeamento que retorna um String que definimos aqui.
exemplo ~/eb-java/src/main/java/com/example/Controller.java
package com.example; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class Controller { @GetMapping("/") public String index() { return "Hello Elastic Beanstalk!"; } }
Esse arquivo define a configuração do projeto Maven.
exemplo ~/eb-java/pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.3</version> </parent> <groupId>com.example</groupId> <artifactId>BeanstalkJavaExample</artifactId> <version>1.0-SNAPSHOT</version> <properties> <java.version>21</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Esse arquivo de propriedades substitui a porta padrão, que passa a ser 5000. Essa é a porta padrão à qual o Elastic Beanstalk envia tráfego para aplicações Java.
exemplo ~/eb-java/application.properties
server.port=5000
Etapa 2: executar a aplicação localmente
Empacote sua aplicação com o seguinte comando:
~/eb-java$ mvn clean package
Execute sua aplicação localmente com o seguinte comando:
~/eb-java$ java -jar target/BeanstalkJavaExample-1.0-SNAPSHOT.jar
Enquanto a aplicação estiver em execução, navegue até http://127.0.0.1:5000/
no navegador. Você verá o texto "Hello Elastic Beanstalk!”.
Etapa 3: implantar sua aplicação Java com a EB CLI
Antes de implantar sua aplicação Java no Elastic Beanstalk, vamos limpar a aplicação de compilação do diretório e criar um Buildfile e um Procfile para controlar como ela é compilada e executada no ambiente Elastic Beanstalk.
Para preparar e configurar a implantação da aplicação
-
Limpe a aplicação criada.
~/eb-java$
mvn clean
-
Crie o
Buildfile
.exemplo
~/eb-java/Buildfile
build: mvn clean package
Este
Buildfile
especifica o comando usado para criar a aplicação. Se você não incluir umBuildfile
para uma aplicação Java, o Elastic Beanstalk não tentará criar essa aplicação. -
Crie o
Procfile
.exemplo
~/eb-java/Procfile
web: java -jar target/BeanstalkJavaExample-1.0-SNAPSHOT.jar
Este
Procfile
especifica o comando usado para executar a aplicação. Se você não incluir umProcfile
para uma aplicação Java, o Elastic Beanstalk presumirá que há um arquivo JAR na raiz do pacote de código-fonte e tentará executá-lo com o comandojava -jar
.
Agora que você definiu os arquivos de configuração para criar e iniciar a aplicação, está pronto para implantá-la.
Para criar um ambiente e implantar sua aplicação Java
-
Inicialize o repositório da EB CLI com o comando eb init:
~/eb-java
eb init -p corretto java-tutorial --region
Application java-tutorial has been created.us-east-2
Esse comando cria uma aplicação
java-tutorial
e configura seu repositório local para criar ambientes com a versão mais recente da plataforma Java. -
(Opcional) Execute eb init novamente para configurar um par de chaves padrão para que você possa usar SSH para se conectar à instância do EC2 que está executando seu aplicativo:
~/eb-java$
eb init
Do you want to set up SSH for your instances? (y/n):y
Select a keypair. 1) my-keypair 2) [ Create new KeyPair ]Selecione um par de chaves se você já tiver um, ou siga os as instruções na tela para criar um. Se nenhum prompt aparecer ou se for necessário alterar as configurações posteriormente, execute eb init -i.
-
Crie um ambiente e implante o aplicativo nele com eb create. O Elastic Beanstalk cria automaticamente um arquivo zip para a aplicação e o inicia na porta 5000.
~/eb-java$
eb create java-env
O Elastic Beanstalk leva cerca de cinco minutos para criar seu ambiente.
Etapa 4: executar a aplicação no Elastic Beanstalk
Quando o processo de criação de seu ambiente for concluído, abra seu site com eb open.
~/eb-java eb open
Parabéns! Você implantou uma aplicação Java com o Elastic Beanstalk! Isso abre uma janela do navegador usando o nome de domínio criado para o seu aplicativo.
Etapa 5: limpar
Você pode encerrar o ambiente quando terminar de trabalhar com a aplicação. O Elastic Beanstalk encerra todos os recursos da AWS associados ao seu ambiente.
Para encerrar seu ambiente do Elastic Beanstalk com a CLI do EB, execute o seguinte comando.
~/eb-java$ eb terminate
Recursos da AWS para sua aplicação
Você acabou de criar uma aplicação de instância única. Ela serve como uma aplicação de exemplo simples com uma única instância do EC2 e, portanto, não requer balanceamento de carga ou ajuste de escala automático. Para aplicações de instância única, o Elastic Beanstalk cria os seguintes recursos da AWS:
-
Instância do EC2: uma máquina virtual do Amazon EC2 configurada para executar aplicações Web na plataforma de sua escolha.
Cada plataforma executa um conjunto diferente de software, arquivos de configuração e scripts para oferecer suporte a uma versão de linguagem, framework, contêiner da Web específicos ou a uma combinação deles. A maioria das plataformas usa o Apache ou nginx como um proxy reverso que processa tráfego da web na frente do aplicativo web, encaminha solicitações para ele, atende ativos estáticos e gera logs de acesso e de erro.
-
Grupo de segurança de instância: um grupo de segurança do Amazon EC2 configurado para permitir tráfego de entrada na porta 80. Esse recurso permite que o tráfego HTTP do load balancer chegue à instância do EC2 que executa seu aplicativo Web. Por padrão, o tráfego não é permitido em outras portas.
-
Bucket do Amazon S3: um local de armazenamento do seu código-fonte, logs e outros artefatos criados quando o Elastic Beanstalk é utilizado.
-
Alarmes do Amazon CloudWatch: dois alarmes do CloudWatch que monitoram a carga nas instâncias do ambiente e são acionados quando ela está muito alta ou muito baixa. Quando um alarme é acionado, o seu grupo de Auto Scaling pode aumentar ou diminuir.
-
Pilha do AWS CloudFormation: o Elastic Beanstalk usa o AWS CloudFormation para iniciar os recursos em seu ambiente e propagar alterações de configuração. Os recursos são definidos em um modelo que você pode visualizar no console do AWS CloudFormation
. -
Nome de domínio: um nome de domínio que encaminha para a aplicação Web no formato
subdomínio
.região
.elasticbeanstalk.com.
O Elastic Beanstalk gerencia todos esses recursos. Quando você encerra o ambiente, o Elastic Beanstalk encerra todos os recursos dele.
Próximas etapas
Depois que um ambiente estiver executando um aplicativo, você poderá implantar uma nova versão do aplicativo ou um aplicativo diferente a qualquer momento. A implantação de uma nova versão do aplicativo é muito rápida, pois não é necessário provisionar ou reiniciar as instâncias do EC2. Também é possível explorar o novo ambiente usando o console do Elastic Beanstalk. Para conhecer as etapas detalhadas, consulte Explore seu ambiente, no capítulo Primeiros passos deste guia.
Explore mais tutoriais
Se quiser experimentar outros tutoriais com diferentes aplicações de exemplo, consulte Aplicações de exemplo e tutoriais.
Depois de implantar uma ou duas aplicações de exemplo e estiver pronto para começar a desenvolver e executar aplicações Java localmente, consulte Configurar seu ambiente de desenvolvimento Java.
Implantar com o console do Elastic Beanstalk
Você também pode usar o console do Elastic Beanstalk para iniciar a aplicação de exemplo. Para conhecer as etapas detalhadas, consulte Criar uma aplicação de exemplo, no capítulo Primeiros passos deste guia.