

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

# 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
```