Einen laufenden Build im Session Manager anzeigen - AWS CodeBuild

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.

Einen laufenden Build im Session Manager anzeigen

In AWS CodeBuild können Sie einen laufenden Build anhalten und dann mithilfe von AWS Systems Manager Session Manager eine Verbindung zum Build-Container herstellen und den Status des Containers anzeigen.

Anmerkung

Diese Funktion ist in Windows-Umgebungen nicht verfügbar.

Voraussetzungen

Damit der Sitzungsmanager mit der Buildsitzung verwendet werden kann, müssen Sie die Sitzungsverbindung für den Build aktivieren. Es gibt zwei Voraussetzungen:

  • CodeBuild Bei kuratierten Linux-Standard-Images ist der SSM Agent bereits installiert und der SSM Agent ContainerMode aktiviert.

    Wenn Sie ein benutzerdefiniertes Image für Ihren Build verwenden, gehen Sie wie folgt vor:

    1. Installieren Sie den SSM Agenten. Weitere Informationen finden Sie im AWS Systems Manager Benutzerhandbuch unter Manuelles Installieren des SSM Agenten auf EC2 Instanzen für Linux. Die SSM Agent-Version muss 3.0.1295.0 oder höher sein.

    2. Kopieren Sie die Datei https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/ .json in das Verzeichnis amazon-ssm-agent in Ihrem Image. /etc/amazon/ssm/ Dadurch wird der Container-Modus im Agenten SSM aktiviert.

    Anmerkung

    Für benutzerdefinierte Images ist der neueste SSM Agent erforderlich, damit diese Funktion erwartungsgemäß funktioniert.

  • Für die CodeBuild Servicerolle muss die folgende SSM Richtlinie gelten:

    { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }

    Sie können festlegen, dass die CodeBuild Konsole diese Richtlinie automatisch an Ihre Servicerolle anhängt, wenn Sie den Build starten. Alternativ können Sie diese Richtlinie manuell an Ihre Servicerolle anhängen.

  • Wenn Sie die Überwachung und Protokollierung von Sitzungsaktivitäten in den Systems Manager Manager-Einstellungen aktiviert haben, muss die CodeBuild Servicerolle auch über zusätzliche Berechtigungen verfügen. Die Berechtigungen sind unterschiedlich, je nachdem, wo die Protokolle gespeichert werden.

    CloudWatch Logs

    Wenn Sie CloudWatch Logs zum Speichern Ihrer Logs verwenden, fügen Sie der CodeBuild Servicerolle die folgende Berechtigung hinzu:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:DescribeLogGroups", "Resource": "arn:aws:logs:<region-id>:<account-id>:log-group:*:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region-id>:<account-id>:log-group:<log-group-name>:*" } ] }
    Amazon S3

    Wenn Sie Amazon S3 zum Speichern Ihrer Protokolle verwenden, fügen Sie der CodeBuild Service-Rolle die folgende Berechtigung hinzu:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ] } ] }

    Weitere Informationen finden Sie im AWS Systems Manager Benutzerhandbuch unter Überwachung und Protokollierung von Sitzungsaktivitäten.

Unterbrechen Sie den Build

Um den Build anzuhalten, fügen Sie den codebuild-breakpoint Befehl in einer der Buildphasen Ihrer Buildspec-Datei ein. Der Build wird an diesem Punkt angehalten, sodass Sie eine Verbindung zum Build-Container herstellen und den Container in seinem aktuellen Zustand anzeigen können.

Fügen Sie den Buildphasen in Ihrer Buildspec-Datei beispielsweise Folgendes hinzu.

phases: pre_build: commands: - echo Entered the pre_build phase... - echo "Hello World" > /tmp/hello-world - codebuild-breakpoint

Dieser Code erstellt die /tmp/hello-world Datei und unterbricht dann den Build an dieser Stelle.

Starte den Build

Damit Session Manager mit der Build-Sitzung verwendet werden kann, müssen Sie Sitzungsverbindungen für den Build aktivieren. Gehen Sie dazu beim Starten des Builds wie folgt vor:

  1. Öffnen Sie die AWS CodeBuild Konsole unter https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Wählen Sie im linken Navigationsbereich Build projects aus. Wählen Sie das Build-Projekt und dann Build mit Überschreibungen starten aus.

  3. Wählen Sie Advanced build overrides (Erweiterter Build überschreibt).

  4. Wählen Sie im Abschnitt Umgebung die Option Sitzungsverbindung aktivieren aus. Wenn diese Option nicht ausgewählt ist, werden alle codebuild-resume Befehle codebuild-breakpoint und ignoriert.

  5. Nehmen Sie alle anderen gewünschten Änderungen vor und wählen Sie Build starten.

  6. Überwachen Sie den Build-Status in der Konsole. Wenn die Sitzung verfügbar ist, wird der Link AWS Session Manager im Abschnitt Build-Status angezeigt.

Connect zum Build-Container her

Sie können auf zwei Arten eine Verbindung zum Build-Container herstellen:

CodeBuild Konsole

Öffnen Sie in einem Webbrowser den AWS Session Manager-Link, um eine Verbindung zum Build-Container herzustellen. Es wird eine Terminalsitzung geöffnet, mit der Sie den Build-Container durchsuchen und steuern können.

AWS CLI
Anmerkung

Für dieses Verfahren muss auf Ihrem lokalen Computer das Session Manager-Plug-In installiert sein. Weitere Informationen finden Sie unter Installieren des Session Manager-Plug-ins für AWS CLI im AWS Systems Manager Benutzerhandbuch.

  1. Rufen Sie die batch-get-builds API mit der Build-ID auf, um Informationen über den Build zu erhalten, einschließlich der ID des Sitzungsziels. Der Eigenschaftsname der Sitzungsziel-ID variiert je nach Ausgabetyp des aws Befehls. Aus diesem Grund --output json wird es dem Befehl hinzugefügt.

    aws codebuild batch-get-builds --ids <buildID> --region <region> --output json
  2. Kopieren Sie den sessionTarget Eigenschaftswert. Der sessionTarget Eigenschaftsname kann je nach Ausgabetyp des aws Befehls variieren. Aus diesem --output json Grund wurde er dem Befehl im vorherigen Schritt hinzugefügt.

  3. Verwenden Sie den folgenden Befehl, um eine Verbindung zum Build-Container herzustellen.

    aws ssm start-session --target <sessionTarget> --region <region>

Stellen Sie für dieses Beispiel sicher, dass die /tmp/hello-world Datei vorhanden ist und den Text enthältHello World.

Setzen Sie den Build fort

Nachdem Sie die Untersuchung des Build-Containers abgeschlossen haben, geben Sie den codebuild-resume Befehl in der Container-Shell aus.

$ codebuild-resume