

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

# Plataformas do Elastic Beanstalk
<a name="concepts-all-platforms"></a>

AWS Elastic Beanstalk fornece uma variedade de plataformas nas quais você pode criar seus aplicativos. Projete a aplicação Web para uma dessas plataformas, e o Elastic Beanstalk implanta o código na versão de plataforma selecionada para criar um ambiente de aplicação ativo.

O Elastic Beanstalk oferece plataformas para diferentes linguagens de programação, servidores de aplicações e contêineres do Docker. Algumas plataformas possuem várias versões simultaneamente compatíveis.

**Topics**
+ [Glossário de plataformas do Elastic Beanstalk](platforms-glossary.md)
+ [Modelo de responsabilidade compartilhada para manutenção da plataforma do Elastic Beanstalk](platforms-shared-responsibility.md)
+ [Política de suporte às plataformas do Elastic Beanstalk](platforms-support-policy.md)
+ [Cronograma de lançamentos da plataforma Elastic Beanstalk](platforms-schedule.md)
+ [Plataformas compatíveis com Elastic Beanstalk](concepts.platforms.md)
+ [Plataformas Linux do Elastic Beanstalk](platforms-linux.md)
+ [Estender as plataformas Linux do Elastic Beanstalk](platforms-linux-extend.md)

# Glossário de plataformas do Elastic Beanstalk
<a name="platforms-glossary"></a>

A seguir estão os principais termos relacionados às AWS Elastic Beanstalk plataformas e seu ciclo de vida.

**Runtime**  
Os programas de software de runtime específicos de cada linguagem de programação (estrutura, bibliotecas, intérprete, vm, etc.) que são necessários para executar o código do aplicativo.

**Componentes do Elastic Beanstalk**  
Componentes de software que o Elastic Beanstalk adiciona a uma plataforma para habilitar a funcionalidade Elastic Beanstalk. Por exemplo, o agente de integridade aprimorada é necessário para reunir e relatar informações de integridade.

**Plataforma**  
Uma combinação de um sistema operacional (SO), runtime, servidor Web, servidor de aplicações e componentes do Elastic Beanstalk. As plataformas fornecem componentes que estão disponíveis para executar seu aplicativo.

**Versão da plataforma**  
Uma combinação de versões específicas de um sistema operacional (SO), runtime, servidor Web, servidor de aplicações e componentes do Elastic Beanstalk. Crie um ambiente do Elastic Beanstalk com base em uma versão da plataforma e implanta a aplicação nele.  
Uma plataforma tem um número de versão semântica do formato *X.Y.Z*, em que *X* é a versão principal, *Y* é a versão secundária e *Z* é a versão do patch.  
Uma versão de plataforma pode estar em um dos seguintes estados:  
+ *Recomendada*: a versão mais recente da plataforma em uma ramificação da plataforma compatível. Essa versão contém a maioria dos up-to-date componentes e é recomendada para uso em ambientes de produção. Quando o Elastic Beanstalk lança uma nova versão da plataforma, essa nova versão substitui a versão anterior e se torna a versão recomendada para a ramificação da plataforma correspondente.
+ *Não recomendada*: qualquer versão da plataforma que não seja a versão mais recente na sua ramificação de plataforma. Embora essas versões possam permanecer funcionais, é altamente recomendável atualizar para a versão mais recente da plataforma. Você pode usar as [atualizações gerenciadas da plataforma](environment-platform-update-managed.md) para ajudar a permanecer up-to-date automaticamente.
É possível verificar se uma versão da plataforma é recomendada usando o comando **[describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html)** da AWS CLI e verificando o campo `PlatformLifecycleState`.

**Ramificação da plataforma**  
Uma linha de versões de plataforma que compartilha versões específicas (geralmente principais) de alguns de seus componentes, como sistema operacional (SO), runtime ou componentes do Elastic Beanstalk. Por exemplo: *Python 3.13 em execução no Amazon Linux 2023 de 64 bits*; *IIS 10.0 em execução no Windows Server 2025 de 64 bits*. Ramificações de plataforma recebem atualizações na forma de novas versões da plataforma. Cada versão da plataforma sucessiva em uma ramificação é uma atualização para a anterior.  
A versão recomendada em cada ramificação da plataforma compatível está disponível incondicionalmente para a criação do ambiente. As versões anteriores da plataforma permanecem acessíveis para contas com ambientes ativos ou encerrados que as usam no momento em que foram substituídas por uma nova versão. As versões anteriores da plataforma não têm a maioria dos up-to-date componentes e não são recomendadas para uso.  
Se precisar acessar versões anteriores da plataforma além da disponibilidade padrão descrita acima, entre em contato com o [AWS Support Center](https://console.aws.amazon.com/support/home#/) para obter ajuda.
Uma ramificação de plataforma pode estar em um dos seguintes estados:  
+ *Compatível*: uma ramificação de plataforma atual. Ela consiste inteiramente em *componentes compatíveis*. Os componentes compatíveis não atingiram o fim da vida útil, conforme designado por seus fornecedores. Ela recebe atualizações contínuas da plataforma e é recomendada para uso em ambientes de produção. Para obter uma lista de ramificações de plataforma suportadas, consulte [Plataformas suportadas com o Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html) no *Guia Plataformas do AWS Elastic Beanstalk *.
+ *Beta*: uma ramificação da plataforma de pré-visualização e de pré-lançamento. Ela é de natureza experimental. Ela pode receber atualizações contínuas da plataforma por um tempo, mas não tem suporte a longo prazo. Uma ramificação de plataforma beta não é recomendada para uso em ambientes de produção. Use-a apenas para avaliação. Para obter uma lista de ramificações de plataforma beta, consulte [Versões de plataforma do Elastic Beanstalk em beta público](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-beta.html) no *Guia Plataformas do AWS Elastic Beanstalk *.
+ *Retirada*: uma ramificação de plataforma em que um ou mais componentes (como o runtime ou sistema operacional) estão chegando ao fim da vida útil, conforme designado por seus fornecedores. Embora uma ramificação de plataforma obsoleta continue recebendo novas versões da plataforma até a data de desativação, os componentes que atingiram EOL não recebem atualizações. Por exemplo, se uma versão de runtime atingir EOL, a ramificação da plataforma será marcada como obsoleta, mas continuará recebendo atualizações do sistema operacional até a data de desativação da ramificação da plataforma. A ramificação da plataforma não continuará recebendo atualizações para a versão de runtime EOL. Não é recomendável que uma ramificação de plataforma obsoleta seja usada.
+ *Retirado*: uma ramificação de plataforma que não recebe mais atualizações. As ramificações de plataforma desativadas não estão disponíveis para criar novos ambientes Elastic Beanstalk usando o console Elastic Beanstalk. Se o ambiente usar uma ramificação de plataforma retirada, atualize para uma ramificação de plataforma retirada para continuar recebendo atualizações. Não é recomendável utilizar uma plataforma em desuso. Para obter mais detalhes sobre ramificações de plataforma retiradas, consulte [Política de suporte às plataformas do Elastic Beanstalk](platforms-support-policy.md). Para obter uma lista de ramificações de plataforma programadas para retirada, consulte [Programação de retirada de ramificações de plataforma](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-schedule.html#platforms-support-policy.depracation). Para ver as ramificações de plataformas retiradas anteriores, consulte [Histórico de ramificações de plataformas retiradas anteriores](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-schedule.html#platforms-support-policy.retired).
Se seu ambiente usar uma ramificação de plataforma defasada ou desativada, recomendamos atualizá-la para uma versão de plataforma em uma ramificação de plataforma compatível. Para obter detalhes, consulte [Atualizar a versão de plataforma do ambiente Elastic Beanstalk](using-features.platform.upgrade.md).  
Você pode verificar o estado de uma ramificação de plataforma usando o comando **[describe-platform-version](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-platform-version.html)** da AWS CLI e verificando o campo `PlatformBranchLifecycleState`.

**Atualização da plataforma**  
Um lançamento de uma nova versão da plataforma que contêm as atualizações para alguns componentes da plataforma: sistema operacional, runtime, servidor Web, servidor de aplicações e componentes do Elastic Beanstalk. Quando o Elastic Beanstalk lança uma nova versão da plataforma, essa nova versão substitui a versão anterior e se torna a versão recomendada para a ramificação da plataforma correspondente. Atualizações de plataformas seguem a taxonomia da versão semântica e podem ter vários níveis:  
+ *Atualização principal*: uma atualização que tenha alterações incompatíveis com as versões existentes da plataforma. Talvez seja necessário modificar o aplicativo para executar corretamente em uma nova versão principal. Uma atualização principal tem um novo número de versão de plataforma principal.
+ *Atualização secundária*: uma atualização que contém alterações compatíveis com as versões anteriores da plataforma na maioria dos casos. Dependendo da sua aplicação, pode ser necessário modificá-la para que funcione corretamente em uma nova versão secundária. Uma atualização secundária tem um novo número de versão de plataforma secundária.
+ *Atualização de patch*: uma atualização que consiste em versões de manutenção (correções de erros, atualizações de segurança e melhorias de performance) que são compatíveis com uma versão anterior da plataforma. Uma atualização de patch tem um novo número de versão de plataforma de patch.

**Managed Updates**  
Um recurso do Elastic Beanstalk que aplica automaticamente patches e atualizações secundárias aos componentes do sistema operacional (SO), runtime, servidor Web, servidor de aplicações e Elastic Beanstalk para uma versão de plataforma compatível com o Elastic Beanstalk. Uma atualização gerenciada aplica uma versão mais recente da plataforma na mesma ramificação da plataforma ao seu ambiente. Você pode configurar as atualizações gerenciadas para aplicar somente atualizações de patch ou atualizações de versão secundária e de patch. Você também pode desabilitar atualizações gerenciadas completamente.  
Para obter mais informações, consulte [Atualizações gerenciadas de plataforma](environment-platform-update-managed.md).

# Modelo de responsabilidade compartilhada para manutenção da plataforma do Elastic Beanstalk
<a name="platforms-shared-responsibility"></a>

AWS e nossos clientes compartilham a responsabilidade de alcançar um alto nível de segurança e conformidade de componentes de software. Esse modelo compartilhado reduz os encargos operacionais.

Para obter detalhes, consulte o [Modelo de Responsabilidade AWS Compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/).

AWS Elastic Beanstalk ajuda você a cumprir sua parte do modelo de responsabilidade compartilhada, fornecendo um recurso de *atualizações gerenciadas*. Esse recurso aplica automaticamente atualizações secundárias e patches para uma versão da plataforma compatível do Elastic Beanstalk. Se uma atualização gerenciada falhar, o Elastic Beanstalk notificará você sobre a falha a fim de garantir que você esteja ciente disso e possa tomar medidas imediatas.

Para obter mais informações, consulte [Atualizações gerenciadas de plataforma](environment-platform-update-managed.md).

Além disso, o Elastic Beanstalk faz o seguinte:
+ Publica a [política de suporte da plataforma](platforms-support-policy.md) e a programação de desativação para os próximos 12 meses.
+ Libera atualizações de patch, secundárias e principais dos componentes do sistema operacional (SO), runtime, servidor de aplicações e servidor Web normalmente em até 30 dias após sua disponibilidade. O Elastic Beanstalk é responsável por criar atualizações para seus respectivos componentes que estão presentes em suas versões de plataforma compatíveis. Todas as outras atualizações vêm diretamente de seus fornecedores (proprietários ou da comunidade).

Anunciamos todas as atualizações para nossas plataformas suportadas em nossas [notas de versão](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/relnotes.html) no *guia de notas de versão AWS Elastic Beanstalk *. Também fornecemos uma lista de todas as plataformas suportadas e seus componentes, juntamente com um histórico da plataforma, no guia *Plataformas AWS Elastic Beanstalk *. Para obter mais informações, consulte [Plataformas compatíveis e histórico de componentes](concepts.platforms.md#concepts.platforms.list).

Você é responsável por fazer o seguinte:
+ Atualize todos os componentes que você controla (identificados como **Cliente** no [Modelo de Responsabilidade AWS Compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/)). Isso inclui garantir a segurança do aplicativo, seus dados e qualquer componente que o aplicativo exigir e que tenha sido obtido por download.
+ Certifique-se de que os ambientes do Elastic Beanstalk estejam em execução em uma versão compatível da plataforma e migre qualquer ambiente em execução em uma versão retirada da plataforma para uma versão compatível.
+ Se estiver usando uma imagem de máquina da Amazon (AMI) personalizada para o ambiente Elastic Beanstalk, corrija, mantenha e teste essa AMI para que ela permaneça atualizada e compatível com uma versão compatível da plataforma Elastic Beanstalk. Para obter mais informações sobre o gerenciamento de ambientes com uma AMI personalizada, consulte [Usar uma imagem de máquina Amazon personalizada (AMI) no ambiente Elastic Beanstalk](using-features.customenv.md).
+ Resolva todos os problemas que surgirem em tentativas de atualização gerenciadas com falha e tente fazer a atualização novamente.
+ Aplique patch ao sistema operacional, runtime, servidor de aplicações e servidor Web por conta própria se optou por não utilizar as atualizações gerenciadas do Elastic Beanstalk. Você pode fazer isso [aplicando as atualizações de plataforma manualmente](using-features.platform.upgrade.md) ou aplicar patch diretamente nos componentes em todos os recursos de ambiente relevantes.
+ [Gerencie a segurança e a conformidade de todos AWS os serviços que você usa fora do Elastic Beanstalk de acordo com AWS o Modelo de Responsabilidade Compartilhada.](https://aws.amazon.com/compliance/shared-responsibility-model/)

# Política de suporte às plataformas do Elastic Beanstalk
<a name="platforms-support-policy"></a>

O Elastic Beanstalk é compatível com ramificações de plataformas que ainda recebem atualizações secundárias e de patches contínuas de seus fornecedores (proprietários ou comunidade). Para obter uma definição de termos relacionados, consulte [Glossário de plataformas do Elastic Beanstalk](platforms-glossary.md).

## Ramificações desativadas da plataforma
<a name="platforms-support-policy.retired-platforms"></a>

Quando um componente de uma ramificação de plataforma com suporte é marcado como Fim da Vida Útil (EOL) por seu fornecedor, o Elastic Beanstalk marca a ramificação da plataforma como retirada. Os componentes de uma ramificação de plataforma incluem o seguinte: sistema operacional (SO), versão da linguagem de runtime, servidor de aplicações ou servidor Web.

Quando uma ramificação da plataforma é marcada como desativada, as seguintes políticas são aplicáveis:
+ O Elastic Beanstalk deixa de fornecer atualizações de manutenção, incluindo atualizações de segurança.
+ O Elastic Beanstalk não fornece mais suporte técnico para ramificações de plataforma retiradadas.
+ O Elastic Beanstalk não disponibiliza mais a ramificação da plataforma para novos clientes do Elastic Beanstalk para implantações em novos ambientes. Há um período de carência de 90 dias a partir da data de retirada publicada para clientes existentes com ambientes ativos sendo executados em ramificações de plataforma desativadas.

**nota**  
Uma ramificação de plataforma retirada não estará disponível no console do Elastic Beanstalk. No entanto, ele estará disponível por meio do AWS CLI EB CLI e da EB API para clientes que tenham ambientes existentes com base na ramificação descontinuada da plataforma. Os clientes existentes também podem usar os consoles [Clonar ambiente](using-features.managing.clone.md) e [Reconstruir ambiente](environment-management-rebuild.md).

Para obter uma lista das ramificações da plataforma programadas para retirada, consulte [Programação de ramificações desativadas da plataforma](platforms-schedule.md#platforms-support-policy.depracation) no tópico de *programação da plataforma Elastic Beanstalk* a seguir.

Para obter mais informações sobre o que esperar quando a ramificação da plataforma de seu ambiente for retiradada, consulte [Perguntas frequentes sobre descontinuação de plataformas](using-features.migration-al.FAQ.md).

## Após o período de carência de 90 dias
<a name="platforms-support-policy.beyond-grace"></a>

Nossa política para ramificações de plataforma descontinuadas não remove o acesso a ambientes nem exclui recursos. No entanto, os clientes existentes que executam um ambiente Elastic Beanstalk em uma filial de plataforma retiradada devem estar cientes dos riscos de fazer isso. Esses ambientes podem acabar em uma situação imprevisível, porque o Elastic Beanstalk não é capaz de fornecer atualizações de segurança, suporte técnico ou hotfixes para ramificações de plataforma retiradadas devido ao fato de o fornecedor marcar seu componente como EOL. 

Por exemplo, uma vulnerabilidade de segurança prejudicial e crítica pode surgir em um ambiente sendo executado em uma ramificação de plataforma retirada. Ou uma ação da API do EB pode parar de funcionar no ambiente se, com o tempo, tornar-se incompatível com o serviço Elastic Beanstalk. Quanto mais tempo um ambiente baseado em uma ramificação de plataforma retirada permanecer ativo, maior a chance de que esses tipos de riscos ocorram. Para continuar a obter os benefícios de importantes melhorias de funcionalidade, performance e segurança oferecidas por fornecedores de componentes nas versões mais recentes, é altamente recomendável atualizar todos os ambientes do Elastic Beanstalk para uma versão compatível da plataforma. 

Se a aplicação encontrar problemas ao ser executada em uma ramificação de plataforma descontinuada e você não conseguir migrá-la para uma plataforma compatível, será necessário considerar outras alternativas. Soluções alternativas incluem o encapsulamento da aplicação em uma imagem do Docker para executá-la como um contêiner do Docker. Isso permitiria que um cliente usasse qualquer uma de nossas soluções Docker, como nossas plataformas AL2 Elastic AL2 Beanstalk 023/Docker ou outros serviços baseados em Docker, como Amazon ECS ou Amazon EKS. As alternativas que não são do Docker incluem nosso AWS CodeDeploy serviço, que permite a personalização completa dos tempos de execução que você deseja. 

# Cronograma de lançamentos da plataforma Elastic Beanstalk
<a name="platforms-schedule"></a>

Além da cadência mensal de lançamento de novas versões de ramificação da plataforma, nossa manutenção de lançamentos também inclui os seguintes processos:
+  *Lançamento de novas ramificações de plataforma*: normalmente, elas introduzem uma nova versão principal de uma linguagem de runtime, sistema operacional ou servidor de aplicações.
+  *Retirada de ramificações da plataforma*: retiraremos uma ramificação da plataforma quando um de seus componentes chegar ao fim da vida útil (EOL). Para obter mais informações sobre nossa política para filiais retiradadas, consulte [Política de suporte às plataformas do Elastic Beanstalk](platforms-support-policy.md)

**Topics**
+ [Recursos de planejamento](#platforms-support-policy.resources)
+ [Próximos lançamentos de ramificações de plataforma](#platforms-support-policy.upcoming-releases)
+ [Programação de ramificações desativadas da plataforma](#platforms-support-policy.depracation)
+ [Histórico de ramificações de plataforma retiradas](#platforms-support-policy.retired)
+ [Histórico de servidores e sistemas operacionais retirados](#platforms-support-policy.retired.components)

## Recursos de planejamento
<a name="platforms-support-policy.resources"></a>

Os recursos a seguir podem ajudar você a planejar a manutenção e o suporte para sua aplicação em execução em uma plataforma Elastic Beanstalk.
+ [AWS Elastic Beanstalk Guia de plataformas](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/welcome.html) — Este guia fornece uma lista detalhada de componentes para cada uma de nossas ramificações de plataforma. Ele também fornece um histórico de plataformas por data de lançamento com os mesmos detalhes. Este guia pode informar quando componentes específicos da ramificação da sua plataforma forem alterados. Se a aplicação começar a se comportar de forma diferente, você também poderá cruzar a data da ocorrência no guia de plataformas para ver se houve alguma alteração na plataforma que possa ter afetado a aplicação.
+ [AWS Elastic Beanstalk Notas de lançamento](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/relnotes.html) — Nossas notas de lançamento anunciam todos os lançamentos da nossa plataforma, tanto menores quanto principais. Isso inclui nossas atualizações mensais da plataforma, versões de segurança, hotfixes e anúncios de retiradadoria. É possível assinar nossos feeds de RSS na documentação das Notas de versão.

## Próximos lançamentos de ramificações de plataforma
<a name="platforms-support-policy.upcoming-releases"></a>

A tabela a seguir lista as próximas ramificações da plataforma Elastic Beanstalk e sua data de lançamento prevista. Essas datas são provisórias e estão sujeitas a alterações.


|  Versão do runtime/ramificação da plataforma  |  Sistema operacional  |  Data de lançamento prevista  | 
| --- | --- | --- | 
|   Python 3.15   |  Amazon Linux 2023  |  Novembro de 2026  | 
|   Node.js 26   |  Amazon Linux 2023  |  Novembro de 2026  | 
|   .NET 11   |  Amazon Linux 2023  |  Dezembro de 2026  | 
|   PHP 8.6   |  Amazon Linux 2023  |  Janeiro de 2027  | 
|   Ruby 4.1   |  Amazon Linux 2023  |  Fevereiro de 2027  | 

## Programação de ramificações desativadas da plataforma
<a name="platforms-support-policy.depracation"></a>

A tabela a seguir lista as ramificações da plataforma Elastic Beanstalk que estão programadas para serem retiradas, pois alguns de seus componentes estão chegando ao fim da vida útil (EOL). Todas as filiais de plataformas AL2 baseadas têm datas de aposentadoria até 30 de junho de 2026, quando o Amazon Linux 2 atingir o EOL. Para obter mais informações sobre o Amazon Linux 2, consulte [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/).

Para obter uma lista mais detalhada das ramificações de plataformas que estão sendo retiradas e que incluem seus componentes específicos, consulte [Versões de plataformas que estão sendo retiradas](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-retiring.html) no guia de *Plataformas do AWS Elastic Beanstalk *.


|  Versão do runtime/ramificação da plataforma  |  Data prevista para a retirada  | 
| --- | --- | 
| PHP 8.1 AL2023 | 31 de março de 2026 | 
| PHP 8.1 AL2 | 31 de março de 2026 | 
| Docker AL2 | 30 de junho de 2026 | 
| ECS AL2 | 30 de junho de 2026 | 
| Go 1 AL2 | 30 de junho de 2026 | 
| Corretto 8 AL2 | 30 de junho de 2026 | 
| Corretto 11 AL2 | 30 de junho de 2026 | 
| Corretto 17 AL2 | 30 de junho de 2026 | 
| Corretto 8 with Tomcat 9 AL2 | 30 de junho de 2026 | 
| Corretto 11 with Tomcat 9 AL2 | 30 de junho de 2026 | 
| .NET Core AL2 | 30 de junho de 2026 | 
| Python 3.9 AL2023 | 31 de julho de 2026 | 
| Ruby 3.2 AL2023 | 31 de julho de 2026 | 
| Node.js 20 AL2023 | 31 de julho de 2026 | 
| IIS 10.0 on Windows Server 2016 (& Core) | 30 de setembro de 2026 | 
| PHP 8.2 AL2023 | 31 de março de 2027 | 
| .NET 9 AL2023 | 31 de março de 2027 | 
| .NET 8 AL2023 | 31 de março de 2027 | 

## Histórico de ramificações de plataforma retiradas
<a name="platforms-support-policy.retired"></a>

As tabelas a seguir listam as ramificações da plataforma Elastic Beanstalk que já estão em status de retirada. É possível ver um histórico detalhado dessas ramificações de plataforma e seus componentes em [Histórico da plataforma](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history.html) do *Guia de plataformas do AWS Elastic Beanstalk *.


**Amazon Linux 2023 (AL2023)**  

|  Versão do runtime/ramificação da plataforma  |  Data de retirada  | 
| --- | --- | 
|   .NET 6 AL2023  |  8 de abril de 2025  | 
|   Node.js 18 AL2023  |  11 de agosto de 2025  | 


**Amazon Linux (2AL2)**  

|  Versão do runtime/ramificação da plataforma  |  Data de retirada  | 
| --- | --- | 
|   Corretto 11 with Tomcat 8.5 AL2  |  10 de outubro de 2024  | 
|   Corretto 8 with Tomcat 8.5 AL2   |  10 de outubro de 2024  | 
|   Corretto 11 with Tomcat 7 AL2  |  29 de junho de 2022  | 
|   Corretto 8 with Tomcat 7 AL2   |  29 de junho de 2022  | 
|   Node.js 18 AL2   | 11 de agosto de 2025 | 
|   Node.js 16 AL2   | 10 de outubro de 2024 | 
|   Node.js 14 AL2   |  10 de outubro de 2024  | 
|   Node.js 12 AL2   |  23 de dezembro de 2022  | 
|   Node.js 10 AL2   |  29 de junho de 2022  | 
|   PHP 8.0 AL2  |  10 de outubro de 2024  | 
|   PHP 7.4 AL2  |  9 de junho de 2023  | 
|   PHP 7.3 AL2  |  29 de junho de 2022  | 
|   PHP 7.2 AL2  |  29 de junho de 2022  | 
|   Python 3.8 AL2  |  8 de abril de 2025  | 
|   Python 3.7 AL2  |  10 de outubro de 2024  | 
|   Ruby 3.0 AL2  |  10 de outubro de 2024  | 
|   Ruby 2.7 AL2  |  10 de outubro de 2024  | 
|   Ruby 2.6 AL2  |  23 de dezembro de 2022  | 
|   Ruby 2.5 AL2  |  29 de junho de 2022  | 


**Amazon Linux AMI (AL1)**  

|  Versão do runtime/ramificação da plataforma  |  Data de retirada  | 
| --- | --- | 
|   Single Container Docker   | 18 de julho de 2022 | 
|   Multicontainer Docker   |  18 de julho de 2022  | 
|   Preconfigured Docker - GlassFish 5.0 with Java 8   |  18 de julho de 2022  | 
|   Go 1   |  18 de julho de 2022  | 
|   Java 8   |  18 de julho de 2022  | 
|   Java 7   |  18 de julho de 2022  | 
|   Java 8 with Tomcat 8.5   |  18 de julho de 2022  | 
|   Java 7 with Tomcat 7   |  18 de julho de 2022  | 
|   Node.js   |  18 de julho de 2022  | 
|   PHP 7.2 - 7.3   |  18 de julho de 2022  | 
|   Python 3.6   |  18 de julho de 2022  | 
|  Ruby 2,4, 2.5, 2.6 with Passenger   |  18 de julho de 2022  | 
|   Ruby 2.4, 2.5, 2.6 with Puma  |  18 de julho de 2022  | 
| Go 1.3–1.10 | 31 de outubro de 2020 | 
| Java 6 | 31 de outubro de 2020 | 
| Node.js 4.x–8.x | 31 de outubro de 2020 | 
| PHP 5.4–5.6 | 31 de outubro de 2020 | 
| PHP 7.0–7.1 | 31 de outubro de 2020 | 
| Python 2.6, 2.7, 3.4 | 31 de outubro de 2020 | 
| Ruby 1.9.3 | 31 de outubro de 2020 | 
| Ruby 2.0–2.3 | 31 de outubro de 2020 | 

**nota**  
 [Em 18 de julho de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **o Elastic Beanstalk definiu o status de todas as ramificações da plataforma baseadas no Amazon Linux AMI AL1 () como descontinuadas.** Para obter mais informações, consulte [Perguntas frequentes sobre descontinuação de plataformas](using-features.migration-al.FAQ.md). 


**Windows Server**  

| Versão do runtime/ramificação da plataforma |  Data de retirada  | 
| --- | --- | 
| IIS 8.5 em execução no Windows Server (e Core) 2012 R2 de 64 bits | 4 de dezembro de 2023 | 
| IIS 8.5 em execução no Windows Server (e Core) de 64 bits 2012 R2 versão 0.1.0 |  29 de junho de 2022  | 
| IIS 8.5 em execução no Windows Server (e Core) de 64 bits 2012 R2 versão 1.2.0 |  29 de junho de 2022 | 
| IIS 10.0 em execução no Windows Server de 64 bits 2016 (e Core) versão 1.2.0 |  29 de junho de 2022 | 
| ISS 8 em execução no Windows Server de 64 bits 2012 de versão de plataforma R1 | 22 de junho de 2022 | 
| IIS 8 em execução no Windows Server de 64 bits 2012 R1 versão 0.1.0  | 22 de junho de 2022 | 
| IIS 8 em execução no Windows Server de 64 bits 2012 R1 versão 1.2.0 | 22 de junho de 2022 | 

**nota**  
Para obter mais informações sobre a descontinuação das ramificações da plataforma *Windows 2012 R2*, consulte [Windows Server 2012 R2 platform branches retired](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-12-04-windows-2012-retire.html) nas *AWS Elastic Beanstalk Release Notes*.

## Histórico de servidores e sistemas operacionais retirados
<a name="platforms-support-policy.retired.components"></a>

As tabelas a seguir fornecem um histórico dos sistemas operacionais, servidores de aplicações e servidores Web que não são mais compatíveis com as plataformas do Elastic Beanstalk. Todas as ramificações da plataforma que utilizavam esses componentes foram retiradas. As datas refletem a data de retiradadoria da última ramificação da plataforma do Elastic Beanstalk que incluía o componente.


**Sistema operacional**  

|  Versão do SO  |  Data de desativação da plataforma  | 
| --- | --- | 
|   Windows Server 2012 R2 running IIS 8.5  |  4 de dezembro de 2023  | 
|   Windows Server Core 2012 R2 running IIS 8.5  |  4 de dezembro de 2023  | 
|  Amazon Linux AMI (AL1)  |  18 de julho de 2022  | 
| Windows Server 2012 R1 | 22 de junho de 2022 | 
| Windows Server 2008 R2 | 28 de outubro de 2019 | 


**Servidores de aplicações**  

|  Versão do servidor do aplicativo  |  Data de desativação da plataforma  | 
| --- | --- | 
| Tomcat 7 |  29 de junho de 2022 para plataformas Amazon Linux 2 (AL2) 18 de julho de 2022 para plataformas Amazon Linux AMI (AL1)  | 
| Tomcat 8 | 31 de outubro de 2020 | 
| Tomcat 6 | 31 de outubro de 2020 | 


**Servidores da web**  

|  Versão do servidor web  |  Data de desativação da plataforma  | 
| --- | --- | 
| ISS 8 em execução no Windows Server de 64 bits | 22 de junho de 2022 | 
| Servidor HTTP Apache 2.2 | 31 de outubro de 2020 | 
| Nginx 1.12.2 | 31 de outubro de 2020 | 

# Plataformas compatíveis com Elastic Beanstalk
<a name="concepts.platforms"></a>

AWS Elastic Beanstalk fornece uma variedade de plataformas nas quais você pode criar seus aplicativos. Projete a aplicação Web para uma dessas plataformas, e o Elastic Beanstalk implanta o código na versão de plataforma selecionada para criar um ambiente de aplicação ativo.

O Elastic Beanstalk provisiona os recursos necessários para executar seu aplicativo, incluindo uma ou mais instâncias da Amazon. EC2 A pilha de software em execução nas EC2 instâncias da Amazon depende da versão específica da plataforma que você selecionou para o seu ambiente.

**O nome da pilha de soluções para uma ramificação da plataforma**  
É possível usar o *nome da pilha de soluções* para uma determinada versão de ramificação da plataforma para iniciar um ambiente com a [EB CLI](eb-cli3.md), a [API do Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/), ou a [AWS CLI](https://aws.amazon.com/cli/). O guia *Plataformas do AWS Elastic Beanstalk * lista o *nome da pilha de soluções* sob a versão da ramificação da plataforma nas seções [Plataformas compatíveis do Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html) e [Histórico de plataformas](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history.html).

Para recuperar todos os nomes da pilha de soluções que você pode usar para criar um ambiente, use a [ListAvailableSolutionStacks](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListAvailableSolutionStacks.html)API ou a [https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-available-solution-stacks.html](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/list-available-solution-stacks.html)na CLI AWS .

É possível personalizar e configurar o software do qual seu aplicativo depende na plataforma Linux. Saiba mais em [Personalizar software em servidores Linux](customize-containers-ec2.md) e [Personalizar software em Windows Servers](customize-containers-windows-ec2.md). Há notas de release detalhadas disponíveis para releases recentes nas [Notas de release do AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/). 

## Plataformas compatíveis e histórico de componentes
<a name="concepts.platforms.list"></a>

O guia de *Plataformas do AWS Elastic Beanstalk * lista todas as versões atuais do branch da plataforma na seção [Plataformas compatíveis do Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html). O guia de *Plataformas* também lista um *histórico de plataformas* para cada plataforma, que inclui uma lista de versões anteriores da plataforma de ramificação. Para visualizar o *histórico da plataforma* de cada plataforma, selecione um dos seguintes links.
+ [Docker](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-docker.html)
+ [Go](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-go.html)
+ [Java SE](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-javase.html)
+ [Tomcat (executando Java SE)](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-java.html)
+ [.NET Core no Linux](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-dotnetlinux.html)
+ [.NET no Windows Server](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-dotnet.html)
+ [Node.js](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-nodejs.html)
+ [PHP](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-php.html)
+ [Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-python.html)
+ [Ruby](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-ruby.html)

# Plataformas Linux do Elastic Beanstalk
<a name="platforms-linux"></a>

As plataformas Elastic Beanstalk Linux oferecem uma grande quantidade de funcionalidades prontas para uso. Você pode estender as plataformas de várias maneiras para oferecer suporte ao seu aplicativo. Para obter detalhes, consulte [Estender as plataformas Linux do Elastic Beanstalk](platforms-linux-extend.md).

A maioria das plataformas compatíveis com o Elastic Beanstalk são baseadas no sistema operacional Linux. Especificamente, essas plataformas são baseadas no Amazon Linux, uma distribuição Linux fornecida pela AWS. As plataformas Linux do Elastic Beanstalk usam instâncias do Amazon Elastic Compute Cloud EC2 (Amazon), e essas instâncias executam o Amazon Linux.

**Topics**
+ [Versões compatíveis do Amazon Linux](#platforms-linux.versions)
+ [Lista de plataformas Linux do Elastic Beanstalk](#platforms-linux.list)
+ [Fluxo de trabalho de implantação da instância](platforms-linux-extend.workflow.md)
+ [Fluxo de trabalho de implantação de instâncias para o ECS em execução no Amazon Linux 2 e versões posteriores](platforms-linux-extend.workflow.ecs-al2.md)
+ [Ferramentas de script de plataforma para ambientes Elastic Beanstalk](custom-platforms-scripts.md)

## Versões compatíveis do Amazon Linux
<a name="platforms-linux.versions"></a>

AWS Elastic Beanstalk oferece suporte a plataformas baseadas no Amazon Linux 2 e no Amazon Linux 2023.

Para obter mais informações sobre Amazon Linux 2 e Amazon Linux 2023, consulte o seguinte:
+ **Amazon Linux 2** — [Amazon Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html) no *Guia do EC2 usuário da Amazon*.
+ **Amazon Linux 2023** – [O que é o Amazon Linux 2023?](https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html) no Guia do usuário *Amazon Linux 2023*.

Para obter detalhes sobre as versões de plataforma compatíveis, consulte [Plataformas compatíveis com Elastic Beanstalk](concepts.platforms.md).

**nota**  
Você pode migrar seu aplicativo de uma ramificação da plataforma ou do AL1 Elastic AL2 Beanstalk para a ramificação equivalente da plataforma 023. AL2 Para obter mais informações, consulte [Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md). 

### Amazon Linux 2023
<a name="platforms-linux.versions.al2023"></a>

AWS anunciou a [disponibilidade geral](https://aws.amazon.com//blogs/aws/amazon-linux-2023-a-cloud-optimized-linux-distribution-with-long-term-support/) do Amazon Linux 2023 em março de 2023. O *guia do usuário Amazon Linux 2023* resume as principais diferenças entre o Amazon Linux 2 e o Amazon Linux 2023. Para obter mais informações, consulte [Comparando Amazon Linux 2 e Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) no guia do usuário.

Há um alto grau de compatibilidade entre as plataformas Elastic Beanstalk Amazon Linux 2 e Amazon Linux 2023. Embora haja algumas diferenças a serem observadas:
+ **Instance Metadata Service versão 1 (IMDSv1)** — A configuração da IMDSv1 opção [Desativar](command-options-general.md#command-options-general-autoscalinglaunchconfiguration) é padronizada `true` em AL2 plataformas 023. O padrão está `false` nas AL2 plataformas.
+ ferramenta de **instância pkg-repo — A [pkg-repo](custom-platforms-scripts.md#custom-platforms-scripts.pkg-repo) ferramenta** não está disponível para ambientes executados em AL2 plataformas 023. No entanto, você ainda pode aplicar manualmente as atualizações do pacote e do sistema operacional a uma instância AL2 023. Para obter mais informações, consulte [Gerenciamento de pacotes e atualizações do sistema operacional](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) no *Guia do usuário do Amazon Linux 2023*
+ ** HTTPd Configuração do Apache** — O `httpd.conf` arquivo Apache para plataformas AL2 023 tem algumas definições de configuração que são diferentes daquelas para: AL2 
  + Negar acesso a todo o sistema de arquivos do servidor por padrão. Essas configurações são descritas em *Proteger arquivos do servidor por padrão* na página [Dicas de segurança](https://httpd.apache.org/docs/2.4/misc/security_tips.html) do site Apache.
  + Negue acesso à configuração de `.htaccess` em todos os diretórios, exceto aqueles especificamente habilitados. Essa configuração é descrita em *Protegendo as configurações do sistema* na página [Dicas de segurança](https://httpd.apache.org/docs/2.4/misc/security_tips.html) do site Apache. A página [Tutorial do Apache HTTP Server: arquivos.htaccess](https://httpd.apache.org/docs/2.4/howto/htaccess.html) afirma que essa configuração pode ajudar a melhorar o desempenho.
  + Negue acesso a arquivos com padrão de nome `.ht*`. Essa configuração impede que os clientes da Web exibam arquivos `.htaccess` e `.htpasswd`.

  Você pode alterar qualquer uma das definições de configuração acima para seu ambiente. Para obter mais informações, consulte [Configurar o Apache HTTPD](platforms-linux-extend.proxy.md#platforms-linux-extend.proxy.httpd).
+ **Suporte a variáveis de ambiente multilinha** — as plataformas AL2 023 suportam valores de várias linhas para variáveis de ambiente e segredos nas configurações de serviço systemd. As plataformas Amazon Linux 2 não oferecem suporte a valores de variáveis de ambiente de várias linhas. Esse aprimoramento permite que você use segredos de várias linhas e valores de configuração em plataformas AL2 023. Para obter mais informações sobre o uso de variáveis e segredos de ambiente, consulte[Valores multilinha nas variáveis de ambiente do Amazon Linux 2](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.multiline).
+ **CloudWatch encaminhamento de registros personalizado** — O agente de CloudWatch registros obsoleto (`awslogs`pacote) não está disponível em 023 plataformas. AL2 Se você tiver configurações personalizadas de encaminhamento de log que instalam e usam o agente obsoleto, você deve atualizar seus arquivos de configuração para usar o `awslogs` agente unificado CloudWatch ao migrar do Amazon Linux 2 para o 023. AL2 Para obter mais informações, consulte [Streaming do arquivo de log personalizado](AWSHowTo.cloudwatchlogs.md#AWSHowTo.cloudwatchlogs.streaming.custom).

**Diferenças específicas da plataforma**

Além das diferenças básicas do sistema operacional, há diferenças específicas de plataforma entre as plataformas de tempo de execução Amazon Linux 2 e AL2 023:
+ **Ramificação da plataforma do.NET** — A estratégia de ramificação da plataforma do.NET difere entre o Amazon Linux 2 e AL2 o 023. No Amazon Linux 2, a plataforma do.NET Core mantém uma janela rotativa das versões principais do.NET em uma única ramificação da plataforma. Em AL2 023, cada ramificação da plataforma é fixada em uma versão principal específica do.NET (por exemplo, .NET 9, .NET 10).

  Se você implantar aplicativos dependentes da estrutura (aplicativos que dependem do tempo de executivo.NET instalado na plataforma), você deve selecionar uma ramificação da plataforma que corresponda à versão.NET de destino do seu aplicativo. Se você implantar aplicativos independentes (aplicativos que agrupam seu próprio tempo de execução do.NET), você pode usar qualquer ramificação da plataforma AL2 023 do.NET, independentemente da versão.NET do seu aplicativo, pois seu aplicativo não depende do tempo de execução instalado da plataforma. Para obter mais informações, consulte [Agrupamento de aplicações para o .NET Core na plataforma Linux Elastic Beanstalk](dotnet-linux-platform-bundle-app.md).
+ **Seleção de versão do Node.js** — A plataforma Node.js no Amazon Linux 2 suporta a especificação de uma versão Node.js no `package.json` arquivo do seu aplicativo. A plataforma Node.js em AL2 023 não oferece suporte a esse recurso. Você deve usar a versão padrão do Node.js fornecida pela ramificação da plataforma. Para obter mais informações sobre o gerenciamento de versões do Node.js, consulte[Configurar dependências da sua aplicação no Elastic Beanstalk](nodejs-platform-dependencies.md).
+ **Versão do servidor Ruby Puma** — A plataforma Ruby no Amazon Linux 2 ignora a versão Puma especificada no `Gemfile.lock` arquivo do seu aplicativo e usa a versão Puma padrão da plataforma. A plataforma Ruby em AL2 023 honra a versão Puma especificada em if present. `Gemfile.lock` Se nenhuma versão for especificada, a plataforma instalará a versão Puma padrão da plataforma.
+ **Disponibilidade de pacotes PHP** — Alguns pacotes disponíveis nas plataformas PHP Amazon Linux 2 não estão disponíveis nas plataformas PHP AL2 0.23:
  + *Pacotes do cliente MySQL — Os pacotes* do cliente de `mysql-devel` linha de comando `mysql` e não estão instalados em AL2 plataformas PHP 023. Se seu aplicativo exigir conectividade com o banco de dados MySQL, use o PHP `mysqli` ou `pdo_mysql` as extensões, que estão disponíveis nas duas plataformas.
  + *Ferramentas Compass e Ruby* — Os `rubygems` pacotes `ruby-devel` e para o suporte do framework Compass CSS não estão instalados nas plataformas PHP AL2 023. O Compass foi descontinuado. Considere usar ferramentas modernas de pré-processamento de CSS como alternativas.
+ **Ferramentas de controle de versão Go** — O sistema de controle de versão Bazaar (`bzr`) não está disponível nas plataformas AL2 023 Go. O Bazaar está obsoleto e não está incluído no repositório de pacotes 023. AL2 Em vez disso, use Git, Mercurial ou Subversion para controle de versão, todos disponíveis nas plataformas 023 Go. AL2

## Lista de plataformas Linux do Elastic Beanstalk
<a name="platforms-linux.list"></a>

A lista a seguir fornece as plataformas Linux compatíveis com o Elastic Beanstalk para diferentes linguagens de programação, bem como para contêineres Docker. O Elastic Beanstalk oferece plataformas baseadas no Amazon Linux 2 e Amazon Linux 2023 para todos eles. Para saber mais sobre uma plataforma, selecione o link correspondente.
+ [Docker (e ECS Docker)](create_deploy_docker.md) 
+ [Go](create_deploy_go.md)
+ [Tomcat (executando Java SE)](create_deploy_Java.md)
+ [Java SE](create_deploy_Java.md)
+ [.NET Core no Linux](create-deploy-dotnet-core-linux.md)
+ [Node.js](create_deploy_nodejs.md)
+ [PHP](create_deploy_PHP_eb.md)
+ [Python](create-deploy-python-apps.md)
+ [Ruby](create_deploy_Ruby.md)

# Fluxo de trabalho de implantação da instância
<a name="platforms-linux-extend.workflow"></a>

**nota**  
As informações nesta seção não se aplicam à ramificação da plataforma *ECS em execução no Amazon Linux 2 e no Amazon Linux 2023*. Para obter mais informações, consulte a próxima seção, [Fluxo de trabalho de implantação de instâncias para o ECS em execução no Amazon Linux 2 e versões posterioresFluxo de trabalho de implantação de instâncias para ECS em AL2 e versões posteriores](platforms-linux-extend.workflow.ecs-al2.md). 

Como existem muitas maneiras de estender a plataforma do ambiente, é útil saber o que acontece sempre que o Elastic Beanstalk provisiona ou implementa uma instância. O diagrama a seguir mostra todo esse fluxo de trabalho de implantação. Ele representa as diferentes fases de uma implantação e as etapas que o Elastic Beanstalk realiza em cada fase.

**Observações**  
O diagrama não representa o conjunto completo de etapas que o Elastic Beanstalk realiza em instâncias do ambiente durante a implantação. Nós fornecemos este diagrama como ilustração, para fornecer a você a ordem e o contexto para a execução de suas personalizações.
Para simplificar, o diagrama menciona apenas os subdiretórios de hook `.platform/hooks/*` (para implantações de aplicações), e não os subdiretórios de hook `.platform/confighooks/*` (para implantações de configurações). Os hooks nos últimos subdiretórios são executados durante exatamente as mesmas etapas que os hooks nos subdiretórios correspondentes mostrados no diagrama.

![\[Fluxo de trabalho para ordem de execução de extensões em uma instância de ambiente em execução em uma plataforma baseada no Amazon Linux.\]](http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/images/platforms-linux-extend-order.png)


A lista a seguir detalha as fases e etapas de implantação.

1. **Passos iniciais**

   O Elastic Beanstalk baixa e extrai a aplicação. Após cada uma dessas etapas, o Elastic Beanstalk executa uma das etapas de extensibilidade.

   1. Executa comandos encontrados na seção [commands:](customize-containers-ec2.md#linux-commands) de qualquer arquivo de configuração.

   1. Executa todos os arquivos executáveis encontrados no diretório `.platform/hooks/prebuild` do pacote de origem (`.platform/confighooks/prebuild` para uma implantação de configuração).

1. **Configurar**

   O Elastic Beanstalk configura a aplicação e o servidor de proxy.

   1. Executa os comandos encontrados no `Buildfile` no pacote de origem.

   1. Copia seus arquivos de configuração de proxy personalizados, se você tiver algum no diretório `.platform/nginx` do pacote de origem, para seu local de runtime.

   1. Executa comandos encontrados na seção [container\$1commands:](customize-containers-ec2.md#linux-container-commands) de qualquer arquivo de configuração.

   1. Executa todos os arquivos executáveis encontrados no diretório `.platform/hooks/predeploy` do pacote de origem (`.platform/confighooks/predeploy` para uma implantação de configuração).

1. **Implante**

   O Elastic Beanstalk implanta e executa a aplicação e o servidor de proxy.

   1. Executa o comando encontrado no arquivo `Procfile` em seu pacote de origem.

   1. Executa ou executa novamente o servidor de proxy com seus arquivos de configuração de proxy personalizados, se você tiver algum.

   1. Executa todos os arquivos executáveis encontrados no diretório `.platform/hooks/postdeploy` do pacote de origem (`.platform/confighooks/postdeploy` para uma implantação de configuração).

# Fluxo de trabalho de implantação de instâncias para o ECS em execução no Amazon Linux 2 e versões posteriores
<a name="platforms-linux-extend.workflow.ecs-al2"></a>

A seção anterior descreve os recursos de extensibilidade compatíveis ao longo das fases do fluxo de trabalho de implantação da aplicação. Há algumas diferenças para ramificação da plataforma Docker no [*ECS em execução no Amazon Linux 2 e versões posteriores*](create_deploy_docker_ecs.md). Esta seção explica como esses conceitos se aplicam a essa ramificação específica da plataforma. 

Como existem muitas maneiras de estender a plataforma do ambiente, é útil saber o que acontece sempre que o Elastic Beanstalk provisiona ou implementa uma instância. O diagrama a seguir mostra todo esse fluxo de trabalho de implantação para um ambiente baseado nas ramificações de plataforma *ECS em execução no Amazon Linux 2* e *ECS em execução no Amazon Linux 2023*. Ele representa as diferentes fases de uma implantação e as etapas que o Elastic Beanstalk realiza em cada fase.

Ao contrário do fluxo de trabalho descrito na seção anterior, a fase de configuração da implantação não é compatível com os seguintes recursos de extensibilidade: comandos `Buildfile`, comandos `Procfile`, configuração de proxy reverso. 

**Observações**  
O diagrama não representa o conjunto completo de etapas que o Elastic Beanstalk realiza em instâncias do ambiente durante a implantação. Nós fornecemos este diagrama como ilustração, para fornecer a você a ordem e o contexto para a execução de suas personalizações.
Para simplificar, o diagrama menciona apenas os subdiretórios de hook `.platform/hooks/*` (para implantações de aplicações), e não os subdiretórios de hook `.platform/confighooks/*` (para implantações de configurações). Os hooks nos últimos subdiretórios são executados durante exatamente as mesmas etapas que os hooks nos subdiretórios correspondentes mostrados no diagrama.

![\[Fluxo de trabalho para ordem de execução de extensões em uma instância de ambiente na plataforma do Docker baseada no ECS.\]](http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/images/platform-ecs-al2-extended-order.png)


A lista a seguir detalha as etapas do fluxo de trabalho de implantação.

1. Executa todos os arquivos executáveis encontrados no diretório `appdeploy/pre` em `EBhooksDir`.

1. Executa todos os arquivos executáveis encontrados no diretório `.platform/hooks/prebuild` do pacote de origem (`.platform/confighooks/prebuild` para uma implantação de configuração).

1. Executa todos os arquivos executáveis encontrados no diretório `.platform/hooks/predeploy` do pacote de origem (`.platform/confighooks/predeploy` para uma implantação de configuração).

1. Executa todos os arquivos executáveis encontrados no diretório `appdeploy/enact` em `EBhooksDir`.

1. Executa todos os arquivos executáveis encontrados no diretório `appdeploy/post` em `EBhooksDir`.

1. Executa todos os arquivos executáveis encontrados no diretório `.platform/hooks/postdeploy` do pacote de origem (`.platform/confighooks/postdeploy` para uma implantação de configuração).

A referência a `EBhooksDir` representa o caminho do diretório de hooks da plataforma. Para recuperar o nome do caminho do diretório, use a ferramenta de script [get-config](custom-platforms-scripts.md#custom-platforms-scripts.get-config) na linha de comando da instância do ambiente, como mostrado: 

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k EBhooksDir
```

# Ferramentas de script de plataforma para ambientes Elastic Beanstalk
<a name="custom-platforms-scripts"></a>

Este tópico descreve as ferramentas que AWS Elastic Beanstalk fornecem para ambientes que usam plataformas Amazon Linux. As ferramentas estão localizadas nas EC2 instâncias Amazon dos ambientes do Elastic Beanstalk.

## get-config
<a name="custom-platforms-scripts.get-config"></a>

Use a ferramenta `get-config` para recuperar valores de variáveis de ambiente em texto simples e outras informações da plataforma e da instância. A ferramenta está disponível em `/opt/elasticbeanstalk/bin/get-config`.

### comandos get-config
<a name="custom-platforms-scripts.get-config.commands"></a>

Cada comando da ferramenta `get-config` retorna um tipo específico de informação. Use a sintaxe a seguir para executar os comandos de qualquer uma das ferramentas.

```
$ /opt/elasticbeanstalk/bin/get-config command [ options ]
```

O exemplo a seguir executa o comando `environment`:

```
$ /opt/elasticbeanstalk/bin/get-config environment -k PORT
```

Dependendo do comando e das opções que você escolher, a ferramenta retorna um objeto (JSON ou YAML) com pares de chave-valor ou um único valor.

Você pode testar `get-config` usando SSH para se conectar a uma EC2 instância em seu ambiente do Elastic Beanstalk.

**nota**  
Quando você executa `get-config` para teste, alguns comandos podem exigir privilégios de usuário raiz para acessar as informações subjacentes. Se você receber um erro de permissão de acesso, execute o comando novamente em `sudo`.  
Você não precisa adicionar `sudo` ao usar a ferramenta nos scripts implantados no ambiente. O Elastic Beanstalk executa todos os seus scripts como o usuário raiz.

As seções a seguir descrevem os comandos da ferramenta.

#### optionsettings: opções de configuração
<a name="custom-platforms-scripts.get-config.commands.optionsettings"></a>

O comando `get-config optionsettings` retorna um objeto listando as opções de configuração definidas no ambiente e usadas pela plataforma em instâncias do ambiente. Elas são organizadas por namespace.

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings
{"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}
```

Para retornar o valor de uma opção de configuração específica, use a opção `--namespace` (`-n`) para especificar um namespace, e a opção `--option-name` (`-o`) para especificar o nome de uma opção.

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o memory_limit
256M
```

#### environment : propriedades do ambiente
<a name="custom-platforms-scripts.get-config.commands.environment"></a>

O comando `get-config environment` retorna um objeto que contém uma lista de propriedades do ambiente, incluindo as que foram configuradas pelo usuário e fornecidas pelo Elastic Beanstalk. As propriedades configuradas pelo usuário são definidas no [console](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) como *Texto simples* ou com o namespace [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) da opção de configuração.

```
$ /opt/elasticbeanstalk/bin/get-config environment
{"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}
```

Por exemplo, o Elastic Beanstalk fornece propriedades de ambiente para conexão a uma instância de banco de dados integrada do Amazon RDS (por exemplo, `RDS_HOSTNAME`). Essas propriedades de conexão do RDS aparecem na saída do `get-config environment`. No entanto, elas não aparecem na saída do `get-config optionsettings`. Isso ocorre porque elas não foram definidas nas opções de configuração.

Para retornar uma propriedade específica do ambiente, use a opção `--key` (`-k`) para especificar uma chave de propriedade.

```
$ /opt/elasticbeanstalk/bin/get-config environment -k TESTPROPERTY
testvalue
```

**nota**  
A ferramenta `get-config` não pode recuperar [variáveis de ambiente que armazenam segredos](AWSHowTo.secrets.env-vars.md). Para obter mais informações sobre como recuperar programaticamente valores de segredos ou armazenamentos de parâmetros, consulte [Uso do Secrets Manager](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.Secrets-Manager) ou [Usando Systems Manager Parameter Store](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.SSM-parmameter-store).

#### contêiner: valores de configuração na instância
<a name="custom-platforms-scripts.get-config.commands.container"></a>

O comando `get-config container` retorna um objeto que lista valores de configuração de ambiente e plataforma para instâncias de ambiente. 

O exemplo a seguir mostra a saída do comando em um ambiente Tomcat do Amazon Linux 2.

```
$ /opt/elasticbeanstalk/bin/get-config container
{"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}
```

Para retornar o valor de uma chave específica, use a opção `--key` (`-k`) para especificar a chave.

```
$ /opt/elasticbeanstalk/bin/get-config container -k environment_name
myenv-1da84946
```

#### addons: valores de configuração de complementos
<a name="custom-platforms-scripts.get-config.commands.addons"></a>

O comando `get-config addons` retorna um objeto que contém informações de configuração adicionadas ao complemento do ambiente. Use-o para recuperar a configuração de um banco de dados do Amazon RDS associado ao ambiente.

```
$ /opt/elasticbeanstalk/bin/get-config addons
{"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}
```

É possível restringir o resultado de duas maneiras. Para recuperar valores de um complemento específico, use a opção `--add-on` (`-a`) para especificar o nome do complemento.

```
$ /opt/elasticbeanstalk/bin/get-config addons -a rds
{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}
```

Para retornar o valor de uma chave específica dentro de um complemento, adicione a opção `--key` (`-k`) para especificar a chave.

```
$ /opt/elasticbeanstalk/bin/get-config addons -a rds -k RDS_DB_NAME
ebdb
```

#### platformconfig: valores de configuração constantes
<a name="custom-platforms-scripts.get-config.commands.platformconfig"></a>

O comando `get-config platformconfig` retorna um objeto que contém informações de configuração da plataforma que são constantes para a versão da plataforma. A saída é a mesma em todos os ambientes que executam a mesma versão da plataforma. O objeto de saída do comando tem dois objetos incorporados:
+ `GeneralConfig`: contém informações constantes nas versões mais recentes de todas as ramificações de plataformas Amazon Linux 2 e Amazon Linux 2023.
+ `PlatformSpecificConfig`: contém informações que são constantes para a versão da plataforma e que são específicas para ela.

O exemplo a seguir mostra a saída do comando em um ambiente que usa o *Tomcat 8.5 executando a ramificação da plataforma Corretto 11*.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig
{"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}
```

Para retornar o valor de uma chave específica, use a opção `--key` (`-k`) para especificar a chave. Essas chaves são exclusivas entre os dois objetos incorporados. Não é necessário especificar o objeto que contém a chave.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir
/var/app/staging/
```

### Opções de saída get-config
<a name="custom-platforms-scripts.get-config.global"></a>

Use a opção `--output` para especificar o formato do objeto de saída. Os valores válidos são `JSON` (padrão) e `YAML`. Essa é uma opção global. Você deve especificá-la antes do nome do comando.

O exemplo a seguir retorna valores de opção de configuração no formato YAML.

```
$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings
aws:elasticbeanstalk:application:environment:
  JDBC_CONNECTION_STRING: ""
aws:elasticbeanstalk:container:tomcat:jvmoptions:
  JVM Options: ""
  Xms: 256m
  Xmx: 256m
aws:elasticbeanstalk:environment:proxy:
  ProxyServer: nginx
  StaticFiles:
        - ""
aws:elasticbeanstalk:healthreporting:system:
  SystemType: enhanced
aws:elasticbeanstalk:hostmanager:
  LogPublicationControl: "false"
```

## pkg-repo
<a name="custom-platforms-scripts.pkg-repo"></a>

**nota**  
A ferramenta `pkg-repo` não está disponível para ambientes baseados em plataformas Amazon Linux 2023. No entanto, você pode aplicar manualmente as atualizações do pacote e do sistema operacional a uma instância AL2 023. Para obter mais informações, consulte [Gerenciamento de pacotes e atualizações do sistema operacional](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) no *Guia do usuário do Amazon Linux 2023*

Em algumas circunstâncias urgentes, talvez seja necessário atualizar suas EC2 instâncias da Amazon com um patch de segurança do Amazon Linux 2 que ainda não foi lançado com as versões necessárias da plataforma Elastic Beanstalk. Você não pode executar uma atualização manual em seus ambientes do Elastic Beanstalk por padrão. Isso ocorre porque as versões da plataforma estão bloqueadas em uma versão específica do repositório do Amazon Linux 2. Esse bloqueio garante que as instâncias executem versões de software compatíveis e consistentes. Para casos urgentes, a ferramenta `pkg-repo` permite uma solução alternativa para atualizar manualmente os pacotes yum no Amazon Linux 2 se você precisar instalá-los em um ambiente antes de serem lançados em uma nova versão da plataforma do Elastic Beanstalk.

A ferramenta `pkg-repo` das plataformas Amazon Linux 2 permitem desbloquear os repositórios dos pacotes `yum`. Em seguida, você pode executar manualmente um **yum update** para um patch de segurança. Por outro lado, você pode seguir a atualização usando a ferramenta para bloquear os repositórios de pacotes yum para evitar atualizações adicionais. A `pkg-repo` ferramenta está disponível no `/opt/elasticbeanstalk/bin/pkg-repo` diretório de todas as EC2 instâncias em seus ambientes do Elastic Beanstalk.

As alterações usando a `pkg-repo` ferramenta são feitas somente na EC2 instância em que a ferramenta é usada. Elas não afetam outras instâncias nem impedem atualizações futuras do ambiente. Os exemplos fornecidos posteriormente neste tópico explicam como aplicar as alterações em todas as instâncias chamando os comandos `pkg-repo` de scripts e arquivos de configuração.

**Atenção**  
Nós não recomendamos essa ferramenta para a maioria dos usuários. Quaisquer alterações manuais aplicadas a uma versão desbloqueada da plataforma é considerada fora de banda. Essa opção só é viável para os usuários em circunstâncias urgentes que podem aceitar os seguintes riscos:  
Não é possível garantir que as versões dos pacotes sejam consistentes entre todas as instâncias de seus ambientes.
Não há garantias de que ambientes modificados usando-se a ferramenta `pkg-repo` funcionem corretamente. Eles não foram testados e verificados em plataformas compatíveis com o Elastic Beanstalk.
Recomendamos a aplicação de práticas recomendadas que incluem planos de teste e backout. Para ajudar a facilitar as melhores práticas, você pode usar o console do Elastic Beanstalk e o EB CLI para clonar um ambiente e trocar o ambiente. URLs Para obter mais informações sobre como usar essas operações, consulte [Implantações azuis/verdes](using-features.CNAMESwap.md) no capítulo *Gerenciar ambientes* deste guia.

Se você planeja editar manualmente os arquivos de configuração do repositório yum, execute a ferramenta `pkg-repo` primeiro. A ferramenta `pkg-repo` talvez não funcione como o esperado em um ambiente Amazon Linux 2 com arquivos de configuração do repositório yum editados manualmente. Isso ocorre porque a ferramenta pode não reconhecer as alterações de configuração.

Para obter mais informações sobre o repositório de pacotes Amazon Linux, consulte o tópico [Package repository](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#package-repository) no *Amazon EC2 User Guide*.

### comandos pkg-repo
<a name="custom-platforms-scripts.pkg-repo.commands"></a>

Use a sintaxe a seguir para executar os comandos da ferramenta `pkg-repo`.

```
$ /opt/elasticbeanstalk/bin/pkg-repo command [options]
```

Os comandos de `pkg-repo` são os seguintes:
+ **lock**: bloqueia os repositórios de pacotes `yum` em uma versão específica
+ **unlock**: desbloqueia os repositórios de pacotes `yum` de uma versão específica
+ **status**: lista todos os repositórios de pacotes `yum` e o status de bloqueio atual deles
+ **help**: mostra ajuda geral ou ajuda para um comando

As opções a seguir se aplicam aos seguintes comandos.
+ `lock`, `unlock` e `status ` - opções: `-h`,`--help`, ou nenhum (padrão).
+ `help` – opções: `lock`, `unlock`, `status` ou nenhum (padrão).



O exemplo a seguir executa o comando **unlock**:

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock
Amazon Linux 2 core package repo successfully unlocked
Amazon Linux 2 extras package repo successfully unlocked
```

O exemplo a seguir executa o comando **lock**:

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock
Amazon Linux 2 core package repo successfully locked
Amazon Linux 2 extras package repo successfully locked
```

O exemplo a seguir executa o comando **status**:

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo status
Amazon Linux 2 core package repo is currently UNLOCKED
Amazon Linux 2 extras package repo is currently UNLOCKED
```

O exemplo a seguir executa o comando **help** para o comando **lock**.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock
```

O exemplo a seguir executa o comando **help** para a ferramenta `pkg-repo`.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help
```

É possível testar `pkg-repo` usando SSH para se conectar a uma instância no ambiente do Elastic Beanstalk. Uma opção de SSH é o comando CLI do EB [**eb ssh**](eb3-ssh.md).

**nota**  
A ferramenta `pkg-repo` requer privilégios de usuário root para execução. Se você receber um erro de permissão de acesso, execute o comando novamente em `sudo`.  
Você não precisa adicionar `sudo` ao usar a ferramenta nos scripts ou arquivos de configuração que você implanta no seu ambiente. O Elastic Beanstalk executa todos os seus scripts como o usuário raiz.

### exemplos de pkg-repo
<a name="custom-platforms-scripts.pkg-repo.examples"></a>

A seção anterior fornece exemplos de linha de comando para testes em uma EC2 instância individual de um ambiente do Elastic Beanstalk. Essa abordagem pode ser útil para testes. No entanto, ela atualiza apenas uma instância por vez, portanto, não é prático aplicar alterações em todas as instâncias em um ambiente.

Uma abordagem mais pragmática é usar scripts de [hook de plataforma](platforms-linux-extend.hooks.md) ou um arquivo de configuração [`.ebextensions`](ebextensions.md) para aplicar as alterações em todas as instâncias de forma consistente.

O exemplo a seguir chama o `pkg-repo` de um arquivo de configuração da pasta [`.ebextensions`](ebextensions.md). O Elastic Beanstalk executa os comandos no arquivo `update_package.config` quando você implanta seu pacote-fonte de aplicação.

```
.ebextensions
└── update_package.config
```

Para receber a versão mais recente do pacote de *docker**,* essa configuração especifica o pacote de docker no comando **yum update**.

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update docker -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

Essa configuração não especifica nenhum pacote no comando **yum update**. A consequência é que todas as atualizações disponíveis são aplicadas.

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

O exemplo a seguir chama o `pkg-repo` de um script bash como um [hook de plataforma](platforms-linux-extend.hooks.md). O Elastic Beanstalk executa o arquivo de script `update_package.sh` localizado no subdiretório `prebuild`.

```
.platform
└── hooks
    └── prebuild
        └── update_package.sh
```

Para receber a versão mais recente do pacote de *docker**,* esse script especifica o pacote do docker no comando **yum update**. Se o nome do pacote for omitido, todas as atualizações disponíveis serão aplicadas. O exemplo do arquivo de configuração anterior demonstra isso.

```
### update_package.sh ###

#!/bin/bash

/opt/elasticbeanstalk/bin/pkg-repo unlock
yum update docker -y
/opt/elasticbeanstalk/bin/pkg-repo lock
yum clean all -y
rm -rf /var/cache/yum
```

## download-source-bundle (Somente Amazon Linux AMI)
<a name="custom-platforms-scripts.download"></a>

Nas ramificações de plataforma da AMI do Amazon Linux (anteriores ao Amazon Linux 2), o Elastic Beanstalk fornece uma ferramenta adicional, que é `download-source-bundle`. Use essa ferramenta para baixar o código-fonte da sua aplicação durante a implantação da plataforma. A ferramenta está disponível em `/opt/elasticbeanstalk/bin/download-source-bundle`.

O script de exemplo `00-unzip.sh` está localizado na pasta `appdeploy/pre` em instâncias do ambiente. Ele demonstra como usar `download-source-bundle` para baixar o código-fonte da aplicação para a pasta `/opt/elasticbeanstalk/deploy/appsource` durante a implantação.

# Estender as plataformas Linux do Elastic Beanstalk
<a name="platforms-linux-extend"></a>

Este tópico descreve como estender suas plataformas Linux com seus próprios comandos, scripts, software e configurações. Talvez seja necessário estender a plataforma para alterar o servidor proxy padrão e a configuração. Ou talvez você precise personalizar a forma como a plataforma constrói ou inicia sua aplicação.

**Topics**
+ [Buildfile e Procfile](platforms-linux-extend.build-proc.md)
+ [Hooks de plataforma](platforms-linux-extend.hooks.md)
+ [Arquivos de configuração](platforms-linux-extend.config-files.md)
+ [Configuração de proxy reverso](platforms-linux-extend.proxy.md)
+ [Exemplo de aplicativo com extensões](platforms-linux-extend.example.md)

# Buildfile e Procfile
<a name="platforms-linux-extend.build-proc"></a>

Algumas plataformas permitem que você personalize a maneira como cria ou prepara seu aplicativo e especifique os processos que executam seu aplicativo. Cada tópico individual da plataforma menciona especificamente o *Buildfile and/or *Procfile** se a plataforma os suportar. Procure sua plataforma específica em [Plataformas do Elastic Beanstalk](concepts-all-platforms.md).

Para todas as plataformas compatíveis, a sintaxe e a semântica são idênticas e descritas nesta página. Tópicos individuais da plataforma mencionam o uso específico desses arquivos para criar e executar aplicativos em suas respectivas linguagens.

## Buildfile
<a name="platforms-linux-extend.build"></a>

Para especificar um comando personalizado de compilação e configuração para o aplicativo, coloque um arquivo chamado `Buildfile` no diretório raiz da origem do aplicativo. O nome do arquivo diferencia maiúsculas de minúsculas. Use a seguinte sintaxe para o `Buildfile`.

```
<process_name>: <command>
```

O comando no `Buildfile` deve corresponder à expressão regular: `^[A-Za-z0-9_-]+:\s*[^\s].*$`.

O Elastic Beanstalk não monitora a aplicação executada com um `Buildfile`. Use um `Buildfile` para comandos que são executados por breves períodos e são encerrados após a conclusão das tarefas. Para processos de aplicativo de longa execução que não devem ser encerrados, use o [Procfile](#platforms-linux-extend.proc).

Todos os caminhos no `Buildfile` são relativos à raiz do pacote de origem. No seguinte exemplo de um `Buildfile`, o `build.sh` é um script de shell localizado na raiz do pacote de origem.

**Example Buildfile**  

```
make: ./build.sh
```

Se você quiser fornecer etapas de compilação personalizadas, recomendamos que você use os hooks de plataforma `predeploy` para qualquer coisa, exceto os comandos mais simples, em vez de um `Buildfile`. Os hooks de plataforma permitem scripts mais avançados e melhor tratamento de erros. Os hooks de plataforma são descritos na próxima seção.

## Procfile
<a name="platforms-linux-extend.proc"></a>

Para especificar comandos personalizados para iniciar e executar o aplicativo, coloque um arquivo chamado `Procfile` no diretório raiz da origem do aplicativo. O nome do arquivo diferencia maiúsculas de minúsculas. Use a seguinte sintaxe para o `Procfile`. Você pode especificar um ou mais comandos.

```
<process_name1>: <command1>
<process_name2>: <command2>
...
```

Cada linha no `Procfile` deve corresponder à expressão regular: `^[A-Za-z0-9_-]+:\s*[^\s].*$`.

Use um `Procfile` para processos de aplicações de longa execução que não devem ser fechadas. O Elastic Beanstalk espera que os processos sejam executados a partir do `Procfile` para serem executados continuamente. O Elastic Beanstalk monitora esses processos e reinicia qualquer processo que seja encerrado. Para processos de curta execução, use um [Buildfile](#platforms-linux-extend.build).

Todos os caminhos no `Procfile` são relativos à raiz do pacote de origem. O exemplo do `Procfile` a seguir define três processos. O primeiro, chamado `web` no exemplo, é o *principal aplicativo web*.

**Example Procfile**  

```
web: bin/myserver
cache: bin/mycache
foo: bin/fooapp
```

O Elastic Beanstalk configura o servidor de proxy para encaminhar solicitações à sua aplicação Web principal na porta 5000, e esse número de porta pode ser configurado. Um uso comum para um `Procfile` é passar esse número de porta para sua aplicação como um argumento de comando. Para obter detalhes sobre a configuração do proxy, consulte [Configuração de proxy reverso](platforms-linux-extend.proxy.md).

O Elastic Beanstalk captura streams de saída padrão e erros dos processos `Procfile` em arquivos de log. O Elastic Beanstalk fornece nomes aos arquivos de log após o processo e os armazena no `/var/log`. Por exemplo, o processo `web` do exemplo anterior gera logs chamados `web-1.log` e `web-1.error.log` para `stdout` e `stderr`, respectivamente.

# Hooks de plataforma
<a name="platforms-linux-extend.hooks"></a>

Os hooks de plataforma são criados especificamente para estender a plataforma do ambiente. Eles são scripts personalizados e outros arquivos executáveis que são implantados como parte do código-fonte da aplicação, e são executados pelo Elastic Beanstalk durante vários estágios de provisionamento da instância.

**nota**  
Os hooks de plataforma não são compatíveis com as versões da plataforma da AMI do Amazon Linux (anteriores ao Amazon Linux 2).

## Hooks de plataforma de implantação de aplicações
<a name="platforms-linux-extend.hooks.appdeploy"></a>

Uma *implantação de aplicação* ocorre quando você fornece um novo pacote de origem para implantação ou quando faz uma alteração de configuração que exige o encerramento e a recriação de todas as instâncias do ambiente.

Para fornecer hooks de plataforma executados durante a implantação de uma aplicação, coloque os arquivos no diretório `.platform/hooks` do pacote de origem, em um dos seguintes subdiretórios.
+ `prebuild`: estes arquivos serão executados depois que o mecanismo da plataforma do Elastic Beanstalk fizer download e extrair o pacote de origem da aplicação, e antes de configurar a aplicação e o servidor Web.

  Os arquivos `prebuild` são executados depois da execução de comandos encontrados na seção [commands](customize-containers-ec2.md#linux-commands), de qualquer arquivo de configuração, e antes da execução de comandos `Buildfile`.
+ `predeploy`: estes arquivos são executados depois que o mecanismo da plataforma do Elastic Beanstalk configura a aplicação e o servidor Web, e antes de implantá-los em seu local final de runtime.

  Os arquivos `predeploy` são executados depois da execução dos comandos encontrados na seção [container\$1commands](customize-containers-ec2.md#linux-container-commands) de qualquer arquivo de configuração, e antes da execução de comandos `Procfile`.
+ `postdeploy`: estes arquivos são executados depois que o mecanismo da plataforma do Elastic Beanstalk implanta a aplicação e o servidor de proxy.

  Esta é a última etapa do fluxo de trabalho de implantação.

## Hooks de plataforma de implantação de configuração
<a name="platforms-linux-extend.hooks.configdeploy"></a>

Uma *implantação de configuração* ocorre quando você faz alterações de configuração que apenas atualizam instâncias do ambiente sem recriá-las. As atualizações de opção a seguir resultam em uma atualização da configuração.
+ [Propriedades do ambiente e configurações específicas da plataforma](environments-cfg-softwaresettings.md)
+ [Arquivos estáticos](environment-cfg-staticfiles.md)
+ [AWS X-Ray daemon](environment-configuration-debugging.md)
+ [Streaming e armazenamento de logs](environments-cfg-logging.md)
+ Porta da aplicação (para obter detalhes, consulte [Configuração de proxy reverso](platforms-linux-extend.proxy.md))

Para fornecer hooks que são executados durante a implantação de uma configuração, coloque-os no diretório `.platform/confighooks` do pacote de origem. São aplicados os mesmos três subdiretórios que aqueles aplicados para os hooks de implantação de aplicações.

## Mais sobre hooks de plataforma
<a name="platforms-linux-extend.hooks.more"></a>

Os arquivos de hook podem ser arquivos binários ou arquivos de script que começam com uma linha `#!` contendo seu caminho de interpretador, como `#!/bin/bash`. Todos os arquivos devem ter permissão de execução. Use `chmod +x` para definir a permissão de execução em seus arquivos de hook. Em todas as versões de plataforma baseadas no Amazon Linux 2023 e no Amazon Linux 2 lançadas a partir de 29 de abril de 2022, o Elastic Beanstalk concede automaticamente permissões de execução para todos os scripts de hook da plataforma. Nesse caso, não é necessário conceder manualmente as permissões de execução. Para obter uma lista dessas versões da plataforma, consulte as notas de versão do Linux de [29 de abril de 2022 ](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-04-29-linux.html#release-2022-04-29-linux.platforms) no *Guia de notas de versão do AWS Elastic Beanstalk *.

O Elastic Beanstalk executa arquivos em cada um desses diretórios em ordem lexicográfica de nomes de arquivos. Todos os arquivos são executados como o usuário `root`. O diretório de trabalho atual (cwd) para hooks de plataforma é o diretório raiz do aplicativo. Para os arquivos `prebuild` e `predeploy` é o diretório de preparação do aplicativo, e para os arquivos `postdeploy` é o diretório atual do aplicativo. Se um dos arquivos falhar (terminar com um código de saída diferente de zero), a implantação será interrompida e falhará.

Um script de texto de hooks da plataforma pode falhar se contiver caracteres de quebra de linha *retorno de carro/alimentação de linha* (CRLF). Se um arquivo foi salvo em um host Windows e depois transferido para um servidor Linux, ele pode conter quebras de linha CRLF do Windows. Para plataformas lançadas a partir de [29 de dezembro de 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-12-29-linux.html) o Elastic Beanstalk converte automaticamente os caracteres CRLF do Windows em caracteres de quebra de linha *alimentação de linha* (LF) do Linux em arquivos de texto de hooks de plataforma. Se a aplicação for executada em qualquer plataforma Amazon Linux 2 lançada antes dessa data, você precisará converter os caracteres CRLF do Windows em caracteres LF do Linux. Uma forma de fazer isso é criar e salvar o arquivo de script em um host Linux. Ferramentas que convertem esses caracteres também estão disponíveis na internet.

Os arquivos de hook têm acesso a todas as propriedades de ambiente definidas nas opções da aplicação e às variáveis de ambiente do sistema `HOME`, `PATH` e `PORT`. 

Para obter valores de variáveis de ambiente e outras opções de configuração nos scripts de hook de plataforma, é possível usar o utilitário `get-config` que o Elastic Beanstalk fornece em instâncias do ambiente. Para obter detalhes, consulte [Ferramentas de script de plataforma para ambientes Elastic Beanstalk](custom-platforms-scripts.md).

# Arquivos de configuração
<a name="platforms-linux-extend.config-files"></a>

Você pode adicionar [arquivos de configuração](ebextensions.md) ao diretório `.ebextensions` do código-fonte da sua aplicação para configurar vários aspectos do ambiente do Elastic Beanstalk. Entre outras coisas, os arquivos de configuração permitem personalizar software e outros arquivos nas instâncias do ambiente e executar comandos de inicialização nas instâncias. Para obter mais informações, consulte [Personalizar software em servidores Linux](customize-containers-ec2.md).

Você também pode definir [opções de configuração](command-options.md) usando arquivos de configuração. Muitas das opções controlam o comportamento da plataforma, e algumas dessas opções são [específicas da plataforma](command-options-specific.md).

Nas plataformas do Amazon Linux 2 e Amazon Linux 2023, recomendamos o uso de *hooks de plataforma*, *Buildfile* e *Procfile* para configurar e executar código personalizado em suas instâncias de ambiente durante o provisionamento de instâncias. Esses mecanismos são descritos nas seções anteriores desta página. Você ainda pode usar comandos e os comandos de contêiner em arquivos de configuração `.ebextensions`, apesar de não ser fácil trabalhar com eles. Por exemplo, escrever scripts de comando dentro de um arquivo YAML pode ser um desafio do ponto de vista da sintaxe. Você ainda precisa usar arquivos `.ebextensions` de configuração para qualquer script que precise de uma referência a um AWS CloudFormation recurso.

# Configuração de proxy reverso
<a name="platforms-linux-extend.proxy"></a>

Todas as versões de plataformas Amazon Linux 2 e Amazon Linux 2023 usam o nginx como servidor de proxy reverso padrão. As plataformas Tomcat, Node.js, PHP e Python também oferecem suporte ao Apache HTTPD como uma alternativa. Para selecionar o Apache nessas plataformas, defina a opção `ProxyServer` no namespace `aws:elasticbeanstalk:environment:proxy` como `apache`. Todas as plataformas habilitam a configuração do servidor de proxy de forma uniforme, conforme descrito nesta seção.

**nota**  
Nas versões da plataforma da AMI do Amazon Linux (anteriores ao Amazon Linux 2), talvez seja necessário configurar servidores de proxy de forma diferente. É possível encontrar esses detalhes legados nos [respectivos tópicos de plataforma](concepts-all-platforms.md) neste guia.

O Elastic Beanstalk configura o servidor de proxy nas instâncias do ambiente para encaminhar o tráfego da Web para a aplicação Web principal no URL raiz do ambiente; por exemplo, `http://my-env.elasticbeanstalk.com`.

Por padrão, o Elastic Beanstalk configura o proxy para encaminhar solicitações recebidas na porta 80 para a aplicação Web principal na porta 5000. Você pode configurar esse número de porta definindo a propriedade `PORT` do ambiente usando o namespace [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) em um arquivo de configuração, conforme mostrado no exemplo a seguir.

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  PORT
    value:  <main_port_number>
```

Para obter mais informações sobre como configurar variáveis de ambiente para o aplicativo, consulte [Configurações de opção](ebextensions-optionsettings.md).

Seu aplicativo deve ter como base a porta que está configurada para ele no proxy. Se você alterar a porta padrão usando a propriedade `PORT` do ambiente, seu código poderá acessá-la ao ler o valor da variável `PORT` do ambiente. Por exemplo, chame `os.Getenv("PORT")` em Go ou `System.getenv("PORT")` em Java. Se você configurar o proxy para enviar tráfego para vários processos de aplicativo, será possível configurar várias propriedades de ambiente e usar seus valores na configuração de proxy e no código do aplicativo. Outra opção é passar o valor da porta para o processo como um argumento de comando no `Procfile`. Para obter mais informações, consulte [Buildfile e Procfile](platforms-linux-extend.build-proc.md).

## Configurar o nginx
<a name="platforms-linux-extend.proxy.nginx"></a>

O Elastic Beanstalk usa o nginx como proxy reverso padrão para mapear sua aplicação para o balanceador de carga do Elastic Load Balancing. O Elastic Beanstalk oferece uma configuração de nginx padrão que pode ser estendida ou substituída completamente por sua própria configuração.

**nota**  
Ao adicionar ou editar um arquivo de configuração `.conf` do nginx, codifique-o como UTF-8.

Para estender a configuração nginx padrão do Elastic Beanstalk, adicione arquivos de configuração `.conf` a uma pasta denominada `.platform/nginx/conf.d/` no pacote de origem da sua aplicação. A configuração nginx do Elastic Beanstalk inclui arquivos `.conf` nesta pasta automaticamente.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- myconf.conf
`-- other source files
```

Os arquivos de configuração em `.platform/nginx/conf.d/` estão incluídos no bloco `http` da configuração do nginx. Use esse local para configurações globalmente aplicáveis.

Para estender a configuração nginx padrão do bloco `server`, adicione arquivos de configuração `.conf` a uma pasta denominada `.platform/nginx/conf.d/elasticbeanstalk/` no pacote de origem do seu aplicativo. A configuração do Elastic Beanstalk nginx inclui arquivos `.conf` nesta pasta dentro do bloco `server`.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- elasticbeanstalk
|               `-- server.conf
`-- other source files
```

Use esse local para adicionar configurações específicas do servidor, como blocos de localização adicionais, páginas de erro personalizadas ou diretivas em nível de servidor. O exemplo a seguir adiciona um bloco de localização personalizado.

**Example . platform/nginx/conf.d/elasticbeanstalk/server.conf**  

```
location /test {
    return 200 "Hello World!";
    add_header Content-Type text/plain;
}
```

Para substituir completamente a configuração nginx padrão do Elastic Beanstalk, inclua uma configuração em seu pacote de origem em `.platform/nginx/nginx.conf`.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- nginx.conf
`-- other source files
```

Se você substituir a configuração nginx do Elastic Beanstalk, adicione a linha a seguir ao seu `nginx.conf` para extrair as configurações do Elastic Beanstalk para [Relatórios e monitoramento de integridade aprimorados no Elastic Beanstalk](health-enhanced.md), mapeamentos automáticos de aplicações e arquivos estáticos.

```
 include conf.d/elasticbeanstalk/*.conf;
```

## Configurar o Apache HTTPD
<a name="platforms-linux-extend.proxy.httpd"></a>

As plataformas Tomcat, Node.js, PHP e Python permitem escolher o servidor de proxy Apache HTTPD como uma alternativa ao nginx. Esse não é o padrão. O exemplo a seguir configura o Elastic Beanstalk para usar o Apache HTTPD.

**Example .ebextensions/httpd-proxy.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
```
É possível estender a configuração padrão do Apache do Elastic Beanstalk com seus arquivos de configuração adicionais. Também há opção de substituir completamente a configuração padrão do Apache do Elastic Beanstalk.  
Para estender a configuração padrão do Apache do Elastic Beanstalk, adicione arquivos de configuração `.conf` a uma pasta chamada `.platform/httpd/conf.d` no pacote de origem da aplicação. A configuração do Apache do Elastic Beanstalk inclui os arquivos `.conf` nessa pasta automaticamente.  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   -- httpd
|      -- conf.d
|         -- port5000.conf
|         -- ssl.conf
-- index.jsp
```
Por exemplo, a configuração do Apache 2.4 a seguir adiciona um ouvinte na porta 5000.  

**Example . platform/httpd/conf.d/port5000.conf**  

```
listen 5000
<VirtualHost *:5000>
  <Proxy *>
    Require all granted
  </Proxy>
  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>
```
Para substituir completamente a configuração padrão do Apache do Elastic Beanstalk, inclua uma configuração no pacote de origem em `.platform/httpd/conf/httpd.conf`.  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   `-- httpd
|       `-- conf
|           `-- httpd.conf
`-- index.jsp
```
Se você substituir a configuração do Apache do Elastic Beanstalk, adicione as linhas a seguir ao `httpd.conf` para extrair as configurações do Elastic Beanstalk para [Relatórios e monitoramento de integridade aprimorados no Elastic Beanstalk](health-enhanced.md), mapeamentos automáticos de aplicações e arquivos estáticos.  

```
IncludeOptional conf.d/elasticbeanstalk/*.conf
```

# Exemplo de aplicativo com extensões
<a name="platforms-linux-extend.example"></a>

O exemplo a seguir demonstra um pacote de origem de aplicação com vários recursos de capacidade de extensão compatíveis com as plataformas Amazon Linux 2 e Amazon Linux 2023 do Elastic Beanstalk: um `Procfile` e arquivos de configuração `.ebextensions`, hooks personalizados e arquivos de configuração de proxy.

```
~/my-app/
|-- web.jar
|-- Procfile
|-- readme.md
|-- .ebextensions/
|   |-- options.config        # Option settings
|   `-- cloudwatch.config     # Other .ebextensions sections, for example files and container commands
`-- .platform/
    |-- nginx/                # Proxy configuration
    |   |-- nginx.conf
    |   `-- conf.d/
    |       |-- custom.conf
    |       `-- elasticbeanstalk/
    |           `-- server.conf
    |-- hooks/                # Application deployment hooks
    |   |-- prebuild/
    |   |   |-- 01_set_secrets.sh
    |   |   `-- 12_update_permissions.sh
    |   |-- predeploy/
    |   |   `-- 01_some_service_stop.sh
    |   `-- postdeploy/
    |       |-- 01_set_tmp_file_permissions.sh
    |       |-- 50_run_something_after_app_deployment.sh
    |       `-- 99_some_service_start.sh
    `-- confighooks/          # Configuration deployment hooks
        |-- prebuild/
        |   `-- 01_set_secrets.sh
        |-- predeploy/
        |   `-- 01_some_service_stop.sh
        `-- postdeploy/
            |-- 01_run_something_after_config_deployment.sh
            `-- 99_some_service_start.sh
```

**nota**  
Algumas dessas extensões não são compatíveis com as versões da plataforma de AMI do Amazon Linux (anteriores ao Amazon Linux 2).