AWS Elastic Beanstalk
Guia do desenvolvedor

Personalização de software em Windows Servers

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 AWS Elastic Beanstalk.

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.

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 Migração entre versões principais da plataforma do Windows Server do Elastic Beanstalk.

Veja os eventos do ambiente e, ao mesmo tempo, desenvolva e teste 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 uma das outras chaves no mesmo arquivo. Quando isso acontece, o Elastic Beanstalk adiciona um aviso de evento para o log de eventos.

Pacotes

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

Em ambientes Windows, o Elastic Beanstalk comporta download e instalação de pacotes MSI. (Os ambientes Linux comportam outros gerenciadores de pacotes. Para obter detalhes, consulte Pacotes na página Personalização de software em servidores Linux.)

Você pode fazer referência a qualquer local externo, como um objeto do 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

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

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://mybucket.s3.amazonaws.com/myobject.msi

Origens

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

sources: target directory: location of archive file

Formatos compatíveis

Em ambientes Windows, o Elastic Beanstalk comporta o formato.zip. (Os ambientes Linux comportam outros formatos. Para obter detalhes, consulte Origens na página Personalização de software em servidores Linux.)

Você pode fazer referência a qualquer local externo, como um objeto do Amazon Simple Storage Service (Amazon S3), desde que o URL seja publicamente acessível.

Exemplo

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

sources: "c:/myproject/myapp": https://mybucket.s3.amazonaws.com/myobject.zip

Arquivos

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

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

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 | base64

authentication

(Opcional) O nome de um método de autenticação do AWS CloudFormation a ser usado. Você pode adicionar métodos de autenticação aos metadados do grupo de Auto Scaling com a chave Resources.

Exemplos

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 (\) 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 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:

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" buckets: ["elasticbeanstalk-us-east-2-123456789012"] roleName: "Fn::GetOptionSetting": Namespace: "aws:autoscaling:launchconfiguration" OptionName: "IamInstanceProfile" DefaultValue: "aws-elasticbeanstalk-ec2-role"

Comandos

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.

Sintaxe

commands: command name: command: command to run

Opções

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 seu 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. Se o sistema exigir reinicialização após a conclusão do comando, ele será reinicializado após o número de segundos especificado. Se o sistema for reinicializado como resultado de um comando, o Elastic Beanstalk recuperará até o ponto depois do comando no arquivo de configuração. O valor padrão é 60 segundos. Você também pode especificar forever, mas o sistema deve ser reinicializado antes de você executar outro comando.

Exemplo

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

Serviços

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

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

Opções

ensureRunning

(Opcional) Defina como true para garantir que o serviço esteja em execução após o encerramento do Elastic Beanstalk.

Defina como false para garantir que o serviço não esteja em execução após o encerramento do Elastic Beanstalk.

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

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

Comandos de contêiner

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.

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

container_commands: name of container_command: command: command to run

Opções

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. Se o sistema exigir reinicialização após a conclusão do comando, ele será reinicializado após o número de segundos especificado. Se o sistema for reinicializado como resultado de um comando, o Elastic Beanstalk recuperará até o ponto depois do comando no arquivo de configuração. O valor padrão é 60 segundos. Você também pode especificar forever, mas o sistema deve ser reinicializado antes de você executar outro comando.

Exemplo

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