

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 Go do Elastic Beanstalk
<a name="go-environment"></a>

Este tópico descreve como configurar, criar e executar suas aplicações Go no Elastic Beanstalk.

AWS Elastic Beanstalk suporta várias ramificações de plataforma para diferentes versões da linguagem de programação Go. Consulte [Go](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go) no documento *Plataformas do AWS Elastic Beanstalk * para uma lista completa.

Quanto aos aplicativos simples em Go, há duas formas de implantá-los:
+ Forneça um pacote de origem com um arquivo de origem na raiz chamado `application.go`, que contém o pacote principal do seu aplicativo. O Elastic Beanstalk cria o binário usando o seguinte comando:

  ```
  go build -o bin/application application.go
  ```

  Depois que a aplicação é criada, o Elastic Beanstalk a inicia na porta 5000.
+ Forneça um pacote de origem com um arquivo binário chamado `application`. O arquivo binário pode ficar localizado na raiz do pacote de origem ou no diretório `bin/` do pacote de origem. Se você colocar o arquivo binário `application` nos dois locais, o Elastic Beanstalk usará o arquivo do diretório `bin/`.

  O Elastic Beanstalk inicia essa aplicação na porta 5000.

Em ambos os casos, com nossas ramificações da plataforma Go compatíveis, você também pode fornecer requisitos de módulo em um arquivo `go.mod`. Para obter mais informações, consulte [Migrar para módulos Go](https://blog.golang.org/migrating-to-go-modules) no blog do Go.

Quanto aos aplicativos mais complexos em Go, há duas formas de implantá-los:
+ Forneça um pacote de origem que inclua os arquivos de origem do aplicativo, juntamente com um [Buildfile](go-buildfile.md) e um [Procfile](go-procfile.md). O Buildfile inclui um comando para criar o aplicativo e o Procfile inclui instruções para executar o aplicativo.
+ Forneça um pacote de origem que inclua os arquivos binários do aplicativo, juntamente com um Procfile. O Procfile inclui instruções para executar o aplicativo.

A plataforma Go inclui um servidor de proxy para atender a ativos estáticos e encaminhar o tráfego para sua aplicação. Você pode [estender ou substituir a configuração de proxy padrão](go-nginx.md) para cenários avançados.

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](platforms-linux-extend.md).

## Configurar o ambiente Go
<a name="go-options"></a>

As configurações da plataforma Go permitem que você ajuste o comportamento de suas instâncias da Amazon EC2 . Você pode editar a configuração da instância Amazon do ambiente do Elastic Beanstalk usando o console EC2 do Elastic Beanstalk.

Você pode 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 o ambiente Go no console do Elastic Beanstalk**

1. Abra o console do [Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk e, **na** lista Regiões, selecione sua. Região da AWS

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

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

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

### Opções de log
<a name="go-options-logs"></a>

A seção Log Options 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.
+ **Habilitar a rotação de arquivos de log para o Amazon S3** — Especifica se os arquivos de log das EC2 instâncias da Amazon do seu aplicativo são copiados para o bucket do Amazon S3 associado ao seu aplicativo.

### Arquivos estáticos
<a name="go-options-staticfiles"></a>

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](environment-cfg-staticfiles.md).

### Propriedades de ambiente
<a name="go-options-properties"></a>

A seção **Propriedades do ambiente** permite que você especifique as configurações do ambiente nas EC2 instâncias da Amazon que estão executando seu aplicativo. As propriedades de ambiente são passadas para o aplicativo como pares de chave-valor.

No ambiente Go executado no Elastic Beanstalk, as variáveis de ambiente podem ser acessadas usando a função `os.Getenv`. Por exemplo, você pode ler uma propriedade denominada `API_ENDPOINT` em uma variável com o seguinte código:

```
endpoint := os.Getenv("API_ENDPOINT")
```

Consulte [Variáveis de ambiente e outras configurações de software](environments-cfg-softwaresettings.md) para obter mais informações.

## Namespace de configuração do Go
<a name="go-namespaces"></a>

Você pode usar um [arquivo de configuração](ebextensions.md) para definir opções de configuração e executar outras tarefas de configuração de instância durante implantações. Opções de configuração podem ser [específicas da plataforma](command-options-specific.md) ou aplicáveis a [todas as plataformas](command-options-general.md) no serviço Elastic Beanstalk como um todo. As opções de configuração são organizadas em *namespaces*.

A plataforma Go não define nenhum namespace específico da plataforma. É possível configurar o proxy para servir arquivos estáticos usando o namespace `aws:elasticbeanstalk:environment:proxy:staticfiles`. Para obter detalhes e um exemplo, consulte [Fornecer arquivos estáticos](environment-cfg-staticfiles.md).

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](command-options.md) para obter mais informações.

## A plataforma Go da AMI do Amazon Linux (anterior ao Amazon Linux 2)
<a name="go.alami"></a>

Se o ambiente Go 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 se aplicam somente às ramificações da plataforma baseadas no Amazon Linux AMI (AL1). AL2As ramificações AL2 da plataforma 023/ são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e *exigem configurações diferentes*.
 [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 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](using-features.migration-al.md).

### Namespaces de configuração Go — Amazon Linux AMI () AL1
<a name="go.alami.namespaces"></a>

Você pode usar um [arquivo de configuração](ebextensions.md) para definir opções de configuração e executar outras tarefas de configuração de instância durante implantações. Opções de configuração podem ser [específicas da plataforma](command-options-specific.md) ou aplicáveis a [todas as plataformas](command-options-general.md) no serviço Elastic Beanstalk como um todo. As opções de configuração são organizadas em *namespaces*.

**nota**  
As informações neste tópico se aplicam somente às ramificações da plataforma baseadas no Amazon Linux AMI (AL1). AL2As ramificações AL2 da plataforma 023/ são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e *exigem configurações diferentes*.

A plataforma Go da AMI do Amazon Linux é compatível com um namespace de configuração específico da plataforma, além dos [namespaces compatíveis com todas as plataformas](command-options-general.md). O namespace `aws:elasticbeanstalk:container:golang:staticfiles` permite que você defina opções que mapeiam os caminhos em seu aplicativo Web para as pastas em seu pacote de origem do aplicativo que incluem o conteúdo estático.

Por exemplo, este [arquivo de configuração](ebextensions.md) informa ao servidor de proxy que deve servir arquivos da pasta `staticimages` no caminho `/images`:

**Example .ebextensions/go-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:container:golang:staticfiles:
    /html: statichtml
    /images: staticimages
```

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](command-options.md) para obter mais informações.

# Configurar comandos de inicialização personalizados com um Procfile no Elastic Beanstalk
<a name="go-procfile"></a>

Para especificar comandos personalizados para iniciar um aplicativo em Go, inclua um arquivo chamado `Procfile` na raiz do pacote de origem.

Para obter detalhes sobre como gravar e usar um `Procfile`, consulte [Buildfile e Procfile](platforms-linux-extend.build-proc.md).

**Example Procfile**  

```
web: bin/server
queue_process: bin/queue_processor
foo: bin/fooapp
```

Você deve chamar a aplicação principal `web` e listá-la como o primeiro comando no seu `Procfile`. O Elastic Beanstalk expõe a aplicação principal `web` no URL raiz do ambiente, por exemplo, `http://my-go-env.elasticbeanstalk.com`.

O Elastic Beanstalk também executa quaisquer aplicações cujo nome não tenha o prefixo `web_`, mas essas aplicações estão disponíveis somente dentro da instância.

O Elastic Beanstalk espera que os processos sejam executados a partir do `Procfile` para serem executados continuamente. O Elastic Beanstalk monitora essas aplicações e reinicia qualquer processo que seja encerrado. Para processos de curta execução, use um comando do [Buildfile](go-buildfile.md).

## Usar um Procfile na AMI do Amazon Linux (anterior ao Amazon Linux 2)
<a name="go-procfile.alami"></a>

Se o ambiente Go 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 se aplicam somente às ramificações da plataforma baseadas no Amazon Linux AMI (AL1). AL2As ramificações AL2 da plataforma 023/ são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e *exigem configurações diferentes*.
 [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 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](using-features.migration-al.md).

### Passagem de portas — Amazon Linux AMI (AL1)
<a name="go-procfile.alami.ports"></a>

**nota**  
As informações neste tópico se aplicam somente às ramificações da plataforma baseadas no Amazon Linux AMI (AL1). AL2As ramificações AL2 da plataforma 023/ são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e *exigem configurações diferentes*.

O Elastic Beanstalk configura o proxy nginx para encaminhar solicitações à aplicação no número de porta especificado na [propriedade de ambiente](go-environment.md#go-options) `PORT` da aplicação. O aplicativo sempre deve escutar nessa porta. Você pode acessar essa variável em seu aplicativo chamando o método `os.Getenv("PORT")`.

O Elastic Beanstalk usa o número de porta especificado na propriedade de ambiente `PORT` para a porta da primeira aplicação no `Procfile` e, depois, incrementa o número da porta em 100 para cada aplicação subsequente no `Procfile`. Se a propriedade de ambiente `PORT` não estiver definida, o Elastic Beanstalk usará 5000 para a porta inicial.

No exemplo anterior, a propriedade de ambiente `PORT` para a aplicação `web` é 5000, para a aplicação `queue_process` é 5100 e para a aplicação `foo` é 5200. 

Você pode especificar a porta inicial definindo a opção `PORT` com o namespace [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment), como mostra o exemplo a seguir. 

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

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

# Construção e configuração personalizadas com um Buildfile no Elastic Beanstalk
<a name="go-buildfile"></a>

Para especificar um comando de criação e configuração personalizado para o aplicativo em Go, inclua um arquivo chamado `Buildfile` na raiz do pacote de origem. O nome do arquivo diferencia maiúsculas de minúsculas. Use o seguinte formato para o `Buildfile`: 

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

O comando no `Buildfile` deve corresponder à expressão regular: `^[A-Za-z0-9_]+:\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](go-procfile.md).

No seguinte exemplo de `Buildfile`, `build.sh` é um script de shell localizado na raiz do pacote de origem:

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

Todos os caminhos no `Buildfile` são relativos à raiz do pacote de origem. Se você já sabe onde os arquivos residem na instância, inclua os caminhos absolutos no `Buildfile`.

# Configurar o servidor de proxy
<a name="go-nginx"></a>

O Elastic Beanstalk usa o nginx como proxy reverso para mapear sua aplicação para o balanceador de carga do Elastic Load Balancing na porta 80. O Elastic Beanstalk oferece uma configuração nginx padrão que você pode estender ou substituir completamente por sua própria configuração.

Por padrão, o Elastic Beanstalk configura o proxy nginx para encaminhar solicitações à sua aplicação na porta 5000. Você pode substituir a porta padrão definindo a [propriedade do ambiente](go-environment.md#go-options) `PORT` para a porta de escuta do seu aplicativo principal.

**nota**  
A porta que seu aplicativo escuta não afeta a porta na qual o servidor nginx escuta para receber solicitações do balanceador de carga.

**Configurar o servidor proxy na sua versão da plataforma**  
Todas as AL2 plataformas AL2 023/ suportam um recurso de configuração de proxy uniforme. Para obter mais informações sobre como configurar o servidor proxy nas versões da sua plataforma executando AL2 023/AL2, consulte. [Configuração de proxy reverso](platforms-linux-extend.proxy.md) 

## Configurar o proxy da AMI do Amazon Linux (anterior ao Amazon Linux 2)
<a name="go-nginx.alami"></a>

**Observações**  
As informações neste tópico se aplicam somente às ramificações da plataforma baseadas no Amazon Linux AMI (AL1). AL2As ramificações AL2 da plataforma 023/ são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e *exigem configurações diferentes*.
 [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 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](using-features.migration-al.md).

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

### Estendendo e substituindo a configuração padrão do proxy — Amazon Linux AMI () AL1
<a name="go-nginx.alami.extending"></a>

O Elastic Beanstalk usa nginx como proxy reverso para mapear a aplicação para o balanceador de carga na porta 80. Para fornecer a sua própria configuração de nginx, substitua a configuração padrão fornecida pelo Elastic Beanstalk, incluindo o arquivo `.ebextensions/nginx/nginx.conf` no pacote de origem. Se esse arquivo estiver presente, o Elastic Beanstalk o usará no lugar do arquivo de configuração padrão de nginx.

Para incluir diretivas além daquelas no bloco `nginx.conf` `http`, forneça também os arquivos de configuração adicionais no diretório `.ebextensions/nginx/conf.d/` do pacote de origem. Todos os arquivos desse diretório devem ter a extensão `.conf`. 

Para aproveitar a funcionalidade fornecida pelo Elastic Beanstalk, como [Relatórios e monitoramento de integridade aprimorados no Elastic Beanstalk](health-enhanced.md), mapeamentos de aplicações automáticos e arquivos estáticos, inclua a linha a seguir no bloco `server` do arquivo de configuração de nginx:

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