Use o modelo de lançamento do Amazon EC2 com AWS Batch - AWS Batch

Use o modelo de lançamento do Amazon EC2 com AWS Batch

O AWS Batch suporta o uso de modelos de lançamento do Amazon EC2 com seus ambientes de computação EC2. O suporte do modelo de execução permite modificar a configuração padrão de seus recursos de computação de AWS Batch sem exigir que você crie AMIs personalizadas.

nota

Os modelos de lançamento não são compatíveis com os recursos do AWS Fargate.

Você deve criar um modelo de execução antes de associá-lo a um ambiente de computação. É possível criar um modelo de execução usando o console Amazon EC2. Ou você pode usar o AWS CLI ou um AWS SDK. Por exemplo, o arquivo JSON a seguir representa um modelo de execução que redimensiona o volume de dados do Docker para o AWS Batch do recurso de computação padrão de AMI e também o configura para ser criptografado.

{ "LaunchTemplateName": "increase-container-volume-encrypt", "LaunchTemplateData": { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "Encrypted": true, "VolumeSize": 100, "VolumeType": "gp2" } } ] } }

Você pode criar o modelo de execução anterior salvando o JSON para um arquivo chamado lt-data.json e executando o seguinte comando da AWS CLI:

aws ec2 --region <region> create-launch-template --cli-input-json file://lt-data.json

Para obter mais informações sobre modelos de execução, consulte Executar uma instância de um modelo de execução, no Guia do usuário do Amazon EC2.

Se você usar um modelo de execução para criar seu ambiente de computação, poderá mover os seguintes parâmetros de ambiente de computação existentes para o seu modelo de execução:

nota

Suponha que qualquer um desses parâmetros (exceto as tags do Amazon EC2) seja especificado no modelo de execução e na configuração do ambiente de computação. Então, os parâmetros do ambiente de computação têm precedência. As tags do Amazon EC2 são mescladas entre o modelo de lançamento e a configuração do ambiente de computação. Se houver uma colisão na chave de tag, o valor na configuração do ambiente de computação tem precedência.

  • Pares de chaves do Amazon EC2

  • ID da AMI do Amazon EC2

  • IDs de grupos de segurança

  • Etiquetas do Amazon EC2

Os seguintes parâmetros de modelo de execução são ignorados por AWS Batch:

  • Tipo de instância (especifique os tipos de instâncias desejados ao criar o ambiente de computação)

  • Função de instância (especifique a função de instância desejada ao criar o ambiente de computação)

  • Sub-redes de interface de rede (especifique as sub-redes desejadas ao criar seu ambiente de computação)

  • Opções de mercado de instâncias (o AWS Batch deve controlar a configuração da instância spot)

  • Desativar o encerramento da API (o AWS Batch deve controlar o ciclo de vida da instância)

AWS Batch atualiza o modelo de execução somente com uma nova versão do modelo de execução durante as atualizações da infraestrutura. Para obter mais informações, consulte Atualizar um ambiente computacional no AWS Batch.

Modelos de execução padrão e substituídos

Você pode definir um modelo de execução padrão para o ambiente computacional e um modelo de execução substituto para tipos e famílias de instâncias específicos. Isso pode ser útil para que o modelo padrão seja usado para a maioria dos tipos de instância nos ambientes computacionais.

As variáveis de substituição $Default e $Latest podem ser usadas em vez de nomear uma versão específica. Se você não fornecer um modelo de execução substituto, o modelo de execução padrão será aplicado automaticamente.

Se você usar a variável $Default ou $Latest, o AWS Batch aplicará as informações atuais no momento em que o ambiente computacional for criado. Se a versão padrão ou mais recente for alterada no futuro, você deverá atualizar as informações por meio de UpdateComputeEnvironment ou por meio de Console de gerenciamento da AWS - AWS Batch.

Para fornecer flexibilidade adicional, você pode definir modelos de execução substitutivos aplicados a tipos ou famílias de instâncias computacionais específicos.

nota

Você pode especificar até dez (10) modelos de substituições de execução para cada ambiente computacional.

Use o parâmetro targetInstanceTypes para selecionar o tipo de instância ou a família que deve usar esse modelo de execução substituto. O tipo de instância ou família deve ser identificado primeiro pelo parâmetro instanceTypes.

Se você definir substituições do modelo de execução e decidir removê-las posteriormente, poderá passar uma matriz vazia para cancelar a definição do parâmetro overrides na operação da API UpdateComputeEnvironment. Você também pode optar por não incluir o parâmetro overrides ao enviar a operação da API UpdateComputeEnvironment. Para obter mais informações, consulte, LaunchTemplateSpecification.overrides

Para obter mais informações, consulte LaunchTemplateSpecificationOverride.targetInstanceTypes no Guia de referência da API AWS Batch.

Dados de usuário do Amazon EC2 em modelos de execução

Você pode fornecer os dados de usuário do Amazon EC2 em seu modelo de execução que é executado por cloud-init quando suas instâncias são iniciadas. Seus dados de usuário podem executar cenários de configuração comuns, incluindo, dentre outros:

Os dados do usuário do Amazon EC2 em modelos de execução devem estar no formato MIME multi-part archive. Isso ocorre porque seus dados de usuário são mesclados com outros dados de usuário AWS Batch necessários para configurar seus recursos de computação. Você pode combinar vários blocos de dados de usuário em um único arquivo MIME de várias partes. Por exemplo, convém combinar um boothook de nuvem que configure o daemon do Docker com um script do shell de dados do usuário que grave informações do agente de contêiner do Amazon ECS.

Se você estiver usando o AWS CloudFormation, o tipo AWS::CloudFormation::Init pode ser usado com o script auxiliar cfn-init para executar cenários de configuração comuns.

Um arquivo em várias partes MIME consiste nos seguintes componentes:

  • O tipo de conteúdo e a declaração de limite da parte: : Content-Type: multipart/mixed; boundary="==BOUNDARY=="

  • A declaração da versão MIME: : MIME-Version: 1.0

  • Um ou mais blocos de dados do usuário que contêm os seguintes componentes:

    • O limite de abertura, que sinaliza o início de um bloco de dados do usuário: --==BOUNDARY==. Você deve manter a linha antes desse limite em branco.

    • A declaração de tipo de conteúdo para o bloco: Content-Type: text/cloud-config; charset="us-ascii". Para mais informações sobre tipos de conteúdo, consulte a documentação do Cloud-Init. Você deve manter a linha após o branco da declaração do tipo de conteúdo.

    • O conteúdo de dados do usuário, por exemplo, uma lista de comandos de shell ou diretivas do cloud-init.

  • O limite de fechamento que sinaliza o fim do arquivo MIME de várias partes: --==BOUNDARY==--. Você deve manter a linha antes do branco do limite de fechamento.

nota

Se você adicionar dados de usuário a um modelo de execução no console do Amazon EC2, você pode colá-los como texto simples ou fazer upload de um arquivo. Ou você pode fazer o upload de um arquivo. Se você usa a AWS CLI ou um SDK da AWS, primeiro, você deve codificar base64 os dados de usuário e enviar essa sequência de caracteres como o valor do parâmetro UserData quando você chama CreateLaunchTemplate, conforme mostrado neste arquivo JSON.

{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW..." } }