Anzeigen eines laufenden Builds in Session Manager - 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.

Anzeigen eines laufenden Builds in Session Manager

In können Sie einen laufenden Build anhalten und dann AWS Systems Manager Session Manager verwenden AWS CodeBuild, um eine Verbindung zum Build-Container herzustellen und den Status des Containers anzuzeigen.

Anmerkung

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

Voraussetzungen

Damit Session Manager mit der Build-Sitzung 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 Agent. Weitere Informationen finden Sie unter Manuelles Installieren von SSM Agent auf EC2-Instances für Linux im AWS Systems Manager -Benutzerhandbuch. 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/amazon-ssm-agent.json in das /etc/amazon/ssm/ Verzeichnis in Ihrem Image. Dadurch wird der Containermodus im SSM-Agenten aktiviert.

    Anmerkung

    Benutzerdefinierte Images erfordern den aktuellsten SSM-Agenten, damit diese Funktion wie erwartet funktioniert.

  • Die CodeBuild Servicerolle muss über die folgende SSM-Richtlinie verfügen:

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

    Sie können die CodeBuild Konsole diese Richtlinie automatisch an Ihre Servicerolle anfügen lassen, wenn Sie den Build starten. Alternativ können Sie diese Richtlinie manuell an Ihre Servicerolle anfügen.

  • Wenn Sie die Prüfung und Protokollierung von Sitzungsaktivitäten in den Systems 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 sind.

    CloudWatch Protokolle

    Wenn Sie CloudWatch Protokolle zum Speichern Ihrer Protokolle 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 Servicerolle 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 unter Prüfen und Protokollieren von Sitzungsaktivitäten im AWS Systems Manager -Benutzerhandbuch.

Pausieren des Builds

Um den Build anzuhalten, fügen Sie den codebuild-breakpoint Befehl in eine der Build-Phasen in Ihre buildspec-Datei ein. Der Build wird an dieser Stelle angehalten, sodass Sie eine Verbindung zum Build-Container herstellen und den Container in seinem aktuellen Zustand anzeigen können.

Fügen Sie beispielsweise Folgendes zu den Build-Phasen in Ihrer buildspec-Datei 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 pausiert dann den Build an dieser Stelle.

Starten des Builds

Damit Session Manager mit der Build-Sitzung verwendet werden kann, müssen Sie Sitzungsverbindungen für den Build aktivieren. Führen Sie dazu beim Starten des Builds die folgenden Schritte aus:

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

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

Herstellen einer Verbindung mit dem Build-Container

Sie können sich auf zwei Arten mit dem Build-Container verbinden:

CodeBuild -Konsole

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

AWS CLI
Anmerkung

Auf Ihrem lokalen Computer muss das Session Manager-Plugin für dieses Verfahren installiert sein. Weitere Informationen finden Sie unter Installieren des Session Manager-Plugins für die 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 Sitzungsziel-ID. Der Eigenschaftsname der Sitzungsziel-ID variiert je nach Ausgabetyp des aws Befehls. Aus diesem Grund --output json wird 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 Grund --output json wird dem Befehl im vorherigen Schritt hinzugefügt.

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

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

Stellen Sie in diesem Beispiel sicher, dass die /tmp/hello-world Datei vorhanden ist und den Text enthältHello World.

Fortsetzen des Builds

Nachdem Sie den Build-Container untersucht haben, geben Sie den codebuild-resume Befehl aus der Container-Shell aus.

$ codebuild-resume