

Amazon n' CodeCatalyst est plus ouvert aux nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. Pour de plus amples informations, veuillez consulter [Comment effectuer une migration depuis CodeCatalyst](migration.md).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Partage du calcul entre les actions
<a name="compute-sharing"></a>

Par défaut, les actions d'un flux de travail s'exécutent sur des instances distinctes d'une [flotte](workflows-working-compute.md#compute.fleets). Ce comportement permet aux actions d'isoler et de prévoir l'état des entrées. Le comportement par défaut nécessite une configuration explicite pour partager le contexte tel que les fichiers et les variables entre les actions. 

Le partage de calcul est une fonctionnalité qui vous permet d'exécuter toutes les actions d'un flux de travail sur la même instance. L'utilisation du partage de calcul peut accélérer les temps d'exécution des flux de travail, car moins de temps est consacré au provisionnement des instances. Vous pouvez également partager des fichiers (artefacts) entre des actions sans configuration supplémentaire du flux de travail.

Lorsqu'un flux de travail est exécuté à l'aide du partage de calcul, une instance de la flotte par défaut ou spécifiée est réservée pour la durée de toutes les actions de ce flux de travail. Lorsque l'exécution du flux de travail est terminée, la réservation d'instance est publiée.

**Topics**
+ [Exécution de plusieurs actions sur un ordinateur partagé](#how-to-compute-share)
+ [Considérations relatives au partage du calcul](#compare-compute-sharing)
+ [Activer le partage de données](#compute-sharing-steps)
+ [Exemples](#compute-sharing-examples)

## Exécution de plusieurs actions sur un ordinateur partagé
<a name="how-to-compute-share"></a>

Vous pouvez utiliser l'`Compute`attribut dans la définition YAML au niveau du flux de travail pour spécifier à la fois la flotte et les propriétés de partage de calcul des actions. Vous pouvez également configurer les propriétés de calcul à l'aide de l'éditeur visuel dans CodeCatalyst. Pour spécifier un parc, définissez le nom d'un parc existant, définissez le type de **EC2**calcul sur et activez le partage de calcul.

**Note**  
Le partage de calcul n'est pris en charge que si le type de calcul est défini sur **EC2**, et il n'est pas pris en charge pour le système d'exploitation Windows Server 2022. Pour plus d'informations sur les flottes de calcul, les types de calcul et les propriétés, consultez[Configuration des images de calcul et d'exécution](workflows-working-compute.md).

**Note**  
Si vous êtes au niveau Free et que vous spécifiez la `Linux.x86-64.2XLarge` flotte `Linux.x86-64.XLarge` ou manuellement dans la définition du flux de travail YAML, l'action sera toujours exécutée sur la flotte par défaut (`Linux.x86-64.Large`). Pour plus d'informations sur la disponibilité et la tarification du calcul, consultez le [tableau des options de niveaux](https://codecatalyst.aws/explore/pricing). 

Lorsque le partage de calcul est activé, le dossier contenant la source du flux de travail est automatiquement copié d'une action à l'autre. Il n'est pas nécessaire de configurer les artefacts de sortie et de les référencer en tant qu'artefacts d'entrée dans une définition de flux de travail (fichier YAML). En tant qu'auteur de flux de travail, vous devez câbler les variables d'environnement à l'aide d'entrées et de sorties, comme vous le feriez sans utiliser le partage de calcul. Si vous souhaitez partager des dossiers entre des actions extérieures à la source du flux de travail, pensez à mettre en cache des fichiers. Pour plus d’informations, consultez [Partage d'artefacts et de fichiers entre les actions](workflows-working-artifacts.md) et [Mise en cache des fichiers entre les exécutions du flux de travail](workflows-caching.md).

Le référentiel source dans lequel réside le fichier de définition de votre flux de travail est identifié par l'étiquette`WorkflowSource`. Lors de l'utilisation du partage de calcul, la source du flux de travail est téléchargée lors de la première action qui la référence et est automatiquement mise à disposition pour les actions suivantes de l'exécution du flux de travail. Toutes les modifications apportées au dossier contenant la source du flux de travail par une action, telle que l'ajout, la modification ou la suppression de fichiers, sont également visibles dans les actions suivantes du flux de travail. Vous pouvez référencer les fichiers qui se trouvent dans le dossier source du flux de travail dans n'importe laquelle de vos actions de flux de travail, comme vous le pouvez sans utiliser le partage de calcul. Pour de plus amples informations, veuillez consulter [Référencement des fichiers du référentiel source](workflows-sources-reference-files.md).

**Note**  
Les flux de travail de partage de calcul doivent spécifier une séquence d'actions stricte, de sorte que les actions parallèles ne peuvent pas être définies. Bien que les artefacts de sortie puissent être configurés à n'importe quelle action de la séquence, les artefacts d'entrée ne sont pas pris en charge.

## Considérations relatives au partage du calcul
<a name="compare-compute-sharing"></a>

Vous pouvez exécuter des flux de travail avec le partage de calcul afin d'accélérer les exécutions de flux de travail et de partager le contexte entre les actions d'un flux de travail utilisant la même instance. Tenez compte des points suivants pour déterminer si l'utilisation du partage de calcul convient à votre scénario :


|   | Partage du calcul | Sans partage de calcul | 
| --- | --- | --- | 
|  Type de calcul  |  Amazon EC2  |  Amazon EC2, AWS Lambda  | 
|  Provisionnement d'instances  |  Actions exécutées sur la même instance  |  Actions exécutées sur des instances distinctes  | 
|  Système d’exploitation  |  Amazon Linux 2  |  Amazon Linux 2, Windows Server 2022 (action de génération uniquement)  | 
|  Référencement de fichiers  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  | 
|  Structure de flux de travail  |  Les actions ne peuvent être exécutées que de manière séquentielle  |  Les actions peuvent être exécutées en parallèle  | 
|  Accès aux données via les actions du flux de travail  |  Accéder à la source de flux de travail mise en cache () `WorkflowSource`  |  Accès aux sorties des artefacts partagés (nécessite une configuration supplémentaire)  | 

## Activer le partage de données
<a name="compute-sharing-steps"></a>

Suivez les instructions ci-dessous pour activer le partage de calcul pour un flux de travail.

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

**Pour activer le partage de données à l'aide de l'éditeur visuel**

1. Ouvrez la CodeCatalyst console à l'[adresse https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Choisissez votre projet.

1. **Dans le volet de navigation, choisissez **CI/CD**, puis Workflows.**

1. Choisissez le nom de votre flux de travail.

1. Choisissez **Modifier**.

1. Choisissez **Visual**.

1. Choisissez les **propriétés du flux** de travail.

1. Dans le menu déroulant **Type de calcul**, sélectionnez **EC2**.

1. (Facultatif) Dans le menu déroulant **Compute fleet - facultatif**, choisissez le parc que vous souhaitez utiliser pour exécuter des actions de flux de travail. Vous pouvez choisir une flotte à la demande ou créer et choisir une flotte provisionnée. Pour plus d’informations, consultez [Création d'une flotte approvisionnée](projects-create-compute-resource.md) et [Affectation d'une flotte ou d'un ordinateur à une action](workflows-assign-compute-resource.md) 

1. Activez ce bouton pour activer le partage de calcul et exécuter les actions du flux de travail sur le même parc.

1. (Facultatif) Choisissez le mode d'exécution du flux de travail. Pour de plus amples informations, veuillez consulter [Configuration du comportement de mise en file d'attente des exécutions](workflows-configure-runs.md).

1. Choisissez **Valider**, entrez un message de validation, puis choisissez à nouveau **Valider**.

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

**Pour activer le partage de calcul à l'aide de l'éditeur YAML**

1. Ouvrez la CodeCatalyst console à l'[adresse https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Choisissez votre projet.

1. **Dans le volet de navigation, choisissez **CI/CD**, puis Workflows.**

1. Choisissez le nom de votre flux de travail.

1. Choisissez **Modifier**.

1. Choisissez **YAML.**

1. Activez le partage de calcul en définissant le `SharedInstance` champ sur `TRUE` et `Type` sur`EC2`. Définissez `Fleet` un parc informatique que vous souhaitez utiliser pour exécuter des actions de flux de travail. Vous pouvez choisir une flotte à la demande ou créer et choisir une flotte provisionnée. Pour plus d’informations, consultez [Création d'une flotte approvisionnée](projects-create-compute-resource.md) et [Affectation d'une flotte ou d'un ordinateur à une action](workflows-assign-compute-resource.md)

   Dans un flux de travail YAML, ajoutez un code similaire au suivant :

   ```
     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. (Facultatif) Choisissez **Valider** pour valider le code YAML du flux de travail avant de le valider.

1. Choisissez **Valider**, entrez un message de validation, puis choisissez à nouveau **Valider**.

------

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

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

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

Les exemples de flux de travail suivants montrent comment exécuter l'action Amazon Amazon S3 Publish de deux manières : d'abord en utilisant des artefacts d'entrée, puis en utilisant le partage de calcul. Avec le partage de calcul, les artefacts d'entrée ne sont pas nécessaires puisque vous pouvez accéder au cache`WorkflowSource`. De plus, l'artefact de sortie de l'action Build n'est plus nécessaire. L'action S3 Publish est configurée pour utiliser la `DependsOn` propriété explicite afin de maintenir des actions séquentielles ; l'action Build doit être exécutée avec succès pour que l'action S3 Publish puisse s'exécuter.
+ Sans partage de calcul, vous devez utiliser des artefacts d'entrée et partager les sorties avec les actions suivantes :

  ```
  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
  ```
+ Lorsque vous utilisez le partage de calcul en `SharedInstance` réglant sur`TRUE`, vous pouvez exécuter plusieurs actions sur la même instance et partager des artefacts en spécifiant une seule source de flux de travail. Les artefacts d'entrée ne sont pas obligatoires et ne peuvent pas être spécifiés :

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