

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

# Personalização avançada de ambiente com arquivos de configuração (`.ebextensions`)
<a name="ebextensions"></a>

Você pode adicionar arquivos de AWS Elastic Beanstalk configuração (`.ebextensions`) ao código-fonte do seu aplicativo web para configurar seu ambiente e personalizar os AWS recursos que ele contém. Arquivos de configuração são documentos formatados em YAML ou JSON com uma extensão de arquivo `.config` que você coloca em uma pasta `.ebextensions` e implanta no [pacote de origem](applications-sourcebundle.md) da sua aplicação.

**Example .ebextensions/ .config network-load-balancer**  
Este exemplo facilita uma alteração de configuração. Ele modifica uma opção de configuração para definir o tipo de balanceador de carga do ambiente como Network Load Balancer.  

```
option_settings:
  aws:elasticbeanstalk:environment:
    LoadBalancerType: network
```

Recomendamos usar o YAML para seus arquivos de configuração, pois é mais legível do que o JSON. YAML é compatível com comentários, comandos de várias linhas, várias alternativas para usar aspas e muito mais. No entanto, é possível fazer qualquer alteração de configuração em arquivos de configuração do Elastic Beanstalk de forma idêntica usando YAML ou JSON.

**Dica**  
Quando você estiver desenvolvendo ou testando novos arquivos de configuração, inicie um ambiente limpo executando o aplicativo padrão e implante nele. Arquivos de configuração formatados incorretamente causarão falha irrecuperável do início de um novo ambiente.

A seção `option_settings` de um arquivo de configuração define valores para as [opções de configuração](command-options.md). As opções de configuração permitem que você configure seu ambiente do Elastic Beanstalk AWS , os recursos nele contidos e o software que executa seu aplicativo. Os arquivos de configuração são apenas uma das várias maneiras de definir as opções de configuração.

A [`Resources`seção](environment-resources.md) permite que você personalize ainda mais os recursos no ambiente do seu aplicativo e defina AWS recursos adicionais além da funcionalidade fornecida pelas opções de configuração. Você pode adicionar e configurar qualquer recurso suportado pelo AWS CloudFormation, que o Elastic Beanstalk usa para criar ambientes.

As outras seções de um arquivo de configuração (`packages`,`sources`,`files`,`users`,`groups`, `commands``container_commands`, e`services`) permitem que você configure as EC2 instâncias que são executadas em seu ambiente. Sempre que um servidor é iniciado no ambiente, o Elastic Beanstalk executa as operações definidas nessas seções para preparar o sistema operacional e o sistema de armazenamento para a aplicação.

Para obter exemplos de .ebextensions usados com frequência, consulte os [Arquivos de configuração do repositório do Elastic Beanstalk](https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files).

**Requisitos**
+ **Local**: o Elastic Beanstalk processará todas as pastas `.ebextensions` presentes na sua implantação. No entanto, recomendamos que você coloque todos os seus arquivos de configuração em uma única pasta, denominada `.ebextensions`, na raiz do seu pacote de código-fonte. Pastas que começam com um ponto podem ser ocultas por navegadores de arquivos, portanto, certifique-se de que a pasta é adicionada quando você criar seu pacote de origem. Para obter mais informações, consulte [Crie um pacote de origem da aplicação Elastic Beanstalk](applications-sourcebundle.md).
+ **Nomenclatura**: os arquivos de configuração devem ter a extensão de arquivo `.config`.
+ **Formatação**: os arquivos de configuração devem ser compatíveis com as especificações de YAML ou JSON.

  Ao usar o YAML, sempre use espaços para recuar as chaves em diferentes níveis de aninhamento. Para obter mais informações sobre YAML, consulte [YAML Ain't Markup Language (YAML™) versão 1.1](http://yaml.org/spec/current.html).
+ **Exclusividade**: use cada chave somente uma vez em cada arquivo de configuração.
**Aviso**  
Se você usar uma chave (por exemplo, `option_settings`) duas vezes no mesmo arquivo de configuração, uma das seções será descartada. Combine seções duplicadas em uma única seção ou coloque-as em arquivos de configuração separados.

O processo de implantação varia ligeiramente, dependendo do cliente que você usa para gerenciar seus ambientes. Para detalhes, consulte estas seções:
+ [Console do Elastic Beanstalk](environment-configuration-methods-during.md#configuration-options-during-console-ebextensions)
+ [EB CLI](environment-configuration-methods-during.md#configuration-options-during-ebcli-ebextensions)
+ [AWS CLI](environment-configuration-methods-during.md#configuration-options-during-awscli-ebextensions)

**Topics**
+ [Configurações de opção](ebextensions-optionsettings.md)
+ [Personalizar software em servidores Linux](customize-containers-ec2.md)
+ [Personalizar software em Windows Servers](customize-containers-windows-ec2.md)
+ [Adicionar e personalizar recursos do ambiente do Elastic Beanstalk](environment-resources.md)

# Configurações de opção
<a name="ebextensions-optionsettings"></a>

É possível usar a chave `option_settings` para modificar a configuração do Elastic Beanstalk e definir variáveis que podem ser recuperadas da aplicação usando variáveis de ambiente. Alguns namespaces permitem estender o número e especificar os nomes dos parâmetros. Para obter uma lista de namespaces e as opções de configuração, consulte [Opções de configuração](command-options.md).

É possível também aplicar as configurações de opção diretamente a um ambiente durante a criação ou a atualização dele. As configurações aplicadas diretamente ao ambiente substituem aquelas referentes às mesmas opções nos arquivos de configuração. Se você remover as configurações de uma configuração do ambiente, as dos arquivos de configuração entrarão em vigor. Para mais detalhes, consulte [Precedência](command-options.md#configuration-options-precedence).

## Sintaxe
<a name="ebextensions-optionsettings-syntax"></a>

A sintaxe padrão para configurações de opção é uma matriz de objetos, cada um com uma chave `namespace`, `option_name` e `value`.

```
option_settings:
  - namespace:  namespace
    option_name:  option name
    value:  option value
  - namespace:  namespace
    option_name:  option name
    value:  option value
```

A chave `namespace` é opcional. Se você não especificar um namespace, o padrão usado será `aws:elasticbeanstalk:application:environment`:

```
option_settings:
  - option_name:  option name
    value:  option value
  - option_name:  option name
    value:  option value
```

O Elastic Beanstalk também é compatível com uma sintaxe abreviada para configurações de opção que permite especificar opções como pares de chave/valor sob o namespace:

```
option_settings:
  namespace:
    option name: option value
    option name: option value
```

## Exemplos
<a name="ebextensions-optionsettings-snippet"></a>

Os exemplos a seguir definem uma opção específica da plataforma Tomcat no namespace `aws:elasticbeanstalk:container:tomcat:jvmoptions` e uma propriedade de ambiente chamada `MYPARAMETER`.

No formato YAML padrão:

**Example .ebextensions/options.config**  

```
option_settings:
  - namespace:  aws:elasticbeanstalk:container:tomcat:jvmoptions
    option_name:  Xmx
    value:  256m
  - option_name: MYPARAMETER
    value: parametervalue
```

No formato abreviado:

**Example .ebextensions/options.config**  

```
option_settings:
  aws:elasticbeanstalk:container:tomcat:jvmoptions:
    Xmx: 256m
  aws:elasticbeanstalk:application:environment:
    MYPARAMETER: parametervalue
```

Em JSON:

**Example .ebextensions/options.config**  

```
{
  "option_settings": [
    {
      "namespace": "aws:elasticbeanstalk:container:tomcat:jvmoptions",
      "option_name": "Xmx",
      "value": "256m"
    },
    {
      "option_name": "MYPARAMETER",
      "value": "parametervalue"
    }
  ]
}
```

# Personalizar software em servidores Linux
<a name="customize-containers-ec2"></a>

Esta seção descreve o tipo de informação que você pode incluir em um arquivo de configuração para personalizar o software em suas EC2 instâncias que executam Linux. Para obter informações gerais sobre como personalizar e configurar ambientes, consulte [Configurar ambientes do Elastic Beanstalk](customize-containers.md). Para obter informações sobre a personalização do software em suas EC2 instâncias que executam o Windows, consulte[Personalizar software em Windows Servers](customize-containers-windows-ec2.md).

Você pode personalizar e configurar o software do qual seu aplicativo depende. É possível adicionar comandos a serem executados durante o provisionamento da instância, definir usuários e grupos do Linux e baixar ou criar arquivos diretamente nas instâncias do ambiente. Esses arquivos podem ser dependências exigidas pela aplicação, por exemplo, pacotes adicionais do repositório yum, ou podem ser arquivos de configuração, por exemplo, um arquivo de configuração de proxy para substituir configurações específicas usadas como padrão pelo Elastic Beanstalk.

**Observações**  
Em plataformas do Amazon Linux 2, em vez de fornecer arquivos e comandos em arquivos de configuração .ebextensions, é altamente recomendável usar *Buildfile*. *Procfile*, e *hooks de plataforma* sempre que possível para configurar e executar um código personalizado nas instâncias do ambiente durante o provisionamento da instância. Para obter detalhes sobre esses mecanismos, consulte [Estender as plataformas Linux do Elastic Beanstalk](platforms-linux-extend.md).
YAML depende de um recuo consistente. Compare o nível de recuo ao substituir o conteúdo em um arquivo de configuração de exemplo e se confira se o editor de texto usa espaços, e não caracteres de tabulação, como recuo.

Os arquivos de configuração oferecem suporte às seguintes chaves que afetam o servidor Linux no qual seu aplicativo é executado.

**Topics**
+ [Pacotes](#linux-packages)
+ [Groups (Grupos)](#linux-groups)
+ [Usuários](#linux-users)
+ [Fontes](#linux-sources)
+ [Arquivos](#linux-files)
+ [Comandos](#linux-commands)
+ [Services](#linux-services)
+ [Comandos de contêiner](#linux-container-commands)
+ [Exemplo: uso de CloudWatch métricas personalizadas da Amazon](customize-containers-cw.md)

As chaves são processadas na ordem em que aparecem listadas aqui.

Assista a seus [eventos](using-features.events.md) de ambiente enquanto desenvolve e testa os arquivos de configuração. O Elastic Beanstalk ignora um arquivo de configuração que contém erros de validação, como uma chave inválida, e não processa nenhuma das outras chaves no mesmo arquivo. Quando isso acontece, o Elastic Beanstalk adiciona um evento de aviso ao log de eventos.

## Pacotes
<a name="linux-packages"></a>

Use a chave `packages` para fazer download e instalar aplicativos e componentes predefinidos.

### Sintaxe
<a name="linux-packages-syntax"></a>

```
packages: 
  name of package manager:
    package name: version
    ...
  name of package manager:
    package name: version
    ...
  ...
```

Você pode especificar vários pacotes sob cada chave do gerenciador de pacotes.

### Formatos de pacote com suporte
<a name="linux-packages-support"></a>

Atualmente, o Elastic Beanstalk é compatível com os seguintes gerenciadores de pacote: yum, rubygems, python e rpm. Os pacotes são processados na seguinte ordem: rpm, yum e, em seguida, rubygems e python. Não há ordem entre rubygems e python. Dentro de cada gerenciador de pacotes, a ordem de instalação do pacote não é garantida. Use um gerenciador de pacotes compatível com o seu sistema operacional.

**nota**  
O Elastic Beanstalk é compatível com dois gerenciadores de pacotes subjacentes para Python, pip e easy\$1install. No entanto, na sintaxe do arquivo de configuração, especifique o nome do gerenciador de pacotes como `python`. Quando você usa um arquivo de configuração para especificar um gerenciador de pacotes Python, o Elastic Beanstalk usa o Python 2.7. Se seu aplicativo conta com uma versão diferente do Python, especifique os pacotes a serem instalados em um arquivo `requirements.txt`. Para obter mais informações, consulte [Especificação de dependências usando um arquivo de requisitos no Elastic Beanstalk](python-configuration-requirements.md).

### Como especificar versões
<a name="linux-packages-versions"></a>

Dentro de cada gerenciador de pacotes, cada pacote é especificado como um nome de pacote e uma lista de versões. A versão pode ser uma sequência, uma lista de versões ou uma sequência ou lista vazia. Uma sequência ou lista vazia indica que você deseja a versão mais recente. Para o gerenciador de rpm, a versão é especificada como um caminho para um arquivo no disco ou um URL. Não há suporte para caminhos relativos.

Se você especificar uma versão de um pacote, o Elastic Beanstalk tentará instalar essa versão, mesmo que uma versão mais recente do pacote já esteja instalada na instância. Se uma versão mais recente já estiver instalada, a implantação não terá êxito. Alguns gerenciadores de pacotes oferecem suporte a várias versões, mas outros não. Verifique a documentação do seu gerenciador de pacotes para obter mais informações. Se você não especificar uma versão e uma versão do pacote já estiver instalada, o Elastic Beanstalk não instalará uma nova versão, pois vai considerar que você deseja manter e usar a versão existente.

### Trecho de exemplo
<a name="linux-packages-snippet"></a>

O trecho a seguir especifica um URL da versão para rpm, solicita a versão mais recente do yum e a versão 0.10.2 de chef do rubygems.

```
packages: 
  yum:
    libmemcached: [] 
    ruby-devel: []
    gcc: []
  rpm:
    epel: http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
  rubygems: 
    chef: '0.10.2'
```

## Groups (Grupos)
<a name="linux-groups"></a>

Você pode usar a `groups` chave para criar Linux/UNIX grupos e atribuir grupos IDs. Para criar um grupo, adicione um novo par de chave/valor que mapeie um novo nome de grupo para um ID de grupo opcional. A chave de grupos pode conter um ou mais nomes de grupos. A tabela a seguir lista as chaves disponíveis.

### Sintaxe
<a name="linux-groups-syntax"></a>

```
groups:
  name of group: {}
  name of group:
    gid: "group id"
```

### Opções
<a name="linux-groups-options"></a>

`gid`  
Um número de ID de grupo.  
Se um ID de grupo for especificado e o grupo já existir por nome, a criação do grupo não terá êxito. Se outro grupo tiver o ID de grupo especificado, o sistema operacional poderá rejeitar a respectiva criação.

### Trecho de exemplo
<a name="linux-groups-snippet"></a>

O trecho a seguir especifica um grupo chamado groupOne, sem atribuir um ID de grupo, e um grupo chamado groupTwo que especificou um valor de ID de grupo 45.

```
groups:
  groupOne: {}
  groupTwo:
    gid: "45"
```

## Usuários
<a name="linux-users"></a>

Você pode usar a `users` chave para criar Linux/UNIX usuários na EC2 instância.

### Sintaxe
<a name="linux-users-syntax"></a>

```
users:
  name of user:
    groups:
      - name of group
    uid: "id of the user"
    homeDir: "user's home directory"
```

### Opções
<a name="linux-users-options"></a>

`uid`  
Um ID de usuário. Haverá falha no processo de criação se o nome do usuário existir com outro ID de usuário. Se o ID de usuário já estiver atribuído a um usuário existente, o sistema operacional poderá rejeitar a solicitação de criação.

`groups`  
Uma lista de nomes de grupos. O usuário é adicionado a cada grupo da lista.

`homeDir`  
O diretório base de usuário.

Os usuários são criados como usuários de sistema não interativos com um shell de `/sbin/nologin`. Este é o design e não pode ser modificado.

### Trecho de exemplo
<a name="linux-users-snippet"></a>

```
users:
  myuser:
    groups:
      - group1
      - group2
    uid: "50"
    homeDir: "/tmp"
```

## Fontes
<a name="linux-sources"></a>

Você pode usar a `sources` chave para baixar um arquivo de um URL público e descompactá-lo em um diretório de destino na EC2 instância.

### Sintaxe
<a name="linux-sources-syntax"></a>

```
sources:
  target directory: location of archive file
```

### Formatos com suporte
<a name="linux-sources-support"></a>

Os formatos com suporte são tar, tar\$1gzip, tar\$1bz2 e zip. Você pode fazer referência a locais externos, como o Amazon Simple Storage Service (Amazon S3) (por exemplo, `https://amzn-s3-demo-bucket.s3.amazonaws.com/myobject`), desde que o URL seja publicamente acessível.

### Trecho de exemplo
<a name="linux-sources-example"></a>

O exemplo a seguir faz download de um arquivo .zip público de um bucket do Amazon S3 e o descompacta em `/etc/myapp`:

```
sources:  
  /etc/myapp: https://amzn-s3-demo-bucket.s3.amazonaws.com/myobject
```

**nota**  
Não reutilize o mesmo caminho de destino para várias extrações. A extração de outra origem para o mesmo caminho de destino substituirá em vez de anexar aos conteúdos. 

## Arquivos
<a name="linux-files"></a>

Você pode usar a `files` chave para criar arquivos na EC2 instância. O conteúdo pode estar embutido no arquivo de configuração ou o conteúdo pode ser obtido de um URL. Os arquivos são gravados em disco em ordem lexicográfica.

É possível usar a chave `files` para fazer download de arquivos privados do Amazon S3 ao fornecer o perfil da instância para autorização.

Se o caminho do arquivo especificado já existir na instância, o arquivo existente será mantido com a extensão `.bak` anexada ao nome.

### Sintaxe
<a name="linux-files-syntax"></a>

```
files:  
  "target file location on disk": 
     mode: "six-digit octal value"
     owner: name of owning user for file
     group: name of owning group for file
     source: URL
     authentication: authentication name:

  "target file location on disk": 
     mode: "six-digit octal value"
     owner: name of owning user for file
     group: name of owning group for file
     content: |
      # this is my
      # file content
     encoding: encoding format
     authentication: authentication name:
```

### Opções
<a name="linux-files-options"></a>

`content`  
Conteúdo de sequência para adicionar ao arquivo. Especifique `content` ou `source`, mas não ambos.

`source`  
URL de um arquivo para fazer download: Especifique `content` ou `source`, mas não ambos.

`encoding`  
O formato de codificação da sequência especificada com a opção `content`.  
Valores válidos: `plain` \$1 `base64`

`group`  
Grupo do Linux que possui o arquivo.

`owner`  
Usuário do Linux que possui o arquivo.

`mode`  
Um valor octal de seis dígitos que representa o modo para este arquivo. Sem suporte para sistemas Windows. Use os primeiros três dígitos para symlinks e os três últimos dígitos para configurar permissões. Para criar um symlink, especifique `120xxx`, em que `xxx` define as permissões do arquivo de destino. Para especificar permissões para um arquivo, use os últimos três dígitos, como `000644`.

`authentication`  
O nome de um [método de autenticação do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-authentication.html) para usar. É possível adicionar métodos de autenticação aos metadados do grupo de Auto Scaling com a chave Resources. Veja um exemplo a seguir.

### Trecho de exemplo
<a name="linux-files-snippet"></a>

```
files:
  "/home/ec2-user/myfile" :
    mode: "000755"
    owner: root
    group: root
    source: http://foo.bar/myfile
 
  "/home/ec2-user/myfile2" :
    mode: "000755"
    owner: root
    group: root
    content: |
      this is my
      file content
```

Exemplo usando um symlink. Isso cria um link `/tmp/myfile2.txt` que aponta para o arquivo existente `/tmp/myfile1.txt`.

```
files:
  "/tmp/myfile2.txt" :
    mode: "120400"
    content: "/tmp/myfile1.txt"
```

O exemplo a seguir usa a chave Resources para adicionar um método de autenticação chamado S3Auth e o usa para fazer download de um arquivo privado de um bucket do Amazon S3:

```
Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["amzn-s3-demo-bucket2"]
          roleName:
            "Fn::GetOptionSetting":
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"

files:
  "/tmp/data.json" :
    mode: "000755"
    owner: root
    group: root
    authentication: "S3Auth"
    source: https://elasticbeanstalk-us-west-2-123456789012.s3-us-west-2.amazonaws.com/data.json
```

## Comandos
<a name="linux-commands"></a>

Você pode usar a `commands` chave para executar comandos na EC2 instância. Os comandos executados antes da configuração do aplicativo e do servidor web e da extração do arquivo de versão do aplicativo.

Os comandos especificados são executadas como o usuário raiz e processados em ordem alfabética por nome. Por padrão, os comandos são executados no diretório raiz. Para executar comandos de outro diretório, use a opção `cwd`.

Para solucionar problemas com seus comandos, você pode encontrar a saída deles nos [logs da instância](using-features.logging.md).

### Sintaxe
<a name="linux-commands-syntax"></a>

```
commands:
  command name: 
    command: command to run
    cwd: working directory
    env: 
      variable name: variable value
    test: conditions for command 
    ignoreErrors: true
```

### Opções
<a name="linux-commands-options"></a>

`command`  
Uma matriz ([coleção de sequência em bloco](http://yaml.org/spec/1.2/spec.html#id2759963) em sintaxe de YAML) ou uma cadeia que especifica o comando a ser executado. Algumas observações importantes:  
+ Se você usar uma cadeia, você não precisa colocar a cadeia inteira entre aspas. Se você usar aspas, pule as ocorrências literais do mesmo tipo de citação.
+ Se você usar uma matriz, não precisará de caracteres de espaço de escape ou de aspas para parâmetros de comandos. Cada elemento de matriz é um único argumento de comando. Não use uma matriz para especificar vários comandos.
Os exemplos a seguir são todos equivalentes:  

```
commands:
  command1:
    command: git commit -m "This is a comment."
  command2:
    command: "git commit -m \"This is a comment.\""
  command3:
    command: 'git commit -m "This is a comment."'
  command4:
    command:
      - git
      - commit
      - -m
      - This is a comment.
```
Para especificar múltiplos comandos, use um [escalar de bloco literal](http://yaml.org/spec/1.2/spec.html#id2760844), como exibido no exemplo a seguir.  

```
commands:
  command block:
    command: |
      git commit -m "This is a comment."
      git push
```

`env`  
(Opcional) Define variáveis de ambiente para o comando. Essa propriedade substitui, em vez de anexar, o ambiente existente.

`cwd`  
(Opcional) O diretório de trabalho. Se não for especificado, os comandos serão executados a partir do diretório raiz (/).

`test`  
(Opcional) Um comando que deve retornar o valor `true` (código de saída 0) para que o Elastic Beanstalk processe o comando, por exemplo, um script de shell, contido na chave `command`.

`ignoreErrors`  
(Opcional) Um valor booliano que determina se outros comandos deverão ser executados se houver falha no comando incluído na chave `command` (retorna um valor diferente de zero). Defina esse valor como `true` para continuar executando os comandos mesmo se houver falha no comando. Defina-o como `false` para interromper a execução dos comandos em caso de falha no comando. O valor padrão é `false`.

### Trecho de exemplo
<a name="linux-commands-snippet"></a>

O exemplo a seguir executa um trecho de script do Python.

```
commands:
  python_install:
    command: myscript.py
    cwd: /home/ec2-user
    env:
      myvarname: myvarvalue
    test: "[ -x /usr/bin/python ]"
```

## Services
<a name="linux-services"></a>

É possível usar a chave `services` para definir quais serviços deverão ser iniciados ou interrompidos quando a instância for executada. A chave `services` também permite especificar dependências de origens, pacotes e arquivos para que, se for necessária uma reinicialização devido à instalação de arquivos, o Elastic Beanstalk reinicie o serviço.

### Sintaxe
<a name="linux-services-syntax"></a>

```
services:
  sysvinit:
    name of service:
      enabled: "true"
      ensureRunning: "true"
      files: 
        - "file name"
      sources: 
        - "directory"	
      packages: 
        name of package manager:
          "package name[: version]"
      commands: 
        - "name of command"
```

### Opções
<a name="linux-services-options"></a>

`ensureRunning`  
Defina `true` para garantir que o serviço esteja em execução depois que o Elastic Beanstalk for concluído.  
Defina `false` para garantir que o serviço não esteja em execução depois que o Elastic Beanstalk for concluído.  
Omita essa chave para não fazer nenhuma alteração no estado do serviço.

`enabled`  
Defina como `true` para garantir que o serviço seja iniciado automaticamente na inicialização.  
Defina como `false` para garantir que o serviço não seja iniciado automaticamente na inicialização.  
Omita essa chave para não fazer nenhuma alteração nessa propriedade.

`files`  
Uma lista de arquivos. Se o Elastic Beanstalk alterar um diretamente por meio do bloco de arquivos, o serviço será reiniciado.

`sources`  
Uma lista de diretórios. Se o Elastic Beanstalk expandir um arquivo em um desses diretórios, o serviço será reiniciado.

`packages`  
Um mapa do gerenciador de pacotes para uma lista de nomes de pacotes. Se o Elastic Beanstalk instalar ou atualizar um desses pacotes, o serviço será reiniciado.

`commands`  
Uma lista de nomes de comandos. Se o Elastic Beanstalk executar o comando especificado, o serviço será reiniciado.

### Trecho de exemplo
<a name="linux-services-snippet"></a>

Veja, a seguir, um trecho de exemplo:

```
services: 
  sysvinit:
    myservice:
      enabled: true
      ensureRunning: true
```

## Comandos de contêiner
<a name="linux-container-commands"></a>

É possível usar a chave `container_commands` para executar comandos que afetam o código-fonte do seu aplicativo. Os comandos de contêiner são executados depois que o aplicativo e o servidor Web são configurados e o arquivo de versão do aplicativo é extraído, mas antes da implantação da versão do aplicativo. Os comandos que não são de contêiner e outras operações de personalização são executados antes da extração do código-fonte do aplicativo.

Os comandos especificados são executadas como o usuário raiz e processados em ordem alfabética por nome. Os comandos de contêiner são executados no diretório de preparação, onde seu código-fonte é extraído antes de ser implantado no servidor de aplicativo. Quaisquer alterações que você fizer em seu código-fonte no diretório de preparação com um comando de contêiner serão incluídas quando a fonte for implantada em seu local final.

**nota**  
A saída dos comandos de contêiner é registrada no log da instância `cfn-init-cmd.log`. Para obter mais informações sobre como recuperar e visualizar registros de instâncias, consulte [Visualização de registros de EC2 instâncias da Amazon](using-features.logging.md).

É possível usar `leader_only` para somente executar o comando em uma única instância ou configurar um `test` para somente executar o comando quando um comando de teste for avaliado como `true`. Os comandos de contêiner somente líderes são executados apenas durante a criação do ambiente e as implantações, enquanto outros comandos e operações de personalização de servidor são executados sempre que uma instância é provisionada ou atualizada. Os comandos de contêiner somente líderes não são executados devido a alterações na configuração de execução, como uma alteração no ID do AMI ou no tipo de instância.

### Sintaxe
<a name="linux-container-commands-syntax"></a>

```
container_commands:
  name of container_command:
    command: "command to run"
    leader_only: true
  name of container_command:
    command: "command to run"
```

### Opções
<a name="linux-container-commands-options"></a>

`command`  
Uma string ou matriz de strings para execução.

`env`  
(Opcional) Defina variáveis de ambiente antes de executar o comando, substituindo qualquer valor existente.

`cwd`  
(Opcional) O diretório de trabalho. Por padrão, este é o diretório de preparação do aplicativo descompactado.

`leader_only`  
(Opcional) Somente execute o comando em uma única instância escolhida pelo Elastic Beanstalk. Os comandos de contêiner somente líderes são executados antes dos outros comandos de contêiner. Um comando pode ser somente líder ou ter um `test`, mas não as duas coisas (`leader_only` tem precedência).

`test`  
(Opcional) Execute um comando de teste que deve retornar `true` para executar o comando de contêiner. Um comando pode ser somente líder ou ter um `test`, mas não as duas coisas (`leader_only` tem precedência).

`ignoreErrors`  
(Opcional) Não falhar implantações se o comando de contêiner retornar um valor diferente de 0 (êxito). Defina como `true` para habilitar.

### Trecho de exemplo
<a name="linux-container-commands-snippet"></a>

Veja, a seguir, um trecho de exemplo.

```
container_commands:
  collectstatic:
    command: "django-admin.py collectstatic --noinput"
  01syncdb:
    command: "django-admin.py syncdb --noinput"
    leader_only: true
  02migrate:
    command: "django-admin.py migrate"
    leader_only: true
  99customize:
    command: "scripts/customize.sh"
```

# Exemplo: uso de CloudWatch métricas personalizadas da Amazon
<a name="customize-containers-cw"></a>

Este tópico fornece um exemplo de configuração que integra as métricas do Elastic Beanstalk CloudWatch com o agente da Amazon para plataformas baseadas no Amazon Linux 2 e versões posteriores. O exemplo de configuração usa arquivos e comandos em um arquivo de configuração `.ebextensions`.

 CloudWatch A Amazon é um serviço web que permite monitorar, gerenciar e publicar várias métricas, bem como configurar ações de alarme com base nos dados das métricas. Você pode definir métricas personalizadas para seu próprio uso, e o Elastic Beanstalk enviará essas métricas para a Amazon. CloudWatch Depois que a Amazon CloudWatch contiver suas métricas personalizadas, você poderá visualizá-las no CloudWatch console da Amazon.

**O CloudWatch agente da Amazon**  
O CloudWatch agente da Amazon permite a coleta de CloudWatch métricas e registros de EC2 instâncias da Amazon e servidores locais em todos os sistemas operacionais. O agente oferece suporte a métricas coletadas no nível do sistema. Ele também oferece suporte para a coleta de métricas personalizadas de aplicações ou serviços. Para obter mais informações sobre o CloudWatch agente da Amazon, consulte [Coleta de métricas e registros com o CloudWatch agente](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) no *Guia CloudWatch do usuário da Amazon*.

**nota**  
O Elastic [Beanstalk Enhanced](health-enhanced.md) Health Reporting tem suporte nativo para publicar uma ampla variedade de métricas de instância e ambiente no. CloudWatch Para mais detalhes, consulte [Publicação de métricas CloudWatch personalizadas da Amazon para um ambiente](health-enhanced-cloudwatch.md).

**Topics**
+ [Arquivo de configuração .Ebextensions](#customize-containers-cw-update-roles)
+ [Permissões](#customize-containers-cw-policy)
+ [Visualizando métricas no CloudWatch console](#customize-containers-cw-console)

## Arquivo de configuração .Ebextensions
<a name="customize-containers-cw-update-roles"></a>

Este exemplo usa arquivos e comandos em um arquivo de configuração.ebextensions para configurar e executar o CloudWatch agente da Amazon na plataforma Amazon Linux 2. O agente faz parte do pacote do Amazon Linux 2. Se você estiver usando um sistema operacional diferente, etapas adicionais para instalar o agente podem ser necessárias. Para obter mais informações, consulte [Instalando o CloudWatch agente](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html) no *Guia CloudWatch do usuário da Amazon*.

Para usar esse exemplo, salve-o em um arquivo chamado `cloudwatch.config` em um diretório chamado `.ebextensions` no nível superior do diretório do projeto e implante a aplicação usando o console do Elastic Beanstalk (inclua o diretório .ebextensions em seu [pacote de origem](applications-sourcebundle.md)) ou na [CLI do EB](eb-cli3.md).

Para obter mais informações sobre esses arquivos de configuração, consulte [Personalização avançada de ambiente com arquivos de configuração (`.ebextensions`)](ebextensions.md).

Este arquivo tem duas seções:
+ `files`: essa seção adiciona o arquivo de configuração do agente. Ele indica quais métricas e registros o agente deve enviar para a Amazon CloudWatch. Neste exemplo, estamos enviando apenas a métrica *mem\$1used\$1percent*. Para obter uma lista completa das métricas em nível de sistema suportadas pelo CloudWatch agente da Amazon, consulte [Métricas coletadas pelo CloudWatch agente](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html) no *Guia CloudWatch do usuário da Amazon*.
+ `container_commands`: essa seção contém o comando que inicia o agente, passando o arquivo de configuração como um parâmetro. Para obter mais detalhes sobre o `container_commands`, consulte [Comandos de contêiner](customize-containers-ec2.md#linux-container-commands).

**.ebextensions/cloudwatch.config**

```
files:  
  "/opt/aws/amazon-cloudwatch-agent/bin/config.json": 
    mode: "000600"
    owner: root
    group: root
    content: |
      {
        "agent": {
          "metrics_collection_interval": 60,
          "run_as_user": "root"
        },
        "metrics": {
          "namespace": "System/Linux",
          "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}"
          },
          "metrics_collected": {
            "mem": {
              "measurement": [
                "mem_used_percent"
              ]
            }
          }
        }
      }  
container_commands:
  start_cloudwatch_agent: 
    command: /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
```

## Permissões
<a name="customize-containers-cw-policy"></a>

As instâncias em seu ambiente precisam das permissões adequadas do IAM para publicar CloudWatch métricas personalizadas da Amazon usando o CloudWatch agente da Amazon. Você pode conceder permissões às instâncias do ambiente adicionando-as ao [perfil da instância](concepts-roles-instance.md) do ambiente. Você pode adicionar permissões ao perfil da instância antes ou depois da implantação de seu aplicativo.

**Para conceder permissões para publicar CloudWatch métricas**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis**.

1. Escolha a função de perfil da instância de seu ambiente. Por padrão, ao criar um ambiente com o console do Elastic Beanstalk ou com a [CLI do EB](eb-cli3.md), ela é `aws-elasticbeanstalk-ec2-role`.

1. Escolha a aba **Permissões**.

1. Em **Permissions Policies** (Políticas de permissões), na seção **Permissions** (Permissões) escolha **Attach policies** (Anexar políticas).

1. Em **Anexar permissões**, escolha a política AWS gerenciada **CloudWatchAgentServerPolicy**. Clique em **Attach Policy** (Anexar política).

Para obter mais informações sobre o gerenciamento de políticas, consulte [Trabalhar com políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html) no *Guia do usuário do IAM*.

## Visualizando métricas no CloudWatch console
<a name="customize-containers-cw-console"></a>

Depois de implantar o arquivo de CloudWatch configuração em seu ambiente, verifique o [ CloudWatchconsole da Amazon](https://console.aws.amazon.com/cloudwatch/home) para ver suas métricas. As métricas personalizadas estarão localizadas no **CWAgent**namespace.

Para obter mais informações, consulte [Visualização das métricas disponíveis](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) no *Guia CloudWatch do usuário da Amazon*.

# Personalizar software em Windows Servers
<a name="customize-containers-windows-ec2"></a>

Você pode personalizar e configurar o software do qual seu aplicativo depende. Estes arquivos podem ser dependências exigidas pelo aplicativo, por exemplo, pacotes adicionais ou serviços que precisam ser executados. Para obter informações gerais sobre como personalizar e configurar ambientes do Elastic Beanstalk, consulte [Configurar ambientes do Elastic Beanstalk](customize-containers.md).

**nota**  
YAML depende de um recuo consistente. Compare o nível de recuo ao substituir o conteúdo em um arquivo de configuração de exemplo e se confira se o editor de texto usa espaços, e não caracteres de tabulação, como recuo.

Os arquivos de configuração oferecem suporte às seguintes chaves que afetam o servidor Windows no qual seu aplicativo é executado.

**Topics**
+ [Pacotes](#windows-packages)
+ [Fontes](#windows-sources)
+ [Arquivos](#windows-files)
+ [Comandos](#windows-commands)
+ [Services](#windows-services)
+ [Comandos de contêiner](#windows-container-commands)

As chaves são processadas na ordem em que aparecem listadas aqui.

**nota**  
Versões mais antigas (sem versionamento) da plataforma .NET não processam arquivos de configuração na ordem correta. Saiba mais em [Migrar entre versões principais da plataforma do Windows Server do Elastic Beanstalk](dotnet-v2migration.md).

Assista a seus [eventos](using-features.events.md) de ambiente enquanto desenvolve e testa os arquivos de configuração. O Elastic Beanstalk ignora um arquivo de configuração que contém erros de validação, como uma chave inválida, e não processa nenhuma das outras chaves no mesmo arquivo. Quando isso acontece, o Elastic Beanstalk adiciona um evento de aviso ao log de eventos.

## Pacotes
<a name="windows-packages"></a>

Use a chave `packages` para fazer download e instalar aplicativos e componentes predefinidos.

Em ambientes Windows, o Elastic Beanstalk é compatível com o download e a instalação de pacotes MSI. (Os ambientes do Linux são compatíveis com outros gerenciadores de pacotes. Para obter detalhes, consulte [Pacotes](customize-containers-ec2.md#linux-packages) na página *Personalizar software em servidores Linux*).

É possível fazer referência a locais externos, como o Amazon Simple Storage Service (Amazon S3), desde que o URL seja publicamente acessível.

Se você especificar vários pacotes `msi:`, sua ordem de instalação não será garantida.

### Sintaxe
<a name="windows-packages-syntax"></a>

Especifique um nome de sua preferência para o pacote e, como valor, um URL para um arquivo MSI local. Você pode especificar vários pacotes sob a chave `msi:`.

```
packages: 
  msi:
    package name: package url
    ...
```

### Exemplos
<a name="windows-packages-snippet"></a>

O exemplo a seguir especifica um URL para fazer download do **mysql** em `https://dev.mysql.com/`.

```
packages:
  msi:
    mysql: https://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-8.0.11.msi
```

O exemplo a seguir especifica um objeto do Amazon S3 como o local do arquivo MSI.

```
packages:
  msi:
    mymsi: https://amzn-s3-demo-bucket.s3.amazonaws.com/myobject.msi
```

## Fontes
<a name="windows-sources"></a>

Use a chave `sources` para fazer download de um arquivo compactado de um URL público e descompacte-o no diretório de destino na instância do EC2.

### Sintaxe
<a name="windows-sources-syntax"></a>

```
sources:  
  target directory: location of archive file
```

### Formatos com suporte
<a name="windows-sources-support"></a>

Em ambientes Windows, o Elastic Beanstalk é compatível com o formato .zip. (Os ambientes do Linux são compatíveis com outros formatos. Para obter detalhes, consulte [Fontes](customize-containers-ec2.md#linux-sources) na página *Personalizar software em servidores Linux*.)

É possível fazer referência a locais externos, como o Amazon Simple Storage Service (Amazon S3), desde que o URL seja publicamente acessível.

### Exemplo
<a name="windows-sources-example"></a>

O exemplo a seguir baixa um arquivo .zip público do Amazon S3 e o descompacta no `c:/myproject/myapp`.

```
sources:  
  "c:/myproject/myapp": https://amzn-s3-demo-bucket.s3.amazonaws.com/myobject.zip
```

## Arquivos
<a name="windows-files"></a>

Use a chave `files` para criar arquivos na instância do EC2. O conteúdo pode ser incorporado no arquivo de configuração ou obtido de um URL. Os arquivos são gravados em disco em ordem lexicográfica. Para fazer download de arquivos privados do Amazon S3, forneça o perfil da instância para autorização.

### Sintaxe
<a name="windows-files-syntax"></a>

```
files:  
  "target file location on disk":
    source: URL
    authentication: authentication name:

  "target file location on disk":
    content: |
      this is my content
    encoding: encoding format
```

### Opções
<a name="windows-files-options"></a>

`content`  
(Opcional) Uma string. 

`source`  
(Opcional) O URL de onde o arquivo é carregado. Essa opção não pode ser especificada com a chave de conteúdo.

`encoding`  
(Opcional) O formato de codificação. Essa opção só é usada para um valor de chave de conteúdo fornecido. O valor padrão é `plain`.  
Valores válidos: `plain` \$1 `base64`

`authentication`  
(Opcional) O nome de um [método de autenticação do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-authentication.html) para usar. É possível adicionar métodos de autenticação aos metadados do grupo de Auto Scaling com a chave Resources.

### Exemplos
<a name="windows-files-snippet"></a>

O exemplo a seguir mostra as duas maneiras de fornecer conteúdo do arquivo: por meio de um URL ou em linha no arquivo de configuração.

```
files:
  "c:\\targetdirectory\\targetfile.txt":
    source: http://foo.bar/myfile
 
  "c:/targetdirectory/targetfile.txt":
    content: |
      # this is my file
      # with content
```

**nota**  
Se você usar uma barra invertida (\$1) no caminho do arquivo, deverá precedê-la com outra barra invertida (caractere de escape), como mostrado no exemplo anterior.

O exemplo a seguir usa a chave de recursos para adicionar um método de autenticação chamado S3Auth e o utiliza para baixar um arquivo privado de um Amazon S3:

```
files:
  "c:\\targetdirectory\\targetfile.zip":
    source: https://elasticbeanstalk-us-east-2-123456789012.s3.amazonaws.com/prefix/myfile.zip
    authentication: S3Auth

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          s: ["amzn-s3-demo-bucket"]
          roleName:
            "Fn::GetOptionSetting":
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
```

## Comandos
<a name="windows-commands"></a>

Use a chave `commands` para executar comandos na instância do EC2. Os comandos são processados em ordem alfabética por nome e executados antes que o aplicativo e o servidor Web sejam configurados e o arquivo de versão do aplicativo seja extraído.

Os comandos especificados são executados como usuário administrador.

Para solucionar problemas com seus comandos, você pode encontrar a saída deles nos [logs da instância](using-features.logging.md).

### Sintaxe
<a name="windows-commands-syntax"></a>

```
commands:
  command name: 
    command: command to run
```

### Opções
<a name="windows-commands-options"></a>

`command`  
Uma matriz ou uma string que especifica o comando a ser executado. Se você usar uma matriz, não precisará de caracteres de espaço de escape ou de aspas para parâmetros de comandos.

`cwd`  
(Opcional) O diretório de trabalho. Por padrão, o Elastic Beanstalk tenta encontrar o local do diretório do projeto. Se não for encontrado, ele usará `c:\Windows\System32` como padrão.

`env`  
(Opcional) Define variáveis de ambiente para o comando. Essa propriedade substitui, em vez de anexar, o ambiente existente.

`ignoreErrors`  
(Opcional) Um valor booliano que determina se outros comandos deverão ser executados se houver falha no comando incluído na chave `command` (retorna um valor diferente de zero). Defina esse valor como `true` para continuar executando os comandos mesmo se houver falha no comando. Defina-o como `false` para interromper a execução dos comandos em caso de falha no comando. O valor padrão é `false`.

`test`  
(Opcional) Um comando que deve retornar o valor `true` (código de saída 0) para que o Elastic Beanstalk processe o comando incluído na chave `command`.

`waitAfterCompletion`  
(Opcional) Quantos segundos aguardar para executar o próximo comando depois que o comando é concluído. O valor padrão é **60** segundos. Também é possível especificar **forever**.  
A reinicialização do sistema durante a implantação não é compatível. Se o sistema reiniciar como resultado de um comando, a inicialização da instância falhará, causando a falha da implantação.  
Como solução alternativa, você pode usar este [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config) para programar reinicializações após a conclusão da implantação.

### Exemplo
<a name="windows-commands-snippet"></a>

O exemplo a seguir salva a saída do comando `set` no arquivo especificado. Se houver um comando subsequente, o Elastic Beanstalk o executará logo após o término deste comando. Se esse comando exigir reinicialização, o Elastic Beanstalk reinicializará a instância logo após o término do comando.

```
commands:
  test: 
    command: set > c:\\myapp\\set.txt
    waitAfterCompletion: 0
```

## Services
<a name="windows-services"></a>

Use a chave `services` para definir quais serviços deverão ser iniciados ou interrompidos quando a instância for executada. A chave `services` também permite especificar dependências em fontes, pacotes e arquivos para que, se for necessária uma reinicialização devido à instalação de arquivos, o Elastic Beanstalk reinicie o serviço.

### Sintaxe
<a name="windows-services-syntax"></a>

```
services: 
  windows:
    name of service:
      files:
        - "file name"
      sources: 
        - "directory"	
      packages: 
        name of package manager:
            "package name[: version]"
      commands: 
        - "name of command"
```

### Opções
<a name="windows-services-options"></a>

`ensureRunning`  
(Opcional) Defina `true` para garantir que o serviço esteja sendo executado após o Elastic Beanstalk ser concluído.  
Defina `false` para garantir que o serviço não esteja em execução depois que o Elastic Beanstalk for concluído.  
Omita essa chave para não fazer nenhuma alteração no estado do serviço.

`enabled`  
(Opcional) Defina como `true` para garantir que o serviço seja iniciado automaticamente na inicialização.  
Defina como `false` para garantir que o serviço não seja iniciado automaticamente na inicialização.  
Omita essa chave para não fazer nenhuma alteração nessa propriedade.

`files`  
Uma lista de arquivos. Se o Elastic Beanstalk alterar um diretamente por meio do bloco de arquivos, o serviço será reiniciado.

`sources`  
Uma lista de diretórios. Se o Elastic Beanstalk expandir um arquivo em um desses diretórios, o serviço será reiniciado.

`packages`  
Um mapa do gerenciador de pacotes para uma lista de nomes de pacotes. Se o Elastic Beanstalk instalar ou atualizar um desses pacotes, o serviço será reiniciado.

`commands`  
Uma lista de nomes de comandos. Se o Elastic Beanstalk executar o comando especificado, o serviço será reiniciado.

### Exemplo
<a name="windows-services-snippet"></a>

```
services: 
  windows:
    myservice:
      enabled: true
      ensureRunning: true
```

## Comandos de contêiner
<a name="windows-container-commands"></a>

Use a chave `container_commands` para executar comandos que afetam o código-fonte do seu aplicativo. Os comandos de contêiner são executados depois que o aplicativo e o servidor Web são configurados e o arquivo de versão do aplicativo é extraído, mas antes da implantação da versão do aplicativo. Os comandos que não são de contêiner e outras operações de personalização são executados antes da extração do código-fonte do aplicativo.

Os comandos de contêiner são executados no diretório de preparação, onde seu código-fonte é extraído antes de ser implantado no servidor de aplicativo. Quaisquer alterações que você fizer em seu código-fonte no diretório de preparação com um comando de contêiner serão incluídas quando a fonte for implantada em seu local final.

Para solucionar problemas com seus comandos de contêiner, você pode encontrar a saída deles nos [logs da instância](using-features.logging.md).

Use a opção `leader_only` para somente executar o comando em uma única instância ou configure `test` para somente executar o comando quando um comando de teste é avaliado como `true`. Os comandos de contêiner somente líderes são executados apenas durante a criação do ambiente e as implantações, enquanto outros comandos e operações de personalização de servidor são executados sempre que uma instância é provisionada ou atualizada. Os comandos de contêiner somente líderes não são executados devido a alterações na configuração de execução, como uma alteração no ID do AMI ou no tipo de instância.

### Sintaxe
<a name="windows-container-commands-syntax"></a>

```
container_commands:
  name of container_command:
    command: command to run
```

### Opções
<a name="windows-container-commands-options"></a>

`command`  
Uma string ou matriz de strings para execução.

`env`  
(Opcional) Defina variáveis de ambiente antes de executar o comando, substituindo qualquer valor existente.

`cwd`  
(Opcional) O diretório de trabalho. Por padrão, este é o diretório de preparação do aplicativo descompactado.

`leader_only`  
(Opcional) Somente execute o comando em uma única instância escolhida pelo Elastic Beanstalk. Os comandos de contêiner somente líderes são executados antes dos outros comandos de contêiner. Um comando pode ser somente líder ou ter um `test`, mas não as duas coisas (`leader_only` tem precedência).

`test`  
(Opcional) Execute um comando de teste que deve retornar `true` para executar o comando de contêiner. Um comando pode ser somente líder ou ter um `test`, mas não as duas coisas (`leader_only` tem precedência).

`ignoreErrors`  
(Opcional) Não falhar implantações se o comando de contêiner retornar um valor diferente de 0 (êxito). Defina como `true` para habilitar.

`waitAfterCompletion`  
(Opcional) Quantos segundos aguardar para executar o próximo comando depois que o comando é concluído. O valor padrão é **60** segundos. Também é possível especificar **forever**.  
A reinicialização do sistema durante a implantação não é compatível. Se o sistema reiniciar como resultado de um comando, a inicialização da instância falhará, causando a falha da implantação.  
Como solução alternativa, você pode usar este [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config) para programar reinicializações após a conclusão da implantação.

### Exemplo
<a name="windows-container-commands-snippet"></a>

O exemplo a seguir salva a saída do comando `set` no arquivo especificado. O Elastic Beanstalk executa o comando em uma instância e reinicializa a instância logo após o término do comando.

```
container_commands:
  foo:
    command: set > c:\\myapp\\set.txt
    leader_only: true
    waitAfterCompletion: 0
```

# Adicionar e personalizar recursos do ambiente do Elastic Beanstalk
<a name="environment-resources"></a>

Você também pode personalizar seus recursos de ambiente que são parte do ambiente do Elastic Beanstalk. Por exemplo, você pode querer adicionar uma fila do Amazon SQS e um alarme sobre a profundidade da fila, ou você pode querer adicionar um cluster da Amazon. ElastiCache Você pode personalizar facilmente seu ambiente ao mesmo tempo que implanta a versão do aplicativo incluindo um arquivo de configuração com o pacote de origem.

Você pode usar a `Resources` chave em um [arquivo de configuração](ebextensions.md) para criar e personalizar AWS recursos em seu ambiente. Os recursos definidos nos arquivos de configuração são adicionados ao CloudFormation modelo usado para iniciar seu ambiente. Todos os [tipos de CloudFormation recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) são compatíveis.

**nota**  
Sempre que você adicionar um recurso que não seja gerenciado pelo Elastic Beanstalk, não se esqueça de adicionar uma política de usuário com as permissões AWS Identity and Access Management apropriadas para seus usuários (IAM). As [políticas de usuário gerenciadas](AWSHowTo.iam.managed-policies.md) que o Elastic Beanstalk fornece apenas permissões de cobertura para recursos gerenciados pelo Elastic Beanstalk.

Por exemplo, o arquivo de configuração a seguir adiciona um gancho de ciclo de vida do Auto Scaling ao grupo de Auto Scaling padrão criado pelo Elastic Beanstalk:

**`~/my-app/.ebextensions/as-hook.config`**

```
Resources:
  hookrole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument: {
               "Version": "2012-10-17",		 	 	 
               "Statement": [ {
                  "Effect": "Allow",
                  "Principal": {
                     "Service": [ "autoscaling.amazonaws.com" ]
                  },
                  "Action": [ "sts:AssumeRole" ]
               } ]
            }
      Policies: [ {
               "PolicyName": "SNS",
               "PolicyDocument": {
                      "Version": "2012-10-17",		 	 	 
                      "Statement": [{
                          "Effect": "Allow",
                          "Resource": "*",
                          "Action": [
                              "sqs:SendMessage",
                              "sqs:GetQueueUrl",
                              "sns:Publish"
                          ]
                        }
                      ]
                  }
               } ]
  hooktopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Endpoint: "my-email@example.com"
          Protocol: email
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
      LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
      NotificationTargetARN: { "Ref" : "hooktopic" }
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

Este exemplo define três recursos: `hookrole`, `hooktopic` e `lifecyclehook`. Os dois primeiros recursos são uma função do IAM, que concede permissão ao Amazon EC2 Auto Scaling para publicar mensagens no Amazon SNS, e um tópico do SNS, que retransmite mensagens do grupo Auto Scaling para um endereço de e-mail. O Elastic Beanstalk cria esses recursos com as propriedades e os tipos especificados.

O recurso final, `lifecyclehook`, é o ciclo de vida do gancho propriamente dito:

```
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
      LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
      NotificationTargetARN: { "Ref" : "hooktopic" }
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

A definição de gancho do ciclo de vida usa duas [funções](ebextensions-functions.md) para preencher valores para as propriedades do gancho. `{ "Ref" : "AWSEBAutoScalingGroup" }` recupera o nome do grupo de Auto Scaling criado pelo Elastic Beanstalk para o ambiente. `AWSEBAutoScalingGroup` é um dos [nomes de recurso](customize-containers-format-resources-eb.md) padrão fornecidos pelo Elastic Beanstalk.

Para `[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#d0e48356)`, `Ref` retorna somente o nome da função, não o nome de região da Amazon (ARN). Para obter o ARN para o parâmetro `RoleARN`, use outra função intrínseca, `Fn::GetAtt`, que pode obter qualquer atributo de um recurso. `RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }` obtém o atributo `Arn` do recurso `hookrole`.

`{ "Ref" : "hooktopic" }` obtém o ARN do tópico do Amazon SNS criado anteriormente no arquivo de configuração. O valor retornado por `Ref` varia de acordo com o tipo de recurso e pode ser encontrado no [tópico CloudFormation do Guia do Usuário para o tipo de AWS::SNS::Topic recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#d0e62250).

# Modificar os recursos criados pelo Elastic Beanstalk para o seu ambiente
<a name="customize-containers-format-resources-eb"></a>

Os recursos que o Elastic Beanstalk cria para o seu ambiente têm nomes. Você pode usar esses nomes para obter informações sobre os recursos com uma [função](ebextensions-functions.md)ou modificar as propriedades nos recursos para personalizar seu comportamento. Este tópico descreve os AWS recursos que o Elastic Beanstalk usa nos diferentes tipos de ambientes.

**nota**  
O tópico anterior, [Recursos personalizados](environment-resources.md), fornece alguns casos de uso e exemplos para personalizar recursos de ambientes. Você também pode encontrar mais exemplos de arquivos de configuração no tópico posterior: [Exemplos de recursos personalizados](customize-environment-resources-examples.md). 

Os ambientes de servidor da web tem os recursos a seguir.

**Ambientes de servidor da web**
+ `AWSEBAutoScalingGroup`([AWS::AutoScaling::AutoScalingGrupo](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html)) — O grupo Auto Scaling anexado ao seu ambiente.
+ Um dos dois recursos a seguir.
  + `AWSEBAutoScalingLaunchConfiguration`([AWS::AutoScaling::LaunchConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html)) — A configuração de lançamento anexada ao grupo de Auto Scaling do seu ambiente.
  + `AWSEBEC2LaunchTemplate`([AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)) — O modelo de lançamento do Amazon EC2 usado pelo grupo de Auto Scaling do seu ambiente.
**nota**  
Se o seu ambiente utilizar funcionalidades que requerem modelos de execução do Amazon EC2, e a sua política de usuário não tiver as permissões necessárias, a criação ou atualização do ambiente poderá falhar. [Use a política de [usuário gerenciada **AdministratorAccess- AWSElastic Beanstalk** ou adicione as permissões necessárias à sua política](AWSHowTo.iam.managed-policies.md) personalizada.](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)
+ `AWSEBEnvironmentName`([AWS::ElasticBeanstalk::Environment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html)) — Seu ambiente.
+ `AWSEBSecurityGroup`([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) — O grupo de segurança anexado ao seu grupo de Auto Scaling.
+ `AWSEBRDSDatabase`([AWS: :RDS:: DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html)) — A instância de banco de dados Amazon RDS conectada ao seu ambiente (se aplicável).

Em um ambiente com balanceamento de carga, é possível acessar recursos adicionais relacionados ao load balancer. Os load balancers clássicos têm um recurso para o load balancer e outro para o grupo de segurança anexado a ele. Os load balancers de rede e de aplicativos têm recursos adicionais para listener padrão do load balancer para a regra do listener e para o grupo de destino.

**Ambientes de carga equilibrada**
+ `AWSEBLoadBalancer`([AWS::ElasticLoadBalancing::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html)) — O balanceador de carga clássico do seu ambiente.
+ `AWSEBV2LoadBalancer`([AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html)) — O balanceador de carga do aplicativo ou da rede do seu ambiente.
+ `AWSEBLoadBalancerSecurityGroup`([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) — Somente em uma [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) personalizada (Amazon VPC), o nome do grupo de segurança que o Elastic Beanstalk cria para o balanceador de carga. Em uma VPC padrão ou no EC2 Classic, o Elastic Load Balancing atribui um grupo de segurança padrão ao balanceador de carga.
+ `AWSEBV2LoadBalancerListener`([AWS::ElasticLoadBalancingV2::Listener](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html)) — Um ouvinte que permite que o balanceador de carga verifique as solicitações de conexão e as encaminhe para um ou mais grupos-alvo.
+ `AWSEBV2LoadBalancerListenerRule`([AWS::ElasticLoadBalancingV2::ListenerRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html)) — Define em quais solicitações um ouvinte do Elastic Load Balancing age e a ação que ele executa.
+ `AWSEBV2LoadBalancerTargetGroup`([AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html)) — Um grupo-alvo do Elastic Load Balancing que encaminha solicitações para um ou mais destinos registrados, como instâncias do Amazon EC2.

Ambientes de operador têm recursos para a fila do SQS que armazena as solicitações de entrada, e uma tabela do Amazon DynamoDB que as instâncias usam para escolher o líder.

**Ambientes de operador**
+ `AWSEBWorkerQueue`([AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)) — A fila do Amazon SQS da qual o daemon extrai solicitações que precisam ser processadas.
+ `AWSEBWorkerDeadLetterQueue`([AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)) — A fila do Amazon SQS que armazena mensagens que não podem ser entregues ou que não foram processadas com sucesso pelo daemon.
+ `AWSEBWorkerCronLeaderRegistry`([AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)) — A tabela do Amazon DynamoDB que é o registro interno usado pelo daemon para tarefas periódicas.

# Outras chaves CloudFormation de modelo
<a name="ebextensions-otherkeys"></a>

Já introduzimos chaves de arquivo de configuração`Resources`, CloudFormation como`files`, `packages` e. O Elastic Beanstalk adiciona o conteúdo dos arquivos de configuração ao modelo que dá suporte CloudFormation ao seu ambiente, para que você possa CloudFormation usar outras seções para realizar tarefas avançadas em seus arquivos de configuração.

**Topics**
+ [Parâmetros](#ebextensions-otherkeys-parameters)
+ [Saídas](#ebextensions-otherkeys-outputs)
+ [Mapeamentos](#ebextensions-otherkeys-mappings)

## Parâmetros
<a name="ebextensions-otherkeys-parameters"></a>

Os parâmetros são uma alternativa para as [opções personalizadas](configuration-options-custom.md) próprias do Elastic Beanstalk que podem ser usadas para definir valores utilizados em outros lugares nos arquivos de configuração. Do mesmo modo que as opções personalizadas, você pode usar parâmetros para reunir valores configuráveis pelo usuário em um único lugar. Ao contrário das opções personalizadas, você não pode usar a API do Elastic Beanstalk para definir valores de parâmetros, e o número de parâmetros que você pode definir em um modelo é limitado por. CloudFormation

Um dos motivos pelos quais você pode querer usar parâmetros é fazer com que seus arquivos de configuração funcionem como CloudFormation modelos. Se você usar parâmetros em vez de opções personalizadas, poderá usar o arquivo de configuração para criar o mesmo recurso em CloudFormation sua própria pilha. Por exemplo, você pode ter um arquivo de configuração que adiciona um sistema de arquivos do Amazon EFS ao seu ambiente para fins de teste, e depois usar o mesmo arquivo para criar um sistema de arquivos independentes que não estejam vinculados ao ciclo de vida do seu ambiente para ser usado em produção.

O exemplo a seguir mostra a utilização de parâmetros para reunir valores configuráveis pelo usuário no início de um arquivo de configuração.

**Example [L oadbalancer-accesslogs-existingbucket .config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-existingbucket.config) — Parâmetros**  

```
Parameters:
  bucket:
    Type: String
    Description: "Name of the Amazon S3 bucket in which to store load balancer logs"
    Default: "amzn-s3-demo-bucket"
  bucketprefix:
    Type: String
    Description: "Optional prefix. Can't start or end with a /, or contain the word AWSLogs"
    Default: ""
```

## Saídas
<a name="ebextensions-otherkeys-outputs"></a>

Você pode usar um bloco de `Outputs` para exportar informações sobre os recursos criados para o CloudFormation. Em seguida, você pode usar a `Fn::ImportValue` função para inserir o valor em um CloudFormation modelo fora do Elastic Beanstalk.

O exemplo a seguir cria um tópico do Amazon SNS e exporta seu ARN para CloudFormation com o nome. `NotificationTopicArn`

**Example [sns-topic.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/sns-topic.config)**  

```
Resources:
  NotificationTopic:
    Type: AWS::SNS::Topic

Outputs:
  NotificationTopicArn:
    Description: Notification topic ARN
    Value: { "Ref" : "NotificationTopic" }
    Export:
      Name: NotificationTopicArn
```

Em um arquivo de configuração para um ambiente diferente ou em um CloudFormation modelo fora do Elastic Beanstalk, você pode `Fn::ImportValue` usar a função para obter o ARN exportado. Este exemplo atribui o valor exportado a uma propriedade do ambiente chamada `TOPIC_ARN`.

**Example env.config**  

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    TOPIC_ARN: '`{ "Fn::ImportValue" : "NotificationTopicArn" }`'
```

## Mapeamentos
<a name="ebextensions-otherkeys-mappings"></a>

Você pode usar um mapeamento para armazenar pares de chave-valor organizados por namespace. Um mapeamento pode ajudar você a organizar os valores que utiliza em toda as configurações, ou alterar o valor de um parâmetro dependendo de outro valor. Por exemplo, a configuração a seguir define o valor de um parâmetro de ID de conta com base na região atual.

**Example [L oadbalancer-accesslogs-newbucket .config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-newbucket.config) — Mapeamentos**  

```
Mappings: 
  Region2ELBAccountId: 
    us-east-1: 
      AccountId: "111122223333"
    us-west-2: 
      AccountId: "444455556666"
    us-west-1: 
      AccountId: "123456789012"
    eu-west-1: 
      AccountId: "777788889999"
...
            Principal: 
              AWS: 
                ? "Fn::FindInMap"
                : 
                  - Region2ELBAccountId
                  - 
                    Ref: "AWS::Region"
                  - AccountId
```

# Funções
<a name="ebextensions-functions"></a>

É possível usar funções nos arquivos de configuração para preencher valores de propriedades de recursos com informações de outros recursos ou das definições de opção de configuração do Elastic Beanstalk. O Elastic CloudFormation Beanstalk suporta `Ref` funções `Fn::GetAtt` (`Fn::Join`,,) e uma função específica do Elastic Beanstalk,. `Fn::GetOptionSetting`

**Topics**
+ [Ref.](#ebextensions-functions-ref)
+ [Fã:: GetAtt](#ebextensions-functions-getatt)
+ [Fn::Join](#ebextensions-functions-join)
+ [Fã:: GetOptionSetting](#ebextensions-functions-getoptionsetting)

## Ref.
<a name="ebextensions-functions-ref"></a>

Use `Ref` para recuperar a representação de string padrão de um AWS recurso. O valor retornado por `Ref`depende do tipo de recurso e, às vezes, depende também de outros fatores. Por exemplo, um grupo de segurança ([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) retorna o nome ou a ID do grupo de segurança, dependendo se o grupo de segurança está em uma [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) padrão, EC2 clássica ou em uma VPC personalizada.

```
{ "Ref" : "resource name" }
```

**nota**  
Para obter detalhes sobre cada tipo de recurso, incluindo os valores de retorno de `Ref`, consulte [Referência de tipos de recursos da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) no *Guia do usuário do CloudFormation *.

A partir do [gancho de ciclo de vida do Auto Scaling](environment-resources.md) demonstrativo:

```
Resources:
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
```

Você também pode usar `Ref` para recuperar o valor de um CloudFormation parâmetro definido em outro lugar no mesmo arquivo ou em um arquivo de configuração diferente.

## Fã:: GetAtt
<a name="ebextensions-functions-getatt"></a>

Use `Fn::GetAtt` para recuperar o valor de um atributo em um AWS recurso.

```
{ "Fn::GetAtt" : [ "resource name", "attribute name"] }
```

A partir do [gancho de ciclo de vida do Auto Scaling](environment-resources.md) demonstrativo:

```
Resources:
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

Consulte [Fn:: GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html) para obter mais informações.

## Fn::Join
<a name="ebextensions-functions-join"></a>

Use `Fn::Join` para combinar strings com um delimitador. As strings podem ser codificadas ou usar a saída de `Fn::GetAtt` ou `Ref`.

```
{ "Fn::Join" : [ "delimiter", [ "string1", "string2" ] ] }
```

Consulte [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) para obter mais informações.

## Fã:: GetOptionSetting
<a name="ebextensions-functions-getoptionsetting"></a>

Use `Fn::GetOptionSetting` para recuperar o valor de uma definição de [opção de configuração](command-options.md) aplicada ao ambiente. 

```
"Fn::GetOptionSetting":
  Namespace: "namespace"
  OptionName: "option name"
  DefaultValue: "default value"
```

No exemplo de [armazenamento de chaves privadas](https-storingprivatekeys.md):

```
Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["elasticbeanstalk-us-west-2-123456789012"]
          roleName: 
            "Fn::GetOptionSetting": 
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
```

# Exemplos de recursos personalizados
<a name="customize-environment-resources-examples"></a>

Veja a seguir uma lista de arquivos de configuração demonstrativos que podem ser usados para personalizar os ambientes do Elastic Beanstalk:
+ [DynamoDB CloudWatch e SNS](https://elasticbeanstalk.s3.amazonaws.com/extensions/DynamoDB-with-CloudWatch-Alarms.config)
+ [Elastic Load Balancing e CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/ELB-Alarms.config)
+ [ElastiCache](https://elasticbeanstalk.s3.amazonaws.com/extensions/ElastiCache.config)
+ [RDS e CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/RDS-Alarms.config)
+ [SQS, SNS e CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/SNS.config)

Os subtópicos desta página fornecem alguns exemplos estendidos para adicionar e configurar recursos personalizados em um ambiente do Elastic Beanstalk.

**Topics**
+ [Exemplo: ElastiCache.](customize-environment-resources-elasticache.md)
+ [Exemplo: SQS e CloudWatch SNS](customize-environment-resources-sqs.md)
+ [Exemplo: DynamoDB CloudWatch e SNS](customize-environment-resources-dynamodb.md)

# Exemplo: ElastiCache.
<a name="customize-environment-resources-elasticache"></a>

Os exemplos a seguir adicionam um ElastiCache cluster da Amazon às plataformas EC2-Classic e EC2-VPC (ambas padrão e personalizadas [Amazon Virtual Private Cloud (Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/) VPC)). Para obter mais informações sobre essas plataformas e como você pode determinar quais são compatíveis com o EC2 para sua região e sua AWS conta, consulte[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html). Depois, consulte a seção neste tópico que se aplica à sua plataforma.
+ [Plataformas EC2-Classic](#customize-environment-resources-elasticache-classic)
+ [EC2-VPC (padrão)](#customize-environment-resources-elasticache-defaultvpc)
+ [EC2-VPC (personalizado)](#customize-environment-resources-elasticache-targetedvpc)

## Plataformas EC2-Classic
<a name="customize-environment-resources-elasticache-classic"></a>

Esse exemplo adiciona um ElastiCache cluster da Amazon a um ambiente com instâncias lançadas na plataforma EC2-Classic. Todas as propriedades listadas neste exemplo são as propriedades mínimas necessárias que devem ser definidas para cada tipo de recurso. Você pode baixar o exemplo em [ElastiCacheexample](https://elasticbeanstalk.s3.amazonaws.com/extensions/ElastiCache.config). 

**nota**  
Este exemplo cria AWS recursos, pelos quais você pode ser cobrado. Para obter mais informações sobre AWS preços, consulte[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Alguns serviços fazem parte do nível de uso AWS gratuito. Se for um cliente novo, você pode testar esses serviços gratuitamente. Consulte [https://aws.amazon.com/free/](https://aws.amazon.com/free/) para obter mais informações.

Para usar esse exemplo, faça o seguinte:

1. Crie um diretório `[.ebextensions](ebextensions.md)` no diretório de nível superior do pacote de origem. 

1. Crie dois arquivos de configuração com a extensão `.config` e os coloque no diretório `.ebextensions`. Um arquivo de configuração define os recursos, e o outro arquivo de configuração define as opções.

1. Implante a aplicação no Elastic Beanstalk.

   YAML depende de um recuo consistente. Compare o nível de recuo ao substituir o conteúdo em um arquivo de configuração de exemplo e se confira se o editor de texto usa espaços, e não caracteres de tabulação, como recuo.

Crie um arquivo de configuração (por exemplo, `elasticache.config`) que define os recursos. Neste exemplo, criamos o ElastiCache cluster especificando o nome do recurso do ElastiCache cluster (`MyElastiCache`), declarando seu tipo e configurando as propriedades do cluster. O exemplo faz referência ao nome do recurso do grupo de ElastiCache segurança que é criado e definido nesse arquivo de configuração. Em seguida, criamos um grupo ElastiCache de segurança. Definimos o nome deste recurso, declaramos seu tipo e adicionamos uma descrição para o security group. Por fim, definimos as regras de entrada do grupo de ElastiCache segurança para permitir o acesso somente de instâncias dentro do grupo de ElastiCache segurança (`MyCacheSecurityGroup`) e do grupo de segurança do Elastic Beanstalk (). `AWSEBSecurityGroup` O nome do parâmetro, `AWSEBSecurityGroup`, é o nome do recurso fixo fornecido pelo Elastic Beanstalk. Você deve adicionar regras de entrada `AWSEBSecurityGroup` ao seu grupo de ElastiCache segurança para que seu aplicativo Elastic Beanstalk se conecte às instâncias em seu cluster. ElastiCache 

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.
          
Resources:
  MyElastiCache:
    Type: AWS::ElastiCache::CacheCluster
    Properties:
      CacheNodeType: 
         Fn::GetOptionSetting:
             OptionName : CacheNodeType
             DefaultValue: cache.m1.small
      NumCacheNodes: 
           Fn::GetOptionSetting:
             OptionName : NumCacheNodes
             DefaultValue: 1
      Engine: 
           Fn::GetOptionSetting:
             OptionName : Engine
             DefaultValue: memcached
      CacheSecurityGroupNames:
        - Ref: MyCacheSecurityGroup
  MyCacheSecurityGroup:
    Type: AWS::ElastiCache::SecurityGroup
    Properties:
      Description: "Lock cache down to webserver access only"
  MyCacheSecurityGroupIngress:
    Type: AWS::ElastiCache::SecurityGroupIngress
    Properties:
      CacheSecurityGroupName: 
        Ref: MyCacheSecurityGroup
      EC2SecurityGroupName:
        Ref: AWSEBSecurityGroup
```

Para obter mais informações sobre os recursos usados neste exemplo de arquivo de configuração, consulte as seguintes referências: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::ElastiCache::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html)
+ [AWS::ElastiCache: SecurityGroupIngress](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html)

Crie um arquivo de configuração separado chamado `options.config` e defina as opções de configurações personalizadas. 

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     CacheNodeType : cache.m1.small
     NumCacheNodes : 1
     Engine : memcached
```

Essas linhas fazem com que o Elastic Beanstalk obtenha os valores das propriedades,, e Engine dos valores **CacheNodeType,** e Engine em um arquivo **CacheNodeTypede NumCacheNodes** configuração (options.config em nosso exemplo) que contém uma seção option\$1settings **com** uma seção aws:elasticbeanstalk:customoption que contém um par nome-valor que contém o valor real a ser usado. NumCacheNodes No exemplo acima, isso significa que cache.m1.small, 1 e Memcached seriam usados para os valores. Para saber mais sobre o `Fn::GetOptionSetting`, consulte [Funções](ebextensions-functions.md).

## EC2-VPC (padrão)
<a name="customize-environment-resources-elasticache-defaultvpc"></a>

Esse exemplo adiciona um ElastiCache cluster da Amazon a um ambiente com instâncias lançadas na plataforma EC2-VPC. A informação nessa seção se aplica especificamente a um cenário em que o EC2 inicia instâncias na VPC padrão. Todas as propriedades neste exemplo são as mínimas necessárias que devem ser definidas para cada tipo de recurso. Para obter mais informações sobre o padrão VPCs, consulte [Sua VPC e sub-redes padrão](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html).

**nota**  
Este exemplo cria AWS recursos, pelos quais você pode ser cobrado. Para obter mais informações sobre AWS preços, consulte[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Alguns serviços fazem parte do nível de uso AWS gratuito. Se for um cliente novo, você pode testar esses serviços gratuitamente. Consulte [https://aws.amazon.com/free/](https://aws.amazon.com/free/) para obter mais informações.

Para usar esse exemplo, faça o seguinte:

1. Crie um diretório `[.ebextensions](ebextensions.md)` no diretório de nível superior do pacote de origem. 

1. Crie dois arquivos de configuração com a extensão `.config` e os coloque no diretório `.ebextensions`. Um arquivo de configuração define os recursos, e o outro arquivo de configuração define as opções.

1. Implante a aplicação no Elastic Beanstalk.

   YAML depende de um recuo consistente. Compare o nível de recuo ao substituir o conteúdo em um arquivo de configuração de exemplo e se confira se o editor de texto usa espaços, e não caracteres de tabulação, como recuo.

Agora nomeie o arquivo de configuração de recursos `elasticache.config`. Para criar o ElastiCache cluster, este exemplo especifica o nome do recurso do ElastiCache cluster (`MyElastiCache`), declara seu tipo e, em seguida, configura as propriedades do cluster. O exemplo faz referência ao ID do recurso do security group que criamos e definimos neste arquivo de configuração.

Depois, criamos um security group do EC2. Definimos o nome deste recurso, declaramos o tipo, adicionamos uma descrição e definimos as regras de entrada no security group para permitir o acesso somente a partir de instâncias dentro do security group do Elastic Beanstalk (`AWSEBSecurityGroup`). (O nome do parâmetro,`AWSEBSecurityGroup`, é um nome de recurso fixo fornecido pelo Elastic Beanstalk. Você deve adicionar regras de entrada `AWSEBSecurityGroup` ao seu grupo de ElastiCache segurança para que seu aplicativo Elastic Beanstalk se conecte às instâncias em seu cluster.) ElastiCache 

As regras de entrada para o security group do EC2 também definem o protocolo de IP e os números de portas em que os nós de cache podem aceitar conexões. Para Redis, o número padrão da porta é `6379`.

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.

Resources:
  MyCacheSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "Lock cache down to webserver access only"
      SecurityGroupIngress :
        - IpProtocol : "tcp"
          FromPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          ToPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          SourceSecurityGroupName:
            Ref: "AWSEBSecurityGroup"
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType:
        Fn::GetOptionSetting:
          OptionName : "CacheNodeType"
          DefaultValue : "cache.t2.micro"
      NumCacheNodes:
        Fn::GetOptionSetting:
          OptionName : "NumCacheNodes"
          DefaultValue : "1"
      Engine:
        Fn::GetOptionSetting:
          OptionName : "Engine"
          DefaultValue : "redis"
      VpcSecurityGroupIds:
        -
          Fn::GetAtt:
            - MyCacheSecurityGroup
            - GroupId

Outputs:
  ElastiCache:
    Description : "ID of ElastiCache Cache Cluster with Redis Engine"
    Value :
      Ref : "MyElastiCache"
```

Para obter mais informações sobre os recursos usados neste exemplo de arquivo de configuração, consulte as seguintes referências: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)

Depois, nomeie o arquivo de configuração de opções `options.config` e defina as opções de configurações personalizadas. 

```
option_settings:
  "aws:elasticbeanstalk:customoption":
    CacheNodeType : cache.t2.micro
    NumCacheNodes : 1
    Engine : redis
    CachePort : 6379
```

Essas linhas instruem o Elastic Beanstalk para obter os valores para as propriedades `CacheNodeType`, `NumCacheNodes`, `Engine` e `CachePort` dos valores `CacheNodeType`, `NumCacheNodes`, `Engine` e `CachePort` em um arquivo de configuração (`options.config` em nosso exemplo). Esse arquivo inclui uma seção de `aws:elasticbeanstalk:customoption` (em `option_settings`) que contém pares de nome e valor com o valores reais para serem usados. No exemplo anterior, `cache.t2.micro`, `1`, `redis` e `6379` seriam usados para os valores. Para saber mais sobre o `Fn::GetOptionSetting`, consulte [Funções](ebextensions-functions.md).

## EC2-VPC (personalizado)
<a name="customize-environment-resources-elasticache-targetedvpc"></a>

Se você criar uma VPC personalizada na plataforma EC2-VPC e especificá-la como a VPC na qual o EC2 executa instâncias, o processo de adicionar um ElastiCache cluster Amazon ao seu ambiente será diferente daquele de uma VPC padrão. A principal diferença é que você precisa criar um grupo de sub-redes para o ElastiCache cluster. Todas as propriedades neste exemplo são as mínimas necessárias que devem ser definidas para cada tipo de recurso.

**nota**  
Este exemplo cria AWS recursos, pelos quais você pode ser cobrado. Para obter mais informações sobre AWS preços, consulte[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Alguns serviços fazem parte do nível de uso AWS gratuito. Se for um cliente novo, você pode testar esses serviços gratuitamente. Consulte [https://aws.amazon.com/free/](https://aws.amazon.com/free/) para obter mais informações.

Para usar esse exemplo, faça o seguinte:

1. Crie um diretório `[.ebextensions](ebextensions.md)` no diretório de nível superior do pacote de origem. 

1. Crie dois arquivos de configuração com a extensão `.config` e os coloque no diretório `.ebextensions`. Um arquivo de configuração define os recursos, e o outro arquivo de configuração define as opções.

1. Implante a aplicação no Elastic Beanstalk.

   YAML depende de um recuo consistente. Compare o nível de recuo ao substituir o conteúdo em um arquivo de configuração de exemplo e se confira se o editor de texto usa espaços, e não caracteres de tabulação, como recuo.

Agora nomeie o arquivo de configuração de recursos `elasticache.config`. Para criar o ElastiCache cluster, este exemplo especifica o nome do recurso do ElastiCache cluster (`MyElastiCache`), declara seu tipo e, em seguida, configura as propriedades do cluster. As propriedades no exemplo fazem referência ao nome do grupo de sub-redes do ElastiCache cluster, bem como ao ID do recurso do grupo de segurança que criamos e definimos nesse arquivo de configuração.

Depois, criamos um security group do EC2. Definimos o nome deste recurso, declaramos o tipo, adicionamos uma descrição, o ID da VPC, e definimos as regras de entrada no security group para permitir o acesso somente a partir das instâncias dentro do security group do Elastic Beanstalk (`AWSEBSecurityGroup`). (O nome do parâmetro,`AWSEBSecurityGroup`, é um nome de recurso fixo fornecido pelo Elastic Beanstalk. Você deve adicionar regras de entrada `AWSEBSecurityGroup` ao seu grupo de ElastiCache segurança para que seu aplicativo Elastic Beanstalk se conecte às instâncias em seu cluster.) ElastiCache 

As regras de entrada para o security group do EC2 também definem o protocolo de IP e os números de portas em que os nós de cache podem aceitar conexões. Para Redis, o número padrão da porta é `6379`. Por fim, esse exemplo cria um grupo de sub-redes para o ElastiCache cluster. Definimos o nome desse recurso, declaramos seu tipo e adicionamos uma descrição e um ID da sub-rede no grupo de sub-rede.

**nota**  
Recomendamos que você use sub-redes privadas para o ElastiCache cluster. Para obter mais informações sobre uma VPC com uma sub-rede privada, consulte [https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html).

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.

Resources:
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType:
        Fn::GetOptionSetting:
          OptionName : "CacheNodeType"
          DefaultValue : "cache.t2.micro"
      NumCacheNodes:
        Fn::GetOptionSetting:
          OptionName : "NumCacheNodes"
          DefaultValue : "1"
      Engine:
        Fn::GetOptionSetting:
          OptionName : "Engine"
          DefaultValue : "redis"
      CacheSubnetGroupName:
        Ref: "MyCacheSubnets"
      VpcSecurityGroupIds:
        - Ref: "MyCacheSecurityGroup"
  MyCacheSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "Lock cache down to webserver access only"
      VpcId:
        Fn::GetOptionSetting:
          OptionName : "VpcId"
      SecurityGroupIngress :
        - IpProtocol : "tcp"
          FromPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          ToPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          SourceSecurityGroupId:
            Ref: "AWSEBSecurityGroup"
  MyCacheSubnets:
    Type: "AWS::ElastiCache::SubnetGroup"
    Properties:
      Description: "Subnets for ElastiCache"
      SubnetIds:
        Fn::GetOptionSetting:
          OptionName : "CacheSubnets"
Outputs:
  ElastiCache:
    Description : "ID of ElastiCache Cache Cluster with Redis Engine"
    Value :
      Ref : "MyElastiCache"
```

Para obter mais informações sobre os recursos usados neste exemplo de arquivo de configuração, consulte as seguintes referências: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
+ [AWS::ElastiCache::SubnetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html)

Depois, nomeie o arquivo de configuração de opções `options.config` e defina as opções de configurações personalizadas.

**nota**  
No exemplo a seguir, substitua o exemplo `CacheSubnets` e os valores de `VpcId` com suas próprias sub-redes e VPC.

```
option_settings:
  "aws:elasticbeanstalk:customoption":
    CacheNodeType : cache.t2.micro
    NumCacheNodes : 1
    Engine : redis
    CachePort : 6379
    CacheSubnets:
      - subnet-1a1a1a1a
      - subnet-2b2b2b2b
      - subnet-3c3c3c3c
    VpcId: vpc-4d4d4d4d
```

Essas linhas instruem o Elastic Beanstalk para obter os valores para as propriedades `CacheNodeType`, `NumCacheNodes`, `Engine`, `CachePort`, `CacheSubnets` e `VpcId` dos valores `CacheNodeType`, `NumCacheNodes`, `Engine`, `CachePort`, `CacheSubnets` e `VpcId` em um arquivo de configuração (`options.config` em nosso exemplo). Esse arquivo inclui uma seção de `aws:elasticbeanstalk:customoption` (em `option_settings`) que contém pares de nome e valor com os valores de exemplo. No exemplo acima, `cache.t2.micro`, `1`, `redis`, `6379`, `subnet-1a1a1a1a`, `subnet-2b2b2b2b`, `subnet-3c3c3c3c` e `vpc-4d4d4d4d` seriam usados para os valores. Para saber mais sobre o `Fn::GetOptionSetting`, consulte [Funções](ebextensions-functions.md).

# Exemplo: SQS e CloudWatch SNS
<a name="customize-environment-resources-sqs"></a>

Este exemplo adiciona uma fila do Amazon SQS e um alarme no comprimento da fila para o ambiente. As propriedades que você vê neste exemplo são as mínimas necessárias a serem definidas para cada um desses recursos. Você pode baixar o exemplo em [SQS, SNS e. CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/SNS.config) 

**nota**  
Este exemplo cria AWS recursos, pelos quais você pode ser cobrado. Para obter mais informações sobre AWS preços, consulte[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Alguns serviços fazem parte do nível de uso AWS gratuito. Se for um cliente novo, você pode testar esses serviços gratuitamente. Consulte [https://aws.amazon.com/free/](https://aws.amazon.com/free/) para obter mais informações.

Para usar esse exemplo, faça o seguinte:

1. Crie um diretório `[.ebextensions](ebextensions.md)` no diretório de nível superior do pacote de origem. 

1. Crie dois arquivos de configuração com a extensão `.config` e os coloque no diretório `.ebextensions`. Um arquivo de configuração define os recursos, e o outro arquivo de configuração define as opções.

1. Implante a aplicação no Elastic Beanstalk.

   YAML depende de um recuo consistente. Compare o nível de recuo ao substituir o conteúdo em um arquivo de configuração de exemplo e se confira se o editor de texto usa espaços, e não caracteres de tabulação, como recuo.

Crie um arquivo de configuração (por exemplo, sqs.config) que define os recursos. Neste exemplo, criamos uma fila SQS e definimos a propriedade `VisbilityTimeout` no recurso `MySQSQueue`. Em seguida, criamos um `Topic` SNS e especificamos que o e-mail seja enviado para `someone@example.com` quando o alarme for acionado. Por fim, criamos um CloudWatch alarme se a fila aumentar além de 10 mensagens. Na propriedade `Dimensions`, especificamos o nome da dimensão e o valor que representa a medida da dimensão. Usamos `Fn::GetAtt` para retornar o valor de `QueueName` do `MySQSQueue`.

```
#This sample requires you to create a separate configuration file to define the custom options for the SNS topic and SQS queue.
Resources:
  MySQSQueue:
    Type: AWS::SQS::Queue
    Properties: 
      VisibilityTimeout:
        Fn::GetOptionSetting:
          OptionName: VisibilityTimeout
          DefaultValue: 30
  AlarmTopic:
    Type: AWS::SNS::Topic
    Properties: 
      Subscription:
        - Endpoint:
            Fn::GetOptionSetting:
              OptionName: AlarmEmail
              DefaultValue: "nobody@amazon.com"
          Protocol: email
  QueueDepthAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: "Alarm if queue depth grows beyond 10 messages"
      Namespace: "AWS/SQS"
      MetricName: ApproximateNumberOfMessagesVisible
      Dimensions:
        - Name: QueueName
          Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"] }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 1
      Threshold: 10
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: AlarmTopic
      InsufficientDataActions:
        - Ref: AlarmTopic

Outputs :
  QueueURL: 
    Description : "URL of newly created SQS Queue"
    Value : { Ref : "MySQSQueue" }
  QueueARN :
    Description : "ARN of newly created SQS Queue"
    Value : { "Fn::GetAtt" : [ "MySQSQueue", "Arn"]}
  QueueName :
    Description : "Name newly created SQS Queue"
    Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"]}
```

Para obter mais informações sobre os recursos usados neste exemplo de arquivo de configuração, consulte as seguintes referências: 
+ [AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)
+ [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)
+ [AWS::CloudWatch::Alarm](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html)

Crie um arquivo de configuração separado chamado `options.config` e defina as opções de configurações personalizadas.

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     VisibilityTimeout : 30
     AlarmEmail : "nobody@example.com"
```

Essas linhas instruem o Elastic Beanstalk a obter os valores das propriedades e Subscription Endpoint dos valores **VisibilityTimeout e** Subscription Endpoint em um arquivo **VisibilityTimeout de** configuração (options.config em nosso exemplo) que contém uma seção option\$1settings **com** uma seção aws:elasticbeanstalk:customoption que contém um par nome-valor que contém o valor real a ser usado. No exemplo acima, isso significa que 30 e "nobody@amazon.com" seriam usados para os valores. Para saber mais sobre o `Fn::GetOptionSetting`, consulte [Funções](ebextensions-functions.md).

# Exemplo: DynamoDB CloudWatch e SNS
<a name="customize-environment-resources-dynamodb"></a>

Esse arquivo de configuração configura a tabela do DynamoDB como um manipulador de sessão para um aplicativo baseado em PHP usando o SDK for PHP 2. AWS Para usar este exemplo, você deve ter um perfil de instância do IAM, que é adicionado às instâncias em seu ambiente e usado para acessar a tabela do DynamoDB.

 Você poderá fazer download do exemplo que usaremos nesta etapa em [Suporte de sessão do DynamoDB demonstrativo](https://elasticbeanstalk.s3.amazonaws.com/extensions/PHP-DynamoDB-Session-Support.zip). A amostra contém os seguintes arquivos:
+ O aplicativo de exemplo, `index.php`
+ Um arquivo de configuração,`dynamodb.config`, para criar e configurar uma tabela do DynamoDB e AWS outros recursos e instalar o software nas instâncias do EC2 que hospedam o aplicativo em um ambiente do Elastic Beanstalk
+ Um arquivo de configuração, `options.config`, que substitui os valores padrão em `dynamodb.config` por configurações específicas para essa determinada instalação

**`index.php`**

```
<?php

// Include the SDK using the Composer autoloader
require '../vendor/autoload.php';

use Aws\DynamoDb\DynamoDbClient;

// Grab the session table name and region from the configuration file
list($tableName, $region) = file(__DIR__ . '/../sessiontable');
$tableName = rtrim($tableName);
$region = rtrim($region);

// Create a DynamoDB client and register the table as the session handler
$dynamodb = DynamoDbClient::factory(array('region' => $region));
$handler = $dynamodb->registerSessionHandler(array('table_name' => $tableName, 'hash_key' => 'username'));

// Grab the instance ID so we can display the EC2 instance that services the request
$instanceId = file_get_contents("http://169.254.169.254/latest/meta-data/instance-id");
?>
<h1>Elastic Beanstalk PHP Sessions Sample</h1>
<p>This sample application shows the integration of the Elastic Beanstalk PHP
container and the session support for DynamoDB from the AWS SDK for PHP 2.
Using DynamoDB session support, the application can be scaled out across
multiple web servers. For more details, see the
<a href="https://aws.amazon.com/php/">PHP Developer Center</a>.</p>

<form id="SimpleForm" name="SimpleForm" method="post" action="index.php">
<?php
echo 'Request serviced from instance ' . $instanceId . '<br/>';
echo '<br/>';

if (isset($_POST['continue'])) {
  session_start();
  $_SESSION['visits'] = $_SESSION['visits'] + 1;
  echo 'Welcome back ' . $_SESSION['username'] . '<br/>';
  echo 'This is visit number ' . $_SESSION['visits'] . '<br/>';
  session_write_close();
  echo '<br/>';
  echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
  echo '<input type="Submit" value="Delete Session" name="killsession" id="killsession"/>';
} elseif (isset($_POST['killsession'])) {
  session_start();
  echo 'Goodbye ' . $_SESSION['username'] . '<br/>';
  session_destroy();
  echo 'Username: <input type="text" name="username" id="username" size="30"/><br/>';
  echo '<br/>';
  echo '<input type="Submit" value="New Session" name="newsession" id="newsession"/>';
} elseif (isset($_POST['newsession'])) {
  session_start();
  $_SESSION['username'] = $_POST['username'];
  $_SESSION['visits'] = 1;
  echo 'Welcome to a new session ' . $_SESSION['username'] . '<br/>';
  session_write_close();
  echo '<br/>';
  echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
  echo '<input type="Submit" value="Delete Session" name="killsession" id="killsession"/>';
} else {
  echo 'To get started, enter a username.<br/>';
  echo '<br/>';
  echo 'Username: <input type="text" name="username" id="username" size="30"/><br/>';
  echo '<input type="Submit" value="New Session" name="newsession" id="newsession"/>';
}
?>
</form>
```

**`.ebextensions/dynamodb.config`**

```
Resources:
  SessionTable:
    Type: AWS::DynamoDB::Table
    Properties:
      KeySchema: 
        HashKeyElement:
          AttributeName:
            Fn::GetOptionSetting:
              OptionName : SessionHashKeyName
              DefaultValue: "username"
          AttributeType:
            Fn::GetOptionSetting:
              OptionName : SessionHashKeyType
              DefaultValue: "S"
      ProvisionedThroughput:
        ReadCapacityUnits:
          Fn::GetOptionSetting:
            OptionName : SessionReadCapacityUnits
            DefaultValue: 1
        WriteCapacityUnits:
          Fn::GetOptionSetting:
            OptionName : SessionWriteCapacityUnits
            DefaultValue: 1

  SessionWriteCapacityUnitsLimit:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, " write capacity limit on the session table." ]]}
      Namespace: "AWS/DynamoDB"
      MetricName: ConsumedWriteCapacityUnits
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 12
      Threshold:
          Fn::GetOptionSetting:
            OptionName : SessionWriteCapacityUnitsAlarmThreshold
            DefaultValue: 240
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionReadCapacityUnitsLimit:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, " read capacity limit on the session table." ]]}
      Namespace: "AWS/DynamoDB"
      MetricName: ConsumedReadCapacityUnits
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 12
      Threshold:
          Fn::GetOptionSetting:
            OptionName : SessionReadCapacityUnitsAlarmThreshold
            DefaultValue: 240
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionThrottledRequestsAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": requests are being throttled." ]]}
      Namespace: AWS/DynamoDB
      MetricName: ThrottledRequests
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 1
      Threshold: 
        Fn::GetOptionSetting:
          OptionName: SessionThrottledRequestsThreshold
          DefaultValue: 1
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionAlarmTopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Endpoint:
            Fn::GetOptionSetting:
              OptionName: SessionAlarmEmail
              DefaultValue: "nobody@amazon.com"
          Protocol: email

files:
  "/var/app/sessiontable":
    mode: "000444"
    content: |
      `{"Ref" : "SessionTable"}`
      `{"Ref" : "AWS::Region"}`

  "/var/app/composer.json":
    mode: "000744"
    content:
      {
        "require": {
           "aws/aws-sdk-php": "*"
        }
      }

container_commands:
 "1-install-composer":
   command: "cd /var/app; curl -s http://getcomposer.org/installer | php"
 "2-install-dependencies":
   command: "cd /var/app; php composer.phar install"
 "3-cleanup-composer":
   command: "rm -Rf /var/app/composer.*"
```

No arquivo de configuração de exemplo, primeiro crie a tabela do DynamoDB e configure a chave primária da tabela e as unidades de capacidade para alocar recursos suficientes para fornecer a taxa de transferência solicitada. Em seguida, criamos CloudWatch alarmes para `WriteCapacity` e. `ReadCapacity` Criamos um tópico do SNS que envia um e-mail para "nobody@amazon.com" caso os limites de alarme sejam violados. 

Depois de criar e configurar nossos AWS recursos para nosso ambiente, precisamos personalizar as instâncias do EC2. Usamos a `files` chave para passar os detalhes da tabela do DynamoDB para as instâncias do EC2 em nosso ambiente, bem como adicionar um “require” no arquivo `composer.json` do SDK AWS for PHP 2. Por fim, executamos comandos de contêiner para instalar o Composer, as dependências necessárias e, em seguida, remover o instalador.

**`.ebextensions/options.config`**

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     SessionHashKeyName                      : username
     SessionHashKeyType                      : S
     SessionReadCapacityUnits                : 1
     SessionReadCapacityUnitsAlarmThreshold  : 240
     SessionWriteCapacityUnits               : 1 
     SessionWriteCapacityUnitsAlarmThreshold : 240
     SessionThrottledRequestsThreshold       : 1
     SessionAlarmEmail                       : me@example.com
```

Substitua o SessionAlarmEmail valor pelo e-mail para o qual você deseja que as notificações de alarme sejam enviadas. O arquivo `options.config` contém os valores usados para algumas das variáveis definidas em `dynamodb.config`. Por exemplo, `dynamodb.config` contém as seguintes linhas:

```
Subscription:
  - Endpoint:
      Fn::GetOptionSetting:
        OptionName: SessionAlarmEmail
        DefaultValue: "nobody@amazon.com"
```

**Essas linhas que fazem com que o Elastic Beanstalk obtenha o valor da propriedade Endpoint a **SessionAlarmEmail**partir do valor em um `options.config` arquivo de configuração (em nosso aplicativo de amostra) que contém uma seção option\$1settings **com** uma seção aws:elasticbeanstalk:customoption que contém um par nome-valor que contém o valor real a ser usado.** No exemplo acima, isso significa que **SessionAlarmEmail**seria atribuído o valor`nobody@amazon.com`.

Para obter mais informações sobre os CloudFormation recursos usados neste exemplo, consulte as seguintes referências:
+ [AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)
+ [AWS::CloudWatch::Alarm](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html)
+ [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)