Rechenleistung für mehrere Aktionen gemeinsam nutzen - Amazon CodeCatalyst

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Rechenleistung für mehrere Aktionen gemeinsam nutzen

Standardmäßig werden Aktionen in einem Workflow auf separaten Instanzen in einer Flotte ausgeführt. Dieses Verhalten sorgt für isolierte und vorhersehbare Aktionen in Bezug auf den Status der Eingaben. Das Standardverhalten erfordert eine explizite Konfiguration, um Kontext wie Dateien und Variablen zwischen Aktionen gemeinsam zu nutzen.

Compute Sharing ist eine Funktion, mit der Sie alle Aktionen in einem Workflow auf derselben Instanz ausführen können. Die Nutzung von Compute Sharing kann zu schnelleren Workflow-Laufzeiten führen, da weniger Zeit für die Bereitstellung von Instanzen aufgewendet wird. Sie können Dateien (Artefakte) auch ohne zusätzliche Workflow-Konfiguration zwischen Aktionen gemeinsam nutzen.

Wenn ein Workflow mithilfe von Compute Sharing ausgeführt wird, ist eine Instanz in der Standardflotte oder in der angegebenen Flotte für die Dauer aller Aktionen in diesem Workflow reserviert. Wenn der Workflow-Lauf abgeschlossen ist, wird die Instanzreservierung freigegeben.

Mehrere Aktionen auf gemeinsam genutztem Computer ausführen

Sie können das Compute Attribut in der Definition YAML auf Workflow-Ebene verwenden, um sowohl die Flotten- als auch die Compute-Sharing-Eigenschaften von Aktionen anzugeben. Sie können Computing-Eigenschaften auch mit dem Visual Editor in konfigurieren CodeCatalyst. Um eine Flotte anzugeben, legen Sie den Namen einer vorhandenen Flotte fest, legen Sie den Berechnungstyp auf EC2fest und aktivieren Sie die gemeinsame Nutzung von Computern.

Anmerkung

Compute Sharing wird nur unterstützt, wenn der Compute-Typ auf eingestellt ist EC2, und sie wird für das Betriebssystem Windows Server 2022 nicht unterstützt. Weitere Informationen zu Rechenflotten, Compute-Typen und Eigenschaften finden Sie unterKonfiguration von Compute- und Runtime-Images.

Anmerkung

Wenn Sie das kostenlose Kontingent nutzen und die Linux.x86-64.2XLarge Flotte Linux.x86-64.XLarge oder manuell in der Workflow-Definition angebenYAML, wird die Aktion trotzdem auf der Standardflotte (Linux.x86-64.Large) ausgeführt. Weitere Informationen zur Verfügbarkeit von Rechenleistung und zu den Preisen finden Sie in der Tabelle mit den Tarifoptionen.

Wenn Compute Sharing aktiviert ist, wird der Ordner, der die Workflow-Quelle enthält, automatisch in alle Aktionen kopiert. Sie müssen Ausgabeartefakte nicht konfigurieren und sie in einer Workflow-Definition (YAMLDatei) nicht als Eingabeartefakte referenzieren. Als Workflow-Autor müssen Sie Umgebungsvariablen mithilfe von Eingaben und Ausgaben verknüpfen, genauso wie Sie es ohne Compute Sharing tun würden. Wenn Sie Ordner für Aktionen außerhalb der Workflow-Quelle gemeinsam nutzen möchten, sollten Sie das Zwischenspeichern von Dateien in Betracht ziehen. Weitere Informationen erhalten Sie unter Artefakte und Dateien zwischen Aktionen teilen und Zwischenspeichern von Dateien zwischen Workflow-Läufen.

Das Quell-Repository, in dem sich Ihre Workflow-Definitionsdatei befindet, ist anhand der Bezeichnung gekennzeichnet. WorkflowSource Wenn Sie Compute Sharing verwenden, wird die Workflow-Quelle in der ersten Aktion heruntergeladen, die darauf verweist, und automatisch für nachfolgende Aktionen im Workflow-Lauf zur Verfügung gestellt. Alle Änderungen, die durch eine Aktion an dem Ordner, der die Workflow-Quelle enthält, vorgenommen werden, z. B. durch Hinzufügen, Ändern oder Entfernen von Dateien, sind auch in den nachfolgenden Aktionen im Workflow sichtbar. Sie können in jeder Ihrer Workflow-Aktionen auf Dateien verweisen, die sich im Workflow-Quellordner befinden, genauso wie Sie es ohne Compute Sharing tun können. Weitere Informationen finden Sie unter Quell-Repository-Dateien referenzieren.

Anmerkung

Compute-Sharing-Workflows müssen eine strikte Reihenfolge von Aktionen angeben, sodass parallel Aktionen nicht festgelegt werden können. Ausgabeartefakte können zwar bei jeder Aktion in der Sequenz konfiguriert werden, Eingabeartefakte werden jedoch nicht unterstützt.

Überlegungen zur gemeinsamen Nutzung von Rechenleistung

Sie können Workflows mit Compute Sharing ausführen, um Workflow-Ausführungen zu beschleunigen und den Kontext zwischen Aktionen in einem Workflow, die dieselbe Instanz verwenden, gemeinsam zu nutzen. Beachten Sie Folgendes, um festzustellen, ob die Nutzung von Compute Sharing für Ihr Szenario geeignet ist:

Compute-Sharing Ohne gemeinsame Nutzung von Rechenleistung

Datenverarbeitung

Amazon EC2

AmazonEC2, AWS Lambda

Bereitstellung von Instanzen

Aktionen werden auf derselben Instanz ausgeführt

Aktionen werden auf separaten Instanzen ausgeführt

Betriebssystem

Amazon Linux 2

Amazon Linux 2, Windows Server 2022 (nur Build-Aktion)

Dateien referenzieren

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

Workflow-Struktur

Aktionen können nur sequentiell ausgeführt werden

Aktionen können parallel ausgeführt werden

Zugriff auf Daten über Workflow-Aktionen hinweg

Greifen Sie auf die zwischengespeicherte Workflow-Quelle zu () WorkflowSource

Greifen Sie auf Ausgaben gemeinsam genutzter Artefakte zu (erfordert zusätzliche Konfiguration)

Compute Sharing einschalten

Gehen Sie wie folgt vor, um Compute Sharing für einen Workflow zu aktivieren.

Visual
Um Compute Sharing mit dem Visual Editor zu aktivieren
  1. Öffnen Sie die CodeCatalyst Konsole unter https://codecatalyst.aws/.

  2. Wählen Sie Ihr Projekt.

  3. Wählen Sie im Navigationsbereich CI/CD und dann Workflows aus.

  4. Wählen Sie den Namen Ihres Workflows.

  5. Wählen Sie Edit (Bearbeiten) aus.

  6. Wählen Sie Visual.

  7. Wählen Sie Workflow-Eigenschaften.

  8. Wählen Sie im Dropdownmenü Berechnungstyp die Option EC2.

  9. (Optional) Wählen Sie im Dropdownmenü Compute fleet — optional eine Flotte aus, die Sie für die Ausführung von Workflow-Aktionen verwenden möchten. Sie können eine On-Demand-Flotte wählen oder eine bereitgestellte Flotte erstellen und auswählen. Weitere Informationen finden Sie unter Eine bereitgestellte Flotte erstellen und Einer Aktion eine Flotte oder Rechenleistung zuweisen

  10. Schalten Sie den Schalter um, um Compute Sharing zu aktivieren und die Aktionen im Workflow auf derselben Flotte ausführen zu lassen.

  11. (Optional) Wählen Sie den Ausführungsmodus für den Workflow. Weitere Informationen finden Sie unter Konfiguration des Warteschlangenverhaltens von Läufen.

  12. Wählen Sie Commit, geben Sie eine Commit-Nachricht ein und wählen Sie erneut Commit.

YAML
Um Compute Sharing mit dem YAML Editor zu aktivieren
  1. Öffnen Sie die CodeCatalyst Konsole unter https://codecatalyst.aws/.

  2. Wählen Sie Ihr Projekt.

  3. Wählen Sie im Navigationsbereich CI/CD und dann Workflows aus.

  4. Wählen Sie den Namen Ihres Workflows.

  5. Wählen Sie Edit (Bearbeiten) aus.

  6. Wählen Sie YAML.

  7. Schalten Sie Compute Sharing ein und setzen Sie das SharedInstance Feld auf TRUE und Type aufEC2. Stellen Fleet Sie eine Rechenflotte ein, die Sie zum Ausführen von Workflow-Aktionen verwenden möchten. Sie können eine On-Demand-Flotte wählen oder eine bereitgestellte Flotte erstellen und auswählen. Weitere Informationen finden Sie unter Eine bereitgestellte Flotte erstellen und Einer Aktion eine Flotte oder Rechenleistung zuweisen

    Fügen Sie in einem Workflow Code hinzuYAML, der dem folgenden ähnelt:

    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. (Optional) Wählen Sie „Validieren“, um den YAML Workflow-Code vor dem Commit zu überprüfen.

  9. Wählen Sie Commit, geben Sie eine Commit-Nachricht ein und wählen Sie erneut Commit aus.

Beispiele

Beispiel: Amazon S3 Publish

Die folgenden Workflow-Beispiele zeigen, wie Sie die Amazon Amazon S3 S3-Aktion „Veröffentlichen“ auf zwei Arten ausführen können: zuerst mithilfe von Eingabeartefakten und dann mithilfe von Compute Sharing. Bei Compute Sharing werden die Eingabeartefakte nicht benötigt, da Sie auf die zwischengespeicherten WorkflowSource zugreifen können. Darüber hinaus wird das Ausgabeartefakt in der Build-Aktion nicht mehr benötigt. Die S3-Aktion „Veröffentlichen“ ist so konfiguriert, dass sie die explizite DependsOn Eigenschaft zur Verwaltung sequentieller Aktionen verwendet. Die Build-Aktion muss erfolgreich ausgeführt werden, damit die S3-Aktion „Veröffentlichen“ ausgeführt werden kann.

  • Ohne Compute-Sharing müssen Sie Eingabeartefakte verwenden und die Ausgaben mit nachfolgenden Aktionen teilen:

    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
  • Wenn Sie Compute Sharing mit der Einstellung SharedInstance auf verwendenTRUE, können Sie mehrere Aktionen auf derselben Instanz ausführen und Artefakte gemeinsam nutzen, indem Sie eine einzige Workflow-Quelle angeben. Eingabeartefakte sind nicht erforderlich und können nicht angegeben werden:

    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