

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

# Criação de uma AWS ParallelCluster AMI personalizada
<a name="building-custom-ami-v3"></a>

Ao usar a interface de linha de AWS ParallelCluster comando (CLI) ou a API, você paga apenas pelos AWS recursos criados ao criar ou atualizar AWS ParallelCluster imagens e clusters. Para obter mais informações, consulte [AWS serviços usados por AWS ParallelCluster](aws-services-v3.md).

**Importante**  
Se você criar uma AMI personalizada, será necessário repetir as etapas usadas para criar sua AMI personalizada com cada versão nova do AWS ParallelCluster .

Antes de continuar lendo, recomendamos que você analise antes a seção [Ações de bootstrap personalizadas](custom-bootstrap-actions-v3.md). Determine se as modificações que deseja fazer podem ser expressas em scripts e são compatíveis com versões futuras do AWS ParallelCluster .

Embora criar uma AMI personalizada em geral não seja o ideal, há cenários específicos em que AWS ParallelCluster é necessário criar uma AMI personalizada para. Este tutorial mostra como criar uma AMI personalizada para esses cenários.

**Pré-requisitos**
+ AWS ParallelCluster [está instalado](install-v3-parallelcluster.md).
+ O AWS CLI [está instalado e configurado.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ Você tem um [par de chaves do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
+ Você tem um perfil do IAM com as [permissões](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies) necessárias para executar a CLI [`pcluster`](pcluster-v3.md) e compilar imagens.

## Como personalizar a AWS ParallelCluster AMI
<a name="how-to-customize-the-aws-parallelcluster-ami-v3"></a>

Há duas maneiras de criar uma AWS ParallelCluster AMI personalizada. Um desses dois métodos é criar uma nova AMI usando a AWS ParallelCluster CLI. Outro método exige que você faça modificações manuais para criar uma nova AMI que esteja disponível na sua Conta da AWS.

## Crie uma AWS ParallelCluster AMI personalizada
<a name="build-a-custom-aws-parallelcluster-ami-v3"></a>

Se você tiver uma AMI e um software personalizados, poderá aplicar as alterações necessárias AWS ParallelCluster em cima deles. AWS ParallelCluster depende do serviço EC2 Image Builder para criar designs personalizados. AMIs Para obter mais informações, consulte o [Guia do usuário do Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html).

Principais pontos:
+ O processo leva cerca de 1 hora. Esse tempo pode variar se houver [`Build`](Build-v3.md) / [`Components`](Build-v3.md#Build-v3-Components) adicionais a serem instalados no momento da construção.
+ A AMI é marcada com as versões dos componentes principais. Isso inclui o kernel, o programador e o driver [EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html). Um subconjunto das versões dos componentes também é relatado na descrição da AMI.
+ A partir da AWS ParallelCluster versão 3.0.0, um novo conjunto de comandos da CLI pode ser usado para gerenciar o ciclo de vida das imagens. Isso inclui [`build-image`](pcluster.build-image-v3.md), [`list-images`](pcluster.list-images-v3.md), [`describe-image`](pcluster.describe-image-v3.md), e [`delete-image`](pcluster.delete-image-v3.md).
+ Esse método é repetível. Você pode executá-lo novamente para se manter AMIs atualizado (por exemplo, atualizações do sistema operacional) e usá-las ao atualizar um cluster existente.

**nota**  
Se você usar esse método na Partição da AWS China, poderá obter erros de rede. Por exemplo, você pode ver esses erros no `pcluster build-image` comando quando ele baixa pacotes de GitHub ou de um repositório do sistema operacional. Se ela exceder esse limite, recomendamos usar um dos métodos alternativos a seguir:  
Siga a abordagem [Modificar uma AWS ParallelCluster AMI](#modify-an-aws-parallelcluster-ami-v3) que ignora esse comando.
Crie a imagem em outra partição e região, como`us-east-1`, e depois store/restore mova-a para a região da China. Para ter mais informações, consulte [Armazenar e restaurar uma AMI usando o S3](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-store-restore.html) no *Guia do usuário do Amazon EC2*.

Etapas:

1. Configure suas Conta da AWS credenciais para que o AWS ParallelCluster cliente possa fazer chamadas para operações de AWS API em seu nome. Para obter uma lista das permissões necessárias, consulte [AWS Identity and Access Management permissões em AWS ParallelCluster](iam-roles-in-parallelcluster-v3.md).

1. Crie um arquivo básico de configuração de *imagem de compilação*. Para fazer isso, especifique o [`InstanceType`](Build-v3.md#yaml-build-image-Build-InstanceType) a ser usado para criar a imagem e o [`ParentImage`](Build-v3.md#yaml-build-image-Build-ParentImage). Eles são usados como ponto de partida para criar a AMI. Para obter mais informações sobre parâmetros opcionais de criação, consulte [Configuração de imagem](image-builder-configuration-file-v3.md).

   ```
   Build:
    InstanceType: <BUILD_INSTANCE_TYPE>
    ParentImage: <BASE_AMI_ID>
   ```

1. Use o comando CLI [`pcluster build-image`](pcluster.build-image-v3.md)para criar uma AWS ParallelCluster AMI a partir da AMI que você fornece como base.

   ```
   $ pcluster build-image --image-id IMAGE_ID --image-configuration IMAGE_CONFIG.yaml --region REGION
       {
    "image": {
      "imageId": "IMAGE_ID",
      "imageBuildStatus": "BUILD_IN_PROGRESS",
      "cloudformationStackStatus": "CREATE_IN_PROGRESS",
      "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678",
      "region": "us-east-1",
      "version": "3.15.0"
    }
   }
   ```
**Atenção**  
O `pcluster build-image` usa a VPC padrão. Se você excluir a VPC padrão usando AWS Control Tower nossa AWS Landing Zone, a ID da sub-rede deverá ser especificada no arquivo de configuração da imagem. Para obter mais informações, consulte [`SubnetId`](HeadNode-v3.md#yaml-HeadNode-Networking-SubnetId).

   Para obter uma lista de outros parâmetros, consulte a página de referência do comando [`pcluster build-image`](pcluster.build-image-v3.md). Os resultados do comando anterior são os seguintes:
   + Uma CloudFormation pilha é criada com base na configuração da imagem. A pilha inclui todos os recursos do EC2 Image Builder necessários para a construção.
   + Os recursos criados incluem os componentes oficiais do Image Builder AWS ParallelCluster aos quais os componentes personalizados do Image Builder podem ser adicionados. Para obter mais informações, consulte [Criar um componente personalizado com o Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-component.html) no Guia do *usuário do EC2 Image Builder*.
   + O EC2 Image Builder inicia uma instância de compilação, aplica AWS ParallelCluster o livro de receitas, instala a pilha de software e AWS ParallelCluster executa as tarefas de configuração necessárias. O AWS ParallelCluster livro de receitas é usado para criar e inicializar AWS ParallelCluster.
   + A instância é interrompida e uma nova AMI é criada a partir dela.
   + Outra instância é executada na AMI recém-criada. Durante a fase de teste, o EC2 Image Builder executa testes definidos nos componentes do Image Builder.
   + Se a compilação for bem-sucedida, a pilha será excluída. Se a construção falhar, a pilha será retida e estará disponível para inspeção.

1. Você pode monitorar o status do processo de compilação executando o comando a seguir. Depois que a compilação for concluída, você poderá executá-la para recuperar o ID da AMI fornecido na resposta.

   ```
   $ pcluster describe-image --image-id IMAGE_ID --region REGION
       
   # BEFORE COMPLETE
   {
    "imageConfiguration": {
      "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.amazonaws.com/parallelcluster/3.15.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?...",
    },
    "imageId": "IMAGE_ID",
    "imagebuilderImageStatus": "BUILDING",
    "imageBuildStatus": "BUILD_IN_PROGRESS",
    "cloudformationStackStatus": "CREATE_IN_PROGRESS",
    "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678",
    "region": "us-east-1",
    "version": "3.15.0",
    "cloudformationStackTags": [
      {
        "value": "3.15.0",
        "key": "parallelcluster:version"
      },
      {
        "value": "IMAGE_ID",
        "key": "parallelcluster:image_name"
      },
      ...
    ],
    "imageBuildLogsArn": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/imagebuilder/ParallelClusterImage-IMAGE_ID",
    "cloudformationStackCreationTime": "2022-04-05T21:36:26.176Z"
   }
   
   # AFTER COMPLETE
   {
    "imageConfiguration": {
      "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.15.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..."
    },
    "imageId": "IMAGE_ID",
    "imageBuildStatus": "BUILD_COMPLETE",
    "region": "us-east-1",
    "ec2AmiInfo": {
        "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z",
        "amiId": "ami-1234stuv5678wxyz",
        "description": "AWS ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1",
        "state": "AVAILABLE",
        "tags": [
         {
           "value": "2021.3.11591-1.el7.x86_64",
           "key": "parallelcluster:dcv_version"
         },
         ...
        ],
      "architecture": "x86_64"
    },
    "version": "3.15.0"      
   }
   ```

1. Para criar o cluster, insira o ID de AMI no campo [`CustomAmi`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Image-CustomAmi) na configuração do cluster.

**Solução de problemas e monitoramento do processo de criação de AMI**

A criação da imagem é concluída em cerca de uma hora. Você pode monitorar o processo executando o comando [`pcluster describe-image`](pcluster.describe-image-v3.md) ou os comandos de recuperação de log.

```
$ pcluster describe-image --image-id IMAGE_ID --region REGION
```

O [`build-image`](pcluster.build-image-v3.md)comando cria uma CloudFormation pilha com todos os recursos do Amazon EC2 necessários para criar a imagem e inicia o processo do EC2 Image Builder.

Depois de executar o [`build-image`](pcluster.build-image-v3.md)comando, é possível recuperar eventos da CloudFormation pilha usando o. [`pcluster get-image-stack-events`](pcluster.get-image-stack-events-v3.md) Você pode filtrar os resultados com o parâmetro `--query` para ver os eventos mais recentes. Para obter mais informações, consulte [Filtragem AWS CLI de saída](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html) no *Guia do AWS Command Line Interface usuário*.

```
$ pcluster get-image-stack-events --image-id IMAGE_ID --region REGION --query "events[0]"
{
 "eventId": "ParallelClusterImage-CREATE_IN_PROGRESS-2022-04-05T21:39:24.725Z",
 "physicalResourceId": "arn:aws:imagebuilder:us-east-1:123456789012:image/parallelclusterimage-IMAGE_ID/3.15.0/1",
 "resourceStatus": "CREATE_IN_PROGRESS",
 "resourceStatusReason": "Resource creation Initiated",
 "resourceProperties": "{\"InfrastructureConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:infrastructure-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"ImageRecipeArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:image-recipe/parallelclusterimage-IMAGE_ID/3.15.0\",\"DistributionConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:distribution-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"Tags\":{\"parallelcluster:image_name\":\"IMAGE_ID\",\"parallelcluster:image_id\":\"IMAGE_ID\"}}",
 "stackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678",
 "stackName": "IMAGE_ID",
 "logicalResourceId": "ParallelClusterImage",
 "resourceType": "AWS::ImageBuilder::Image",
 "timestamp": "2022-04-05T21:39:24.725Z"
}
```

Após cerca de 15 minutos, os eventos da pilha aparecem na entrada de eventos de log relacionada à criação do Image Builder. Agora você pode listar fluxos de logs de imagens e monitorar as etapas do Image Builder usando os comandos [`pcluster list-image-log-streams`](pcluster.list-image-log-streams-v3.md) e [`pcluster get-image-log-events`](pcluster.get-image-log-events-v3.md).

```
$ pcluster list-image-log-streams --image-id IMAGE_ID --region REGION \
    --query 'logStreams[*].logStreamName'

 "3.15.0/1"
]

$ pcluster get-image-log-events --image-id IMAGE_ID --region REGION \
--log-stream-name 3.15.0/1 --limit 3
{
 "nextToken": "f/36295977202298886557255241372854078762600452615936671762",
 "prevToken": "b/36295977196879805474012299949460899222346900769983430672",
 "events": [
   {
     "message": "ExecuteBash: FINISHED EXECUTION",
     "timestamp": "2022-04-05T22:13:26.633Z"
   },
   {
     "message": "Document arn:aws:imagebuilder:us-east-1:123456789012:component/parallelclusterimage-test-abcd1234-ef56-gh78-ij90-1234abcd5678/3.15.0/1",
     "timestamp": "2022-04-05T22:13:26.741Z"
   },
   {
     "message": "TOE has completed execution successfully",
     "timestamp": "2022-04-05T22:13:26.819Z"
   }
 ]
}
```

Continue verificando o comando [`describe-image`](pcluster.describe-image-v3.md) até ver o status do `BUILD_COMPLETE`.

```
$ pcluster describe-image --image-id IMAGE_ID --region REGION
{
 "imageConfiguration": {
   "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.15.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..."
 },
 "imageId": "IMAGE_ID",
 "imageBuildStatus": "BUILD_COMPLETE",
 "region": "us-east-1",
 "ec2AmiInfo": {
     "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z",
     "amiId": "ami-1234stuv5678wxyz",
     "description": "AWS ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1",
     "state": "AVAILABLE",
     "tags": [
      {
        "value": "2021.3.11591-1.el7.x86_64",
        "key": "parallelcluster:dcv_version"
      },
      ...
     ],
   "architecture": "x86_64"
 },
 "version": "3.15.0"      
}
```

Se você precisar solucionar um problema de criação de AMI personalizada, crie um arquivo dos logs de imagem conforme descrito nas etapas a seguir.

É possível arquivar os logs em um bucket do Amazon S3 ou em um arquivo local, dependendo do parâmetro `--output`.

```
$ pcluster export-image-logs --image-id IMAGE_ID --region REGION \
--bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER
{
 "url": "https://BUCKET_NAME.s3.us-east-1.amazonaws.com/BUCKET-FOLDER/IMAGE_ID-logs-202209071136.tar.gz?AWSAccessKeyId=..."
}

$ pcluster export-image-logs --image-id IMAGE_ID \
--region REGION --bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER --output-file /tmp/archive.tar.gz
{
 "path": "/tmp/archive.tar.gz"
}
```

O arquivo contém os fluxos de CloudWatch registros relacionados ao processo do Image Builder e aos eventos de CloudFormation pilha. O comando pode levar alguns minutos para ser executado.

 **Gerenciando o personalizado AMIs** 

A partir da AWS ParallelCluster versão 3.0.0, um novo conjunto de comandos foi adicionado à CLI para criar, monitorar e gerenciar o ciclo de vida da imagem. Para obter mais informações sobre os comandos, consulte [comandos pcluster](pcluster-v3.md).

## Modificar uma AWS ParallelCluster AMI
<a name="modify-an-aws-parallelcluster-ami-v3"></a>

Esse método consiste em modificar uma AWS ParallelCluster AMI oficial adicionando personalização a ela. A base AWS ParallelCluster AMIs é atualizada com novos lançamentos. Eles AMIs têm todos os componentes necessários AWS ParallelCluster para funcionar quando instalados e configurados. Você pode começar com um deles como base.

Principais pontos:
+ Esse método é mais rápido que o comando [`build-image`](pcluster.build-image-v3.md). No entanto, é um processo manual e não pode ser repetido automaticamente.
+ Com esse método, você não tem acesso aos comandos de recuperação de logs e gerenciamento do ciclo de vida da imagem que estão disponíveis por meio da CLI.

Etapas:

------
#### [ New Amazon EC2 console ]

1. Encontre a AMI que corresponde à específica Região da AWS que você usa. Para encontrá-la, use o [`pcluster list-official-images`](pcluster.list-official-images-v3.md)comando com o `--region` parâmetro para selecionar os `--architecture` parâmetros Região da AWS e `--os` e específicos para filtrar a AMI desejada com o sistema operacional e a arquitetura que você deseja usar. Na saída, recupere o ID da imagem do Amazon EC2.

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon EC2 em. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. No painel de navegação, escolha **Imagens** e, em seguida **AMIs**. Pesquise a ID de imagem do EC2 recuperada, selecione a AMI e escolha **Iniciar instância a partir da AMI**.

1. Role para baixo e escolha seu **tipo de instância**.

1. Escolha seu **par de chaves** e **execute a instância**.

1. Faça login na instância usando o usuário do SO e chave SSH.

1. Personalize manualmente sua instância para atender às suas necessidades.

1. Execute o seguinte comando para preparar a instância para a criação da AMI.

   ```
   sudo /usr/local/sbin/ami_cleanup.sh
   ```

1. No console, escolha **Estado da instância** e **Interromper instância**.

   Vá para **Instâncias**, escolha a nova instância, selecione **Instance state (Estado da instância)**, e **Stop instance (Interromper instância)**.

1. [Crie uma nova AMI a partir da instância usando o console do Amazon EC2 ou AWS CLI create-image.](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html)

**Do console do Amazon EC2**

   1. No painel de navegação, escolha **Instances (Instâncias)**.

   1. Escolha a instância que você criou e modificou.

   1. Em **Ações**, escolha **Imagem**, e, em seguida, **Criar imagem**.

   1. Escolha **Create Image**.

1. Insira o ID de AMI no campo [`CustomAmi`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Image-CustomAmi) na configuração do cluster e crie um cluster.

------
#### [ Old Amazon EC2 console ]

1. Encontre a AWS ParallelCluster AMI que corresponde à específica Região da AWS que você usa. Para encontrá-la, você pode usar o [`pcluster list-official-images`](pcluster.list-official-images-v3.md)comando com o `--region` parâmetro para selecionar os `--architecture` parâmetros Região da AWS e `--os` e específicos para filtrar a AMI desejada com o sistema operacional e a arquitetura que você deseja usar. Na saída, recupere o ID da imagem do Amazon EC2.

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon EC2 em. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. No painel de navegação, escolha **Imagens** e, em seguida **AMIs**. Defina o filtro para **Imagens públicas** e pesquise a ID de imagem do EC2 recuperada, selecione a AMI e escolha **Executar**.

1. Escolha seu tipo de instância e selecione **Avançar: Configurar detalhes da instância**, ou **Revisar e iniciar** para iniciar sua instância.

1. Escolha **Executar**, selecione seu **par de chaves**, e **Executar instâncias**.

1. Faça login na instância usando o usuário do SO e chave SSH. Para obter mais informações, navegue até **Instâncias**, selecione a nova instância e **Conectar**.

1. Personalize manualmente sua instância para atender às suas necessidades.

1. Execute o seguinte comando para preparar a instância para a criação da AMI:

   ```
   sudo /usr/local/sbin/ami_cleanup.sh
   ```

1. No console do Amazon EC2, escolha **Instâncias** no painel de navegação, selecione a nova instância, **Ações**, **Estado da instância** e **Interromper**.

1. [Crie uma nova AMI a partir da instância usando o console do Amazon EC2 ou AWS CLI create-image.](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html)

**Do console do Amazon EC2**

   1. No painel de navegação, escolha **Instances (Instâncias)**.

   1. Escolha a instância que você criou e modificou.

   1. Em **Ações**, escolha **Imagem**, e, em seguida, **Criar imagem**.

   1. Escolha **Create Image**.

1. Insira o ID de AMI no campo [`CustomAmi`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Image-CustomAmi) na configuração do cluster e crie um cluster.

------