Partage du calcul entre les actions - Amazon CodeCatalyst

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

Par défaut, les actions d'un flux de travail sont exécutées sur des instances distinctes d'une flotte. 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.

Exécution de plusieurs actions sur un ordinateur partagé

Vous pouvez utiliser l'Computeattribut 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 des calculs 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 EC2calcul 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, consultezConfiguration des images de calcul et d'exécution.

Note

Si vous êtes au niveau Gratuit et que vous spécifiez la Linux.x86-64.2XLarge flotte Linux.x86-64.XLarge ou manuellement dans la définition du flux de travailYAML, 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.

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 (YAMLfichier). 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, envisagez la mise en cache de fichiers. Pour plus d’informations, consultez Partage d'artefacts et de fichiers entre les actions et Mise en cache des fichiers entre les exécutions du flux de travail.

Le référentiel source dans lequel réside le fichier de définition de votre flux de travail est identifié par l'étiquetteWorkflowSource. 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.

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

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 de données informatiques Sans partage de calcul

Type de calcul

Amazon EC2

AmazonEC2, 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 informatique

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

  2. Choisissez votre projet.

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

  4. Choisissez le nom de votre flux de travail.

  5. Choisissez Modifier.

  6. Choisissez Visual.

  7. Choisissez les propriétés du flux de travail.

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

  9. (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 et Affecter une flotte ou un ordinateur à une action

  10. Activez ce bouton pour activer le partage de calcul et faire en sorte que les actions du flux de travail soient exécutées sur le même parc.

  11. (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.

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

YAML
Pour activer le partage de données à l'aide de l'YAMLéditeur
  1. Ouvrez la CodeCatalyst console à l'adresse https://codecatalyst.aws/.

  2. Choisissez votre projet.

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

  4. Choisissez le nom de votre flux de travail.

  5. Choisissez Modifier.

  6. Choisissez YAML.

  7. Activez le partage de calcul en définissant le SharedInstance champ sur TRUE et Type surEC2. 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 et Affecter une flotte ou un ordinateur à une action

    Dans un flux de travailYAML, 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: ... ...
  8. (Facultatif) Choisissez Valider pour valider le YAML code du flux de travail avant de le valider.

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

Exemples

Exemple : Amazon S3 Publish

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 cacheWorkflowSource. 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 surTRUE, 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