Usar a plataforma Tomcat do Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar a plataforma Tomcat do Elastic Beanstalk

Importante

O AWS Elastic Beanstalk instala o Log4j dos repositórios de pacotes padrão do Amazon Linux em suas plataformas Tomcat para Amazon Linux 1 e Amazon Linux 2. As versões do Log4j disponíveis nos repositórios Amazon Linux 1 e Amazon Linux 2 não são afetadas pela CVE-2021-44228 ou pela CVE-2021-45046 em sua configuração padrão.

Se você fez alterações de configuração no uso do log4j pela aplicação ou instalou versões mais recentes do log4j, recomendamos que tome medidas para atualizar o código da aplicação para atenuar esse problema.

Por precaução, o Elastic Beanstalk lançou novas versões de plataforma que usam os repositórios de pacotes padrão do Amazon Linux mais recentes, que incluem o JDK do Log4j com hot patch, em nossa versão da plataforma Amazon Linux de 21 de dezembro de 2021. Se você personalizou a instalação do log4j como dependência da aplicação, recomendamos que atualize para a versão mais recente da plataforma Elastic Beanstalk para atenuar a CVE-2021-44228 ou a CVE-2021-45046. Você também pode habilitar atualizações gerenciadas automatizadas como parte das práticas normais de atualização.

Para obter mais informações sobre atualizações de software relacionadas à segurança do Amazon Linux, consulte a Central de Segurança do Amazon Linux.

A plataforma Tomcat do AWS Elastic Beanstalk é um conjunto de versões de plataforma para aplicativos web em Java que podem ser executados em um contêiner da web Tomcat. Tomcat é executado atrás de um servidor de proxy nginx. Cada ramificação de plataforma corresponde a uma versão principal do Tomcat, como Java 8 com Tomcat 8.

As opções de configuração estão disponíveis no console do Elastic Beanstalk para modificar a configuração de um ambiente em execução. Para evitar a perda da configuração do ambiente quando você terminá-la, você pode usar configurações salvas para salvar as configurações e depois aplicá-las a outro ambiente.

Para salvar as configurações no código-fonte, você pode incluir arquivos de configuração. As definições em arquivos de configuração são aplicadas sempre que você cria um ambiente ou implementa a aplicação. Você também pode usar arquivos de configuração para instalar pacotes, executar scripts e realizar outras operações de personalização da instância em implantações.

A plataforma Tomcat do Elastic Beanstalk inclui um proxy reverso que encaminha solicitações para a aplicação. É possível usar opções de configuração para configurar o servidor de proxy para servir os ativos estáticos de uma pasta em seu código-fonte para reduzir a carga em seu aplicativo. Em cenários avançados, é possível incluir seus próprios arquivos .conf em seu pacote de origem para estender a configuração de proxy do Elastic Beanstalk; ou substituí-la completamente.

nota

O Elastic Beanstalk é compatível com nginx (o padrão) e ao Apache HTTP Server como servidores de proxy na plataforma Tomcat. Se o seu ambiente do Elastic Beanstalk Tomcat usar uma ramificação de plataforma Amazon Linux AMI (anterior ao Amazon Linux 2), você também terá a opção de usar o Apache HTTP Server Versão 2.2. O Apache (mais recente) é o padrão nessas ramificações de plataforma mais antigas.

Em 18 de julho de 2022, o Elastic Beanstalk definiu o status de todas as ramificações de plataforma baseadas no Amazon Linux AMI (AL1) como descontinuadas. Para obter mais informações sobre como migrar para uma ramificação da plataforma Amazon Linux 2023 atual e totalmente compatível, consulte Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou Amazon Linux 2.

Você deve empacotar os aplicativos Java em um arquivo WAR (Web application archive) com uma estrutura específica. Para obter informações sobre a estrutura necessária e como ela está relacionada à estrutura do diretório de seu projeto, consulte Estruturar a pasta do projeto.

Para executar vários aplicativos no mesmo servidor Web, você pode empacotar vários arquivos WAR em um único pacote de origem. Cada aplicativo em um pacote de origem WAR múltiplo é executado no caminho raiz (ROOT.war é executado em myapp.elasticbeanstalk.com/) ou em um caminho diretamente abaixo dele (app2.war é executado no myapp.elasticbeanstalk.com/app2/), conforme determinado pelo nome do WAR. Em um pacote de origem de WAR único, o aplicativo sempre é executado no caminho raiz.

As configurações aplicadas no console do Elastic Beanstalk substituem as mesmas configurações em arquivos de configuração, caso elas existam. Isso permite que você tenha configurações padrão em arquivos de configuração e as substitua por configurações específicas de ambiente no console. Para obter mais informações sobre precedência e outros métodos de alteração das configurações, consulte Opções de configuração.

Para obter detalhes sobre as várias maneiras de estender uma plataforma do Elastic Beanstalk baseada em Linux, consulte Estender as plataformas Linux do Elastic Beanstalk.

Configurar o grupo do seu ambiente Tomcat

A plataforma Tomcat do Elastic Beanstalk fornece algumas opções específicas da plataforma, além de opções padrão que todas as plataformas têm. Essas opções permitem que você configure a máquina virtual Java (JVM), que é executada nos servidores web do ambiente, e defina propriedades do sistema que fornecem strings de configuração de informações ao aplicativo.

É possível usar o console do Elastic Beanstalk para habilitar a alternância de logs para o Amazon S3 e configurar variáveis que sua aplicação pode ler no ambiente.

Como configurar seu ambiente Tomcat no console do Elastic Beanstalk
  1. Abra o console do Elastic Beanstalk e, na lista Regions (Regiões), selecione a sua Região da AWS.

  2. No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.

    nota

    Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.

  3. No painel de navegação, escolha Configuration (Configuração).

  4. Na categoria de configuração Updates, monitoring, and logging (Atualizações, monitoramento e logs), escolha Edit (Editar).

Opções de contêiner

É possível definir estas opções específicas da plataforma:

  • Proxy server (Servidor de proxy): o servidor de proxy a ser usado nas instâncias de ambiente. Por padrão, é usado nginx.

Opções de contêiner JVM

O tamanho do heap na máquina virtual Java (JVM) determina quantos objetos seu aplicativo pode criar na memória antes da execução da coleta de lixo. É possível modificar o Tamanho do heap JVM inicial (-Xms option) e um Tamanho do heap JVM máximo (opção -Xmx). Um tamanho de heap inicial maior permite que mais objetos sejam criados antes da execução da coleta de lixo, mas também significa que o coletor de lixo levará mais tempo para compactar o heap. O tamanho máximo do heap especifica a quantidade máxima de memória que a JVM pode alocar ao expandir o heap durante uma atividade intensa.

nota

A memória disponível depende do tipo de instância do Amazon EC2. Para obter mais informações sobre os tipos de instância do EC2 disponíveis para o ambiente do Elastic Beanstalk, consulte Tipos de instância no Guia do usuário do Amazon Elastic Compute Cloud.

A geração permanente é uma seção do heap da JVM que armazena definições de classe e metadados associados. Para modificar o tamanho da geração permanente, digite o novo tamanho na opção Tamanho do PermGen JVM máximo (-XX:MaxPermSize). Essa configuração se aplica apenas ao Java 7 e versões anteriores. Essa opção foi descontinuada no JDK 8 e substituída pela opção Tamanho do MaxMetaspace  (-XX:MaxMetaspaceSize).

Importante

O JDK 17 removeu a compatibilidade com a opção -XX:MaxPermSize do Java. O uso dessa opção com um ambiente em execução em uma ramificação da plataforma Elastic Beanstalk com o Corretto 17 resultará em um erro. O Elastic Beanstalk lançou sua primeira ramificação da plataforma executando o Tomcat com o Corretto 17 em 13 de julho de 2023.

Para obter mais informações, consulte os recursos a seguir.

Para obter mais informações sobre as plataformas do Elastic Beanstalk e seus componentes, consulte Plataformas compatíveis no Guia de plataformas do AWS Elastic Beanstalk.

Opções de log

A seção Log Options (Opções de log) tem duas configurações:

  • Instance profile (Perfil da instância): especifica o perfil da instância que tem permissão para acessar o bucket do Amazon S3 associado à sua aplicação.

  • Enable log file rotation to Amazon S3 (Habilitar a rotação de arquivos de log para o Amazon S3): especifica se os arquivos de log das instâncias do Amazon EC2 da aplicação serão copiados para o bucket do Amazon S3 associado a ela.

Arquivos estáticos

Para melhorar a performance, você pode usar a seção Static files (Arquivos estáticos) para configurar o servidor proxy para servir arquivos estáticos (por exemplo, HTML ou imagens) de um conjunto de diretórios dentro da aplicação Web. Defina, para cada diretório, o caminho virtual para mapeamento de diretórios. Quando o servidor de proxy recebe uma solicitação para um arquivo no caminho especificado, ele atende o arquivo diretamente em vez de rotear solicitação para seu aplicativo.

Para ver detalhes sobre como configurar arquivos estáticos usando arquivos de configuração ou o console do Elastic Beanstalk, consulte Fornecer arquivos estáticos.

Propriedades de ambiente

Na seção Environment Properties (Propriedades do ambiente), é possível especificar definições de configuração do ambiente nas instâncias do Amazon EC2 que estão executando a aplicação. As propriedades de ambiente são passadas para o aplicativo como pares de chave-valor.

A plataforma Tomcat define uma propriedade de espaço reservado denominada JDBC_CONNECTION_STRING para ambientes Tomcat, para passar uma string de conexão a um banco de dados externo.

nota

Se você anexar uma instância de banco de dados RDS ao seu ambiente, construa a string de conexão JDBC dinamicamente a partir das propriedades do ambiente do Amazon Relational Database Service (Amazon RDS) fornecidas pelo Elastic Beanstalk. Use JDBC_CONNECTION_STRING apenas para instâncias de banco de dados que não são provisionadas usando o Elastic Beanstalk.

Para obter mais informações sobre o uso do Amazon RDS com a aplicação Java, consulte Adicionar uma instância de banco de dados do Amazon RDS ao seu ambiente de aplicações Java.

No ambiente Tomcat executado no Elastic Beanstalk, as variáveis de ambiente podem ser acessadas usando System.getProperty(). Por exemplo, você pode ler uma propriedade denominada API_ENDPOINT em uma variável com o seguinte código.

String endpoint = System.getProperty("API_ENDPOINT");

Consulte Propriedades de ambientes e outras configurações de software para obter mais informações.

Namespaces de configuração do Tomcat

Você pode usar um arquivo de configuração para definir opções de configuração e executar outras tarefas de configuração de instância durante implantações. As opções de configuração podem ser definidas pelo serviço Elastic Beanstalk ou pela plataforma utilizada, e são organizadas em namespaces.

A Plataforma Tomcat é compatível com as opções nos namespaces a seguir, além das opções compatíveis com todos os ambientes do Elastic Beanstalk:

  • aws:elasticbeanstalk:container:tomcat:jvmoptions: modificar as configurações do JVM. As opções desse namespace correspondem às do console de gerenciamento, da seguinte maneira:

    • XmsJVM command line options (Opções de linha de comando da JVM

    • JVM OptionsJVM command line options (Opções de linha de comando da JVM

  • aws:elasticbeanstalk:environment:proxy: escolha o servidor de proxy do ambiente.

O seguinte arquivo de configuração de exemplo mostra o uso das opções de configuração específicas do Tomcat.

exemplo .ebextensions/tomcat-settings.config
option_settings: aws:elasticbeanstalk:container:tomcat:jvmoptions: Xms: 512m JVM Options: '-Xmn128m' aws:elasticbeanstalk:application:environment: API_ENDPOINT: mywebapi.zkpexsjtmd.us-west-2.elasticbeanstalk.com aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

O Elastic Beanstalk oferece muitas opções de configuração para personalizar o ambiente. Além de arquivos de configuração, você também pode definir opções de configuração usando o console, configurações salvas, a EB CLI ou a AWS CLI. Consulte Opções de configuração para obter mais informações.

Se o seu ambiente Tomcat do Elastic Beanstalk usar uma versão da plataforma AMI do Amazon Linux (anterior ao Amazon Linux 2), leia as informações adicionais nesta seção.

Observações
  • As informações neste tópico somente são aplicáveis a ramificações de plataforma com base na Amazon Linux AMI (AL1). As ramificações de plataforma AL2023/AL2 são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e exigem definições de configuração diferentes.

  • Em 18 de julho de 2022, o Elastic Beanstalk definiu o status de todas as ramificações de plataforma baseadas no Amazon Linux AMI (AL1) como descontinuadas. Para obter mais informações sobre como migrar para uma ramificação da plataforma Amazon Linux 2023 atual e totalmente compatível, consulte Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou Amazon Linux 2.

A plataforma Tomcat da AMI do Amazon Linux é compatível com as opções adicionais nos seguintes namespaces:

  • aws:elasticbeanstalk:container:tomcat:jvmoptions: além das opções mencionadas anteriormente nesta página para esse namespace, versões mais antigas da plataforma da AMI do Amazon Linux também são compatíveis com:

    • XX:MaxPermSizeMaximum JVM permanent generation size (Tamanho máximo de geração permanente da JVM

  • aws:elasticbeanstalk:environment:proxy: além de escolher o servidor de proxy, configure também a compactação de resposta.

O exemplo de arquivo de configuração a seguir mostra o uso das opções de configuração de namespace do proxy.

exemplo .ebextensions/tomcat-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: GzipCompression: 'true' ProxyServer: nginx

Para implantar arquivos de configuração .ebextensions, inclua-os na origem do aplicativo. Para um único aplicativo, adicione .ebextensions em um arquivo WAR compactado executando o seguinte comando:

zip -ur your_application.war .ebextensions

Para uma aplicação que exige vários arquivos WAR, consulte Empacotamento de vários arquivos WAR para ambientes Tomcat para obter mais instruções.