

A Amazon não CodeCatalyst está mais aberta a novos clientes. Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte [Como migrar do CodeCatalyst](migration.md).

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

# Configuração de imagens de computação e runtime
<a name="workflows-working-compute"></a>

Em um CodeCatalyst fluxo de trabalho, você pode especificar a imagem do ambiente de computação e tempo de execução CodeCatalyst usada para executar ações do fluxo de trabalho.

*Computação* se refere ao mecanismo de computação (CPU, memória e sistema operacional) gerenciado e mantido por CodeCatalyst para executar ações de fluxo de trabalho.

**nota**  
Se a computação for definida como uma propriedade do fluxo de trabalho, ela não poderá ser definida como uma propriedade de nenhuma ação nesse fluxo de trabalho. Da mesma forma, se computação for definida como uma propriedade de qualquer ação, ela não poderá ser definida no fluxo de trabalho.

Uma *imagem do ambiente de tempo de execução* é um contêiner do Docker dentro do qual são CodeCatalyst executadas ações de fluxo de trabalho. O contêiner do Docker é executado na plataforma de computação escolhida e inclui um sistema operacional e ferramentas extras que uma ação de fluxo de trabalho pode precisar, como o AWS CLI Node.js e .tar.

**Topics**
+ [Tipos de computação](#compute.types)
+ [Frotas de computação](#compute.fleets)
+ [Propriedades da frota sob demanda](#compute.on-demand)
+ [Propriedades da frota provisionada](#compute.provisioned-fleets)
+ [Criar uma frota provisionada](projects-create-compute-resource.md)
+ [Edição de uma frota provisionada](edit-compute-resource.md)
+ [Exclusão de uma frota provisionada](delete-compute-resource.md)
+ [Atribuir uma frota ou computação a uma ação](workflows-assign-compute-resource.md)
+ [Compartilhamento de computação entre ações](compute-sharing.md)
+ [Especificação de imagens de ambiente de runtime](build-images.md)

## Tipos de computação
<a name="compute.types"></a>

CodeCatalyst oferece os seguintes tipos de computação:
+ Amazon EC2
+ AWS Lambda

O Amazon EC2 oferece flexibilidade otimizada durante as execuções de ações e o Lambda oferece velocidades otimizadas de inicialização de ações. O Lambda é compatível com execuções de ações de fluxo de trabalho mais rápidas devido a uma menor latência de inicialização. O Lambda permite executar fluxos de trabalho básicos que podem criar, testar e implantar aplicações com tecnologia sem servidor com runtimes comuns. Esses runtimes incluem Node.js, Python, Java, .NET e Go. No entanto, há alguns casos de uso não compatíveis com o Lambda e, se eles afetarem você, use o tipo de computação do Amazon EC2:
+ O Lambda não é compatível com imagens de ambiente de runtime de um registro especificado.
+ O Lambda não é compatível com ferramentas que exijam permissões de raiz. Para ferramentas como `yum` ou `rpm`, use o tipo de computação do Amazon EC2 ou outras ferramentas que não exijam permissões de raiz.
+ O Lambda não é compatível com compilações ou execuções do Docker. As seguintes ações que usam imagens do Docker não são suportadas: Deploy AWS CloudFormation stack, Deploy to Amazon ECS, Amazon S3 publish, AWS CDK bootstrap, AWS CDK deploy, invoke e Actions. AWS Lambda GitHub GitHub As ações baseadas em Docker que estão sendo executadas na ação CodeCatalyst GitHub Actions também não são compatíveis com a computação Lambda. É possível usar alternativas que não exijam permissões de raiz, como o Podman.
+ O Lambda não é compatível com a gravação em arquivos externos a `/tmp`. Ao configurar suas ações de fluxo de trabalho, você pode reconfigurar suas ferramentas para instalação ou gravação de `/tmp`. Se você tiver uma ação de criação que instale `npm`, configure-a para instalar em `/tmp`.
+ O Lambda não é compatível com runtimes de mais de 15 minutos.

## Frotas de computação
<a name="compute.fleets"></a>

CodeCatalyst oferece as seguintes frotas de computação:
+ Frotas sob demanda
+ Frotas provisionadas

Com frotas sob demanda, quando uma ação de fluxo de trabalho é iniciada, o fluxo de trabalho provisiona os recursos necessários. As máquinas são destruídas quando a ação termina. Você só paga pelo número de minutos em que executar suas ações. As frotas sob demanda são totalmente gerenciadas e incluem recursos de escalabilidade automática para lidar com picos de demanda.

CodeCatalyst também oferece frotas provisionadas que contêm máquinas alimentadas pelo Amazon EC2 que são mantidas pela. CodeCatalyst Com frotas provisionadas, você configura um conjunto de máquinas dedicadas para realizar as ações do fluxo de trabalho. Essas máquinas permanecem ociosas, prontas para processar ações imediatamente. Com frotas provisionadas, suas máquinas estão sempre funcionando e incorrerão em custos enquanto forem provisionadas.

Para criar, atualizar ou excluir uma frota, você deve ter o perfil de **administrador do espaço** ou o perfil de **administrador do projeto**.

## Propriedades da frota sob demanda
<a name="compute.on-demand"></a>

CodeCatalyst fornece as seguintes frotas sob demanda:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codecatalyst/latest/userguide/workflows-working-compute.html)

**nota**  
As especificações para frotas sob demanda variam de acordo com seu nível de faturamento. Para obter mais informações, consulte [Preço](https://codecatalyst.aws/explore/pricing).

Se nenhuma frota for selecionada, CodeCatalyst usa`Linux.x86-64.Large`.

## Propriedades da frota provisionada
<a name="compute.provisioned-fleets"></a>

Uma frota provisionada contém as seguintes propriedades: 

**Sistema operacional**  
O sistema operacional Os seguintes sistemas operacionais estão disponíveis:  
+ Amazon Linux 2
+ Windows Server 2022
**nota**  
As frotas do Windows são compatíveis somente na ação de criação. Outras ações atualmente não são compatíveis com o Windows.

**Arquitetura**  
A arquitetura do processador. As seguintes arquiteturas estão disponíveis:  
+ x86\$164
+ Arm64

**Tipo de máquina**  
O tipo de máquina para cada instância. Os seguintes tipos de máquina estão disponíveis:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codecatalyst/latest/userguide/workflows-working-compute.html)

**Capacidade**  
O número inicial de máquinas alocadas para a frota, que define o número de ações que podem ser executadas paralelamente.

**Modo de escalabilidade**  
Define o comportamento quando o número de ações excede a capacidade da frota.    
**Provisionamento da capacidade adicional sob demanda**  
Máquinas adicionais são configuradas sob demanda, o que aumenta a escala verticalmente de forma automática em resposta à execução de novas ações e, depois, reduz a escala verticalmente para a capacidade básica ao finalizar as ações. Isso pode gerar custos adicionais, já que você paga por minuto por cada máquina em funcionamento.  
**Esperar até que a capacidade adicional da frota esteja disponível**  
As execuções de ação são colocadas em uma fila até que uma máquina esteja disponível. Isso limita os custos adicionais porque nenhuma máquina adicional é alocada.

# Criar uma frota provisionada
<a name="projects-create-compute-resource"></a>

Use as instruções a seguir para criar uma frota provisionada.

**nota**  
As frotas provisionadas serão desativadas após 2 semanas de inatividade. Se usadas novamente, elas serão reativadas automaticamente, mas essa reativação pode causar uma latência.

**Como criar uma frota provisionada**

1. No painel de navegação, selecione **CI/CD** e **Computação**.

1. Selecione **Criar frota provisionada**.

1. No campo de texto **Nome da frota provisionada**, insira um nome para a frota.

1. No menu suspenso **Sistema operacional**, escolha o sistema operacional.

1. No menu suspenso **Tipo de máquina**, escolha o tipo de máquina.

1. No campo de texto **Capacidade**, insira o número máximo de máquinas na frota.

1. No menu suspenso **Modo de escalabilidade**, escolha o comportamento de sobreposição desejado. Consulte mais informações sobre esses campos em [Propriedades da frota provisionada](workflows-working-compute.md#compute.provisioned-fleets).

1. Escolha **Criar**.

Depois de criar a frota provisionada, você está pronto para atribuí-la a uma ação. Para obter mais informações, consulte [Atribuir uma frota ou computação a uma ação](workflows-assign-compute-resource.md).

# Edição de uma frota provisionada
<a name="edit-compute-resource"></a>

Use as instruções a seguir para editar uma frota provisionada.

**nota**  
As frotas provisionadas serão desativadas após 2 semanas de inatividade. Se usadas novamente, elas serão reativadas automaticamente, mas essa reativação pode causar uma latência.

**Para editar uma frota provisionada**

1. No painel de navegação, selecione **CI/CD** e **Computação**.

1. Na lista **Frota provisionada**, selecione a frota que você quer editar.

1. Escolha **Editar**.

1. No campo de texto **Capacidade**, insira o número máximo de máquinas na frota.

1. No menu suspenso **Modo de escalabilidade**, escolha o comportamento de sobreposição desejado. Consulte mais informações sobre esses campos em [Propriedades da frota provisionada](workflows-working-compute.md#compute.provisioned-fleets).

1. Escolha **Salvar**.

# Exclusão de uma frota provisionada
<a name="delete-compute-resource"></a>

Use as instruções a seguir para excluir uma frota provisionada.

**Para excluir uma frota provisionada**
**Atenção**  
Antes de excluir uma frota provisionada, remova-a de todas as ações excluindo a propriedade `Fleet` do código YAML da ação. Qualquer ação que continue referenciando uma frota provisionada depois que ela for excluída falhará na próxima vez em que a ação for executada.

1. No painel de navegação, selecione **CI/CD** e **Computação**.

1. Na lista **Frota provisionada**, selecione a frota que você quer excluir.

1. Escolha **Excluir**.

1. Insira **delete** para confirmar a exclusão.

1. Escolha **Excluir**.

# Atribuir uma frota ou computação a uma ação
<a name="workflows-assign-compute-resource"></a>

Por padrão, as ações de fluxo de trabalho usam a frota `Linux.x86-64.Large` sob demanda com um tipo de computação do Amazon EC2. Para usar uma frota provisionada ou uma frota sob demanda diferente, como `Linux.x86-64.2XLarge`, siga estas instruções.

------
#### [ Visual ]

**Antes de começar**
+ Se quiser atribuir uma frota provisionada, primeiro será necessário criá-la. Para obter mais informações, consulte [Criar uma frota provisionada](projects-create-compute-resource.md).

**Como atribuir uma frota provisionada ou um tipo de frota diferente a uma ação**

1. Abra o CodeCatalyst console em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Selecione o projeto.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho. É possível filtrar pelo nome do repositório ou da ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou o status do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **Visual**.

1. No diagrama do fluxo de trabalho, escolha a ação à qual você deseja atribuir a frota provisionada ou o novo tipo de frota.

1. Escolha a guia **Configuração**.

1. Em **Frota de computação**, faça o seguinte:

   Especifique a máquina ou a frota que executará o fluxo de trabalho ou as ações de fluxo de trabalho. Com frotas sob demanda, quando uma ação é iniciada, o fluxo de trabalho provisiona os recursos necessários e as máquinas são destruídas quando a ação termina. Exemplos de frota sob demanda: `Linux.x86-64.Large`, `Linux.x86-64.XLarge`. Para ter mais informações sobre frotas sob demanda, consulte [Propriedades da frota sob demanda](workflows-working-compute.md#compute.on-demand).

   Com frotas provisionadas, você configura um conjunto de máquinas dedicadas para realizar as ações do fluxo de trabalho. Essas máquinas permanecem ociosas, prontas para processar ações imediatamente. Para ter mais informações sobre frotas provisionadas, consulte [Propriedades da frota provisionada](workflows-working-compute.md#compute.provisioned-fleets).

   Se `Fleet` for omitido, o padrão será `Linux.x86-64.Large`.

1. (Opcional) Selecione **Validar** para validar o código YAML do fluxo de trabalho antes de confirmar.

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------
#### [ YAML ]

**Antes de começar**
+ Se quiser atribuir uma frota provisionada, primeiro será necessário criá-la. Para obter mais informações, consulte [Criar uma frota provisionada](projects-create-compute-resource.md).

**Como atribuir uma frota provisionada ou um tipo de frota diferente a uma ação**

1. Abra o CodeCatalyst console em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Selecione o projeto.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho. É possível filtrar pelo nome do repositório ou da ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou o status do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **YAML**.

1. Encontre a ação à qual você deseja atribuir a frota provisionada ou o novo tipo de frota.

1. Na ação, adicione uma propriedade `Compute` e defina `Fleet` com o nome da frota ou o tipo de frota sob demanda. Para ter mais informações, consulte a descrição da propriedade `Fleet` em [Ações de criação e de teste YAML](build-action-ref.md) para a ação.

1. (Opcional) Selecione **Validar** para validar o código YAML do fluxo de trabalho antes de confirmar.

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------

# Compartilhamento de computação entre ações
<a name="compute-sharing"></a>

Por padrão, as ações em um fluxo de trabalho são executadas em instâncias separadas em uma [frota](workflows-working-compute.md#compute.fleets). Esse comportamento fornece ações com isolamento e previsibilidade sobre o estado das entradas. O comportamento padrão requer configuração explícita para compartilhar contexto, como arquivos e variáveis, entre as ações. 

O compartilhamento de computação é um recurso que permite executar todas as ações em um fluxo de trabalho na mesma instância. Usar o compartilhamento de computação pode proporcionar runtimes de fluxo de trabalho mais rápidos, pois menos tempo é gasto no provisionamento de instâncias. Você também pode compartilhar arquivos (artefatos) entre ações sem configuração adicional do fluxo de trabalho.

Quando um fluxo de trabalho é executado usando o compartilhamento de computação, uma instância na frota padrão ou especificada é reservada durante todas as ações nesse fluxo de trabalho. Quando a execução do fluxo de trabalho é concluída, a reserva da instância é liberada.

**Topics**
+ [Execução de várias ações em computação compartilhada](#how-to-compute-share)
+ [Considerações sobre compartilhamento de computação](#compare-compute-sharing)
+ [Ativação do compartilhamento de computação](#compute-sharing-steps)
+ [Exemplos](#compute-sharing-examples)

## Execução de várias ações em computação compartilhada
<a name="how-to-compute-share"></a>

Você pode usar o atributo `Compute` no YAML de definição no nível do fluxo de trabalho para especificar as propriedades de compartilhamento de frota e computação das ações. Também é possível configurar propriedades de computação usando o editor visual no CodeCatalyst. Para especificar uma frota, defina o nome de uma frota existente, defina o tipo de computação como **EC2** e ative o compartilhamento de computação.

**nota**  
Só haverá suporte para o compartilhamento de computação se o tipo de computação estiver definido como **EC2**. Ele não é compatível com o sistema operacional Windows Server 2022. Para ter informações sobre frotas, tipos e propriedades de computação, consulte [Configuração de imagens de computação e runtime](workflows-working-compute.md).

**nota**  
Se você estiver no nível Gratuito e especificar a frota `Linux.x86-64.XLarge` ou `Linux.x86-64.2XLarge` manualmente no YAML de definição de fluxo de trabalho, a ação ainda será executada na frota padrão (`Linux.x86-64.Large`). Para ter mais informações sobre disponibilidade e preços de computação, consulte a [tabela com as opções de níveis](https://codecatalyst.aws/explore/pricing). 

Quando o compartilhamento de computação está ativado, a pasta que contém a origem do fluxo de trabalho é copiada automaticamente entre as ações. Você não precisa configurar artefatos de saída e referenciá-los como artefatos de entrada em uma definição de fluxo de trabalho (arquivo YAML). Como autor do fluxo de trabalho, você precisa conectar variáveis de ambiente usando entradas e saídas, da mesma forma que faria sem usar o compartilhamento de computação. Se você quiser compartilhar pastas entre ações fora da origem do fluxo de trabalho, considere o armazenamento em cache de arquivos. Para obter mais informações, consulte [Compartilhar artefatos e arquivos entre ações](workflows-working-artifacts.md) e [Armazenar arquivos em cache entre execuções de fluxo de trabalho](workflows-caching.md).

O repositório de origem em que seu arquivo de definição de fluxo de trabalho reside é identificado pelo rótulo `WorkflowSource`. Ao usar o compartilhamento de computação, a origem do fluxo de trabalho é baixada na primeira ação que faz referência a ela e disponibilizada automaticamente para uso em ações subsequentes na execução do fluxo de trabalho. Todas as alterações feitas na pasta que contém a origem do fluxo de trabalho por meio de uma ação, como adicionar, modificar ou remover arquivos, também são visíveis nas ações subsequentes do fluxo de trabalho. Você pode referenciar arquivos que residem na pasta de origem do fluxo de trabalho em qualquer ação do fluxo de trabalho, da mesma forma que poderia fazer sem usar o compartilhamento de computação. Para obter mais informações, consulte [Fazer referência a arquivos do repositório de origem](workflows-sources-reference-files.md).

**nota**  
Os fluxos de trabalho de compartilhamento de computação precisam especificar uma sequência estrita de ações, para que ações paralelas não possam ser definidas. Embora os artefatos de saída possam ser configurados em qualquer ação na sequência, não há suporte para os artefatos de entrada.

## Considerações sobre compartilhamento de computação
<a name="compare-compute-sharing"></a>

Você pode executar fluxos de trabalho com compartilhamento de computação para acelerar as execuções de fluxo de trabalho e compartilhar o contexto entre as ações em um fluxo de trabalho que usa a mesma instância. Considere o seguinte para determinar se o uso do compartilhamento de computação é apropriado para seu cenário:


|   | Compartilhamento de computação | Sem compartilhamento de computação | 
| --- | --- | --- | 
|  Tipo de computação  |  Amazon EC2  |  Amazon EC2, AWS Lambda  | 
|  Provisionamento de instância  |  Ações executadas na mesma instância  |  As ações são executadas em instâncias separadas  | 
|  Sistema operacional  |  Amazon Linux 2  |  Amazon Linux 2, Windows Server 2022 (somente ação de criação)  | 
|  Referência a arquivos  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  | 
|  Estrutura Workflow  |  As ações só podem ser executadas em sequência  |  As ações podem ser executadas paralelamente  | 
|  Acesso a dados em todas as ações do fluxo de trabalho  |  Acessar a origem de fluxo de trabalho armazenada em cache (`WorkflowSource`)  |  Acessar saídas de artefatos compartilhados (requer configuração adicional)  | 

## Ativação do compartilhamento de computação
<a name="compute-sharing-steps"></a>

Use as instruções a seguir para ativar o compartilhamento de computação para um fluxo de trabalho.

------
#### [ Visual ]

**Para ativar o compartilhamento de computação usando o editor visual**

1. Abra o console do CodeCatalyst em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Selecione o projeto.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **Visual**.

1. Selecione **Propriedades do fluxo de trabalho**.

1. No menu suspenso **Tipo de computação**, selecione **EC2**.

1. (Opcional) No menu suspenso **Frota de computação - opcional**, escolha uma frota que você deseja usar para executar ações de fluxo de trabalho. Você pode escolher uma frota sob demanda ou criar e escolher uma frota provisionada. Para ter mais informações, consulte [Criar uma frota provisionada](projects-create-compute-resource.md) e [Atribuir uma frota ou computação a uma ação](workflows-assign-compute-resource.md) 

1. Alterne o botão para ativar o compartilhamento de computação e fazer com que as ações no fluxo de trabalho sejam executadas na mesma frota.

1. (Opcional) Escolha o modo de execução do fluxo de trabalho. Para obter mais informações, consulte [Configurar o comportamento de enfileiramento das execuções](workflows-configure-runs.md).

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------
#### [ YAML ]

**Para ativar o compartilhamento de computação usando o editor YAML**

1. Abra o console do CodeCatalyst em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Selecione o projeto.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **YAML**.

1. Ative o compartilhamento de computação definindo o campo `SharedInstance` como `TRUE` e `Type` como `EC2`. Defina `Fleet` como uma frota de computação que você deseja usar para executar ações de fluxo de trabalho. Você pode escolher uma frota sob demanda ou criar e escolher uma frota provisionada. Para ter mais informações, consulte [Criar uma frota provisionada](projects-create-compute-resource.md) e [Atribuir uma frota ou computação a uma ação](workflows-assign-compute-resource.md)

   Em um YAML de fluxo de trabalho, adicione um código semelhante ao seguinte:

   ```
     Name: MyWorkflow
     SchemaVersion: "1.0"
     Compute: # Define compute configuration.
       Type: EC2
       Fleet: MyFleet # Optionally, choose an on-demand or provisioned fleet.
       SharedInstance: true # Turn on compute sharing. Default is False.
     Actions:
       BuildFirst:
         Identifier: aws/build@v1
         Inputs:
           Sources:
             - WorkflowSource
         Configuration:
           Steps:
             - Run: ...
             ...
   ```

1. (Opcional) Selecione **Validar** para validar o código YAML do fluxo de trabalho antes de confirmar.

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------

## Exemplos
<a name="compute-sharing-examples"></a>

**Topics**
+ [Exemplo: Amazon S3 Publish](#compute-share-s3)

### Exemplo: Amazon S3 Publish
<a name="compute-share-s3"></a>

Os exemplos de fluxo de trabalho a seguir mostram como realizar a ação do Amazon S3 Publish de duas maneiras: primeiro usando artefatos de entrada e, depois, usando o compartilhamento de computação. Com o compartilhamento de computação, os artefatos de entrada não são necessários, pois você pode acessar a `WorkflowSource` armazenada em cache. Além disso, o artefato de saída na ação de criação não é mais necessário. A ação do S3 Publish está configurada para usar a propriedade `DependsOn` explícita para manter ações sequenciais; a ação de criação deve ser executada para que a ação do S3 Publish seja executada.
+ Sem o compartilhamento de computação, você precisa usar artefatos de entrada e compartilhar as saídas com ações subsequentes:

  ```
  Name: S3PublishUsingInputArtifact
  SchemaVersion: "1.0"
  Actions:
    Build:
      Identifier: aws/build@v1
      Outputs:
        Artifacts:
          - Name: ArtifactToPublish
            Files: [output.zip]
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      Inputs:
        Artifacts:
        - ArtifactToPublish
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```
+ Ao usar o compartilhamento de computação definindo `SharedInstance` como `TRUE`, você pode executar várias ações na mesma instância e compartilhar artefatos especificando uma única origem de fluxo de trabalho. Os artefatos de entrada não são obrigatórios e não podem ser especificados:

  ```
  Name: S3PublishUsingComputeSharing
  SchemaVersion: "1.0"
  Compute: 
    Type: EC2
    Fleet: dev-fleet
    SharedInstance: TRUE
  Actions:
    Build:
      Identifier: aws/build@v1
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      DependsOn: 
        - Build
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```

# Especificação de imagens de ambiente de runtime
<a name="build-images"></a>

Uma *imagem do ambiente de tempo de execução* é um contêiner do Docker no qual são CodeCatalyst executadas ações de fluxo de trabalho. O contêiner do Docker é executado na plataforma de computação escolhida e inclui um sistema operacional e ferramentas extras que uma ação de fluxo de trabalho pode precisar, como o AWS CLI Node.js e .tar.

Por padrão, as ações do fluxo de trabalho serão executadas em uma das [imagens ativas](#build-curated-images) fornecidas e mantidas pela CodeCatalyst. Somente ações de criação e teste oferecem suporte a imagens personalizadas. Para obter mais informações, consulte [Atribuir uma imagem do Docker de um ambiente de runtime personalizada a uma ação](#build-images-specify).

**Topics**
+ [Imagens ativas](#build-curated-images)
+ [E se uma imagem ativa não incluir as ferramentas de que preciso?](#build-images-more-tools)
+ [Atribuir uma imagem do Docker de um ambiente de runtime personalizada a uma ação](#build-images-specify)
+ [Exemplos](#workflows-working-custom-image-ex)

## Imagens ativas
<a name="build-curated-images"></a>

*Imagens ativas são imagens* do ambiente de execução que são totalmente suportadas CodeCatalyst e incluem ferramentas pré-instaladas. Atualmente, existem dois conjuntos de imagens ativas: um lançado em março de 2024 e outro lançado em novembro de 2022.

O uso da imagem de março de 2024 ou novembro de 2022 depende da ação:
+ As ações de criação e teste adicionadas a um fluxo de trabalho em ou após 26 de março de 2024 incluirão uma seção `Container` na definição de YAML que especifica explicitamente uma [imagem de março de 2024](#build.default-image). Se desejar, você pode remover a seção `Container` para voltar à [imagem de novembro de 2022](#build.previous-image).
+ As ações de criação e teste que foram adicionadas a um fluxo de trabalho antes de 26 de março de 2024 *não* incluirão uma seção `Container` na definição de YAML e, consequentemente, usarão uma [imagem de novembro de 2022](#build.previous-image). É possível manter a imagem de novembro de 2022 ou atualizá-la. Para atualizar a imagem, abra a ação no editor visual, selecione a guia **Configuração** e selecione a imagem de março de 2024 na lista suspensa **Imagem do Docker do ambiente de runtime**. Essa seleção adicionará uma seção `Container` à definição de YAML da ação que é preenchida com a imagem apropriada de março de 2024.
+ Todas as outras ações usarão uma [imagem de novembro de 2022](#build.previous-image) ou uma [imagem de março de 2024](#build.default-image). Para ter mais informações, consulte a documentação da ação. 

**Topics**
+ [Imagens de março de 2024](#build.default-image)
+ [Imagens de novembro de 2022](#build.previous-image)

### Imagens de março de 2024
<a name="build.default-image"></a>

As imagens de março de 2024 são as imagens mais recentes fornecidas por CodeCatalyst. Há uma imagem de março de 2024 por combinação computacional. type/fleet 

A tabela a seguir mostra as ferramentas instaladas em cada imagem de março de 2024.


**Ferramentas de imagem de março de 2024**  

| Ferramenta | CodeCatalyst Amazon EC2 para Linux x86\$164 - `CodeCatalystLinux_x86_64:2024_03` | CodeCatalyst Lambda para Linux x86\$164 - `CodeCatalystLinuxLambda_x86_64:2024_03` | CodeCatalyst Amazon EC2 para Linux Arm64 - `CodeCatalystLinux_Arm64:2024_03` | CodeCatalyst Lambda para Linux Arm64 - `CodeCatalystLinuxLambda_Arm64:2024_03` | 
| --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2.15.17 | 2.15.17 | 2.15.17 | 
| AWS CLI do Copilot | 1.32.1 | 1.32.1 | 1.32.1 | 1.32.1 | 
| Docker | 24.0.9 | N/D | 24.0.9 | N/D | 
| Docker Compose | 2.23.3 | N/D | 2.23.3 | N/D | 
| Git | 2.43.0 | 2.43.0 | 2.43.0 | 2.43.0 | 
| Go | 1.21.5 | 1.21.5 | 1.21.5 | 1.21.5 | 
| Gradle | 8.5 | 8.5 | 8.5 | 8.5 | 
| Java | Corretto17 | Corretto17 | Corretto17 | Corretto17 | 
| Maven | 3.9.6 | 3.9.6 | 3.9.6 | 3.9.6 | 
| Node.js | 18.19.0 | 18.19.0 | 18.19.0 | 18.19.0 | 
| npm | 10.2.3 | 10.2.3 | 10.2.3 | 10.2.3 | 
| Python | 3.9.18 | 3.9.18 | 3.9.18 | 3.9.18 | 
| Python3 | 3.11.6 | 3.11.6 | 3.11.6 | 3.11.6 | 
| pip | 22.3.1 | 22.3.1 | 22.3.1 | 22.3.1 | 
| .NET | 8.0.100 | 8.0.100 | 8.0.100 | 8.0.100 | 

### Imagens de novembro de 2022
<a name="build.previous-image"></a>

Há uma imagem de novembro de 2022 por type/fleet combinação computacional. Também há uma imagem do Windows de novembro de 2022 disponível com a ação de criação, caso você tenha configurado uma [frota provisionada](workflows-working-compute.md#compute.fleets).

A tabela a seguir mostra as ferramentas instaladas em cada imagem de novembro de 2022.


**Ferramentas de imagem de novembro de 2022**  

| Ferramenta | CodeCatalyst Amazon EC2 para Linux x86\$164 - `CodeCatalystLinux_x86_64:2022_11` | CodeCatalyst Lambda para Linux x86\$164 - `CodeCatalystLinuxLambda_x86_64:2022_11` | CodeCatalyst Amazon EC2 para Linux Arm64 - `CodeCatalystLinux_Arm64:2022_11` | CodeCatalyst Lambda para Linux Arm64 - `CodeCatalystLinuxLambda_Arm64:2022_11` | CodeCatalyst Amazon EC2 para Windows x86\$164 - `CodeCatalystWindows_x86_64:2022_11` | 
| --- | --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2.15.17 | 2.15.17 | 2.15.17 | 2.13.19 | 
| AWS CLI do Copilot | 0.6.0 | 0.6.0 | N/D | N/D | 1.30.1 | 
| Docker | 23.01 | N/D | 23.0.1 | N/D | N/D | 
| Docker Compose | 2.16.0 | N/D | 2.16.0 | N/D | N/D | 
| Git | 2.40.0 | 2.40.0 | 2.39.2 | 2.39.2 | 2.42.0 | 
| Go | 1.20.2 | 1.20.2 | 1.20.1 | 1.20.1 | 1,19 | 
| Gradle | 8.0.2 | 8.0.2 | 8.0.1 | 8.0.1 | 8.3 | 
| Java | Corretto17 | Corretto17 | Corretto17 | Corretto17 | Corretto17 | 
| Maven | 3.9.4 | 3.9.4 | 3.9.0 | 3.9.0 | 3.9.4 | 
| Node.js | 16.20.2 | 16.20.2 | 16.19.1 | 16.14.2 | 16.20.0 | 
| npm | 8.19.4 | 8.19.4 | 8.19.3 | 8.5.0 | 8.19.4 | 
| Python | 3.9.15 | 2.7.18 | 3.11.2 | 2.7.18 | 3.9.13 | 
| Python3 | N/D | 3.9.15 | N/D | 3.11.2 | N/D | 
| pip | 22.2.2 | 22.2.2 | 23.0.1 | 23.0.1 | 22.0.4 | 
| .NET | 6.0.407 | 6.0.407 | 6.0.406 | 6.0.406 | 6.0.414 | 

## E se uma imagem ativa não incluir as ferramentas de que preciso?
<a name="build-images-more-tools"></a>

Se nenhuma das [imagens ativas](#build-curated-images) fornecidas pelo CodeCatalyst incluir as ferramentas necessárias, você tem algumas opções:
+ Você pode fornecer uma imagem do Docker de ambiente de runtime personalizada que inclua as ferramentas necessárias. Para obter mais informações, consulte [Atribuir uma imagem do Docker de um ambiente de runtime personalizada a uma ação](#build-images-specify).
**nota**  
 Se você quiser fornecer uma imagem do Docker de ambiente de runtime personalizada, a imagem personalizada deverá ter o Git instalado nela. 
+ Você pode fazer com que a ação de criação ou teste do fluxo de trabalho instale as ferramentas necessárias.

  Por exemplo, você pode incluir as seguintes instruções na seção `Steps` do código YAML da ação de criação ou teste:

  ```
  Configuration:
    Steps:
      - Run: ./setup-script
  ```

  A *setup-script* instrução então executaria o seguinte script para instalar o gerenciador de pacotes Node (npm):

  ```
  #!/usr/bin/env bash
  echo "Setting up environment"
  
  touch ~/.bashrc
  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
  source ~/.bashrc 
  nvm install v16.1.0
  source ~/.bashrc
  ```

  Para ter mais informações sobre o YAML da ação de criação, consulte [Ações de criação e de teste YAML](build-action-ref.md).

## Atribuir uma imagem do Docker de um ambiente de runtime personalizada a uma ação
<a name="build-images-specify"></a>

Se você não quiser usar uma [imagem ativa](#build-curated-images) fornecida pela CodeCatalyst, você pode fornecer uma imagem Docker de ambiente de tempo de execução personalizada. Se você quiser fornecer uma imagem personalizada, ela deverá ter o Git instalado. A imagem pode residir no Docker Hub, no Amazon Elastic Container Registry ou em qualquer repositório público.

Para saber como criar uma imagem do Docker personalizada, consulte [Criar contêineres em uma aplicação](https://docs.docker.com/get-started/02_our_app/) na documentação do Docker.

Use as instruções a seguir para atribuir a imagem do Docker de ambiente de runtime personalizada a uma ação. Depois de especificar uma imagem, CodeCatalyst implante-a na sua plataforma de computação quando a ação começar.

**nota**  
**As ações a seguir não oferecem suporte a imagens personalizadas do Docker do ambiente de tempo de execução: **Deploy CloudFormation stack**, **Deploy to ECS** e **GitHub Actions. As** imagens do Docker do ambiente de tempo de execução personalizado também não oferecem suporte ao tipo de computação Lambda.**

------
#### [ Visual ]

**Para atribuir uma imagem do Docker de ambiente de runtime personalizada usando o editor visual**

1. Abra o CodeCatalyst console em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho. É possível filtrar pelo nome do repositório ou da ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou o status do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **Visual**.

1. No diagrama do fluxo de trabalho, escolha a ação que usará a imagem do Docker de ambiente de runtime personalizada.

1. Escolha a guia **Configuração**.

1. Na parte inferior, preencha os seguintes campos.

   **Imagem do Docker de ambiente de runtime - opcional**

   Especifique o registro em que a imagem está armazenada. Os valores válidos são:
   + `CODECATALYST` (editor YAML)

     A imagem é armazenada no CodeCatalyst registro.
   + **Docker Hub** (editor visual) ou `DockerHub` (editor YAML)

     A imagem é armazenada no registro de imagens do Docker Hub.
   + **Outro registro** (editor visual) ou `Other` (editor YAML)

     A imagem é armazenada em um registro de imagem personalizado. Qualquer registro disponível publicamente pode ser usado.
   + **Amazon Elastic Container Registry** (editor visual) ou `ECR` (editor YAML)

     A imagem é armazenada em um repositório de imagens do Amazon Elastic Container Registry. Para usar uma imagem em um repositório do Amazon ECR, essa ação precisa acessar o Amazon ECR. Para habilitar esse acesso, é necessário criar um [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que inclua as permissões e a política de confiança personalizada a seguir. (Se desejar, você poderá modificar um perfil existente para incluir as permissões e a política.)

     O perfil do IAM deve incluir as seguintes permissões na política:
     + `ecr:BatchCheckLayerAvailability`
     + `ecr:BatchGetImage`
     + `ecr:GetAuthorizationToken`
     + `ecr:GetDownloadUrlForLayer`

     O perfil do IAM deve incluir a seguinte política de confiança personalizada:

     Para ter mais informações sobre como criar perfis do IAM, consulte [Criar um perfil usando políticas de confiança personalizadas (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) no *Guia do usuário do IAM*.

     Depois que você criar o perfil, deverá atribuí-lo à ação por meio de um ambiente. Para obter mais informações, consulte [Associação de um ambiente a uma ação](deploy-environments-add-app-to-environment.md).

   **URL da imagem do ECR**, **imagem do Docker Hub** ou **URL da imagem**

   Especifique um dos seguintes:
   + Se você estiver usando um registro `CODECATALYST`, defina a imagem como uma das seguintes [imagens ativas](#build-curated-images):
     + `CodeCatalystLinux_x86_64:2024_03`
     + `CodeCatalystLinux_x86_64:2022_11`
     + `CodeCatalystLinux_Arm64:2024_03`
     + `CodeCatalystLinux_Arm64:2022_11`
     + `CodeCatalystLinuxLambda_x86_64:2024_03`
     + `CodeCatalystLinuxLambda_x86_64:2022_11`
     + `CodeCatalystLinuxLambda_Arm64:2024_03`
     + `CodeCatalystLinuxLambda_Arm64:2022_11`
     + `CodeCatalystWindows_x86_64:2022_11`
   + Se você estiver usando um registro do Docker Hub, defina a imagem como o nome da imagem do Docker Hub e a tag opcional.

     Exemplo: `postgres:latest`
   + Se estiver usando um registro do Amazon ECR, defina a imagem como o URI do registro do Amazon ECR.

     Exemplo: `111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo`
   + Se estiver usando um registro personalizado, defina a imagem como o valor esperado pelo registro personalizado.

1. (Opcional) Selecione **Validar** para validar o código YAML do fluxo de trabalho antes de confirmar.

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------
#### [ YAML ]

**Para atribuir uma imagem do Docker de ambiente de runtime personalizada usando o editor YAML**

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho. É possível filtrar pelo nome do repositório ou da ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou o status do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **YAML**.

1. Encontre a ação à qual você quer atribuir uma imagem do Docker do ambiente de runtime.

1. Na ação, adicione uma seção `Container` e as propriedades subjacentes `Registry` e `Image`. Para ter mais informações, consulte a descrição das propriedades `Container`, `Registry` e `Image` da [Ações](workflow-reference.md#actions-reference) para sua ação.

1. (Opcional) Selecione **Validar** para validar o código YAML do fluxo de trabalho antes de confirmar.

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------

## Exemplos
<a name="workflows-working-custom-image-ex"></a>

Os exemplos a seguir mostram como atribuir uma imagem do Docker de ambiente de runtime personalizada a uma ação no arquivo de definição do fluxo de trabalho.

**Topics**
+ [Exemplo: uso de uma imagem do Docker de ambiente de runtime personalizada para adicionar suporte ao Node.js 18 com o Amazon ECR](#workflows-working-custom-image-ex-ecr-node18)
+ [Exemplo: uso de uma imagem do Docker de ambiente de runtime personalizada para adicionar suporte ao Node.js 18 com o Docker Hub](#workflows-working-custom-image-ex-docker-node18)

### Exemplo: uso de uma imagem do Docker de ambiente de runtime personalizada para adicionar suporte ao Node.js 18 com o Amazon ECR
<a name="workflows-working-custom-image-ex-ecr-node18"></a>

O exemplo a seguir mostra como usar uma imagem do Docker de ambiente de runtime personalizada para adicionar suporte ao Node.js 18 com o [Amazon ECR](https://gallery.ecr.aws/amazonlinux/amazonlinux).

```
Configuration:
  Container:
    Registry: ECR
    Image: public.ecr.aws/amazonlinux/amazonlinux:2023
```

### Exemplo: uso de uma imagem do Docker de ambiente de runtime personalizada para adicionar suporte ao Node.js 18 com o Docker Hub
<a name="workflows-working-custom-image-ex-docker-node18"></a>

O exemplo a seguir mostra como usar uma imagem do Docker de ambiente de runtime personalizada para adicionar suporte ao Node.js 18 com o [Docker Hub](https://hub.docker.com/_/node).

```
Configuration:
  Container:
    Registry: DockerHub
    Image: node:18.18.2
```