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.
Themen
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:
-
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.
-
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:
Öffnen Sie die AWS CodeBuild Konsole unter https://console.aws.amazon.com/codesuite/codebuild/home
. -
Wählen Sie im linken Navigationsbereich Build projects aus. Wählen Sie das Build-Projekt und dann Build mit Überschreibungen starten aus.
-
Wählen Sie Advanced build overrides (Erweiterter Build überschreibt).
-
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.
-
Nehmen Sie alle anderen gewünschten Änderungen vor und wählen Sie Build starten.
-
Ü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.
-
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 -
Kopieren Sie den
sessionTarget
Eigenschaftswert. DersessionTarget
Eigenschaftsname kann je nach Ausgabetyp desaws
Befehls variieren. Aus diesem--output json
Grund wurde er dem Befehl im vorherigen Schritt hinzugefügt. -
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