

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

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