Warum schlägt meine Image-Build-Pipeline mit dem Fehler „Zeitüberschreitung beim Schritt überprüft die Verfügbarkeit des Systems Manager Agents auf den Ziel-Instances“ in Image Builder fehl?

Lesedauer: 5 Minute
0

Meine Image-Erstellung läuft im Amazon Elastic Compute Cloud (Amazon EC2) Image Builder ab. Anschließend wird der Fehler „Fehlernachricht = Zeitüberschreitung des Schritts, während der Schritt die Verfügbarkeit des SSM Agent auf den Ziel-Instances überprüft'“ zurückgegeben. Wie kann ich dies beheben?

Kurzbeschreibung

EC2 Image Builder verwendet AWS Systems Manager Automation, um benutzerdefinierte Images zu erstellen. Stellen Sie sicher, dass die Amazon-EC2-Instance, die zum Erstellen von Images und Ausführen von Tests verwendet wird, Zugriff auf den AWS Systems Manager Service hat.

Die Fehlermeldung, Fehlermeldung = „Zeitüberschreitung des Schritts, während der Schritt die Verfügbarkeit des SSM Agent auf den Ziel-Instances überprüft“, kann aus den folgenden Gründen auftreten:

  • Die Build- oder Test-Instance kann nicht auf Systems-Manager-Endpunkte zugreifen. Um dieses Problem zu beheben, überprüfen Sie die eingehenden und ausgehenden Regeln für Ihre Sicherheitsgruppe und Netzwerkzugriffssteuerungsliste (Netzwerk-ACL).
  • Das Instance-Profil hat nicht die erforderlichen Berechtigungen. Stellen Sie sicher, dass das Instancde-Profil mit den richtigen Richtlinien verknüpft ist, um dieses Problem zu beheben.
  • Die Instance kann den Instance Metadata Service (IMDS) nicht erreichen. Stellen Sie sicher, dass die Instance das IMDS erreichen kann, um dieses Problem zu beheben.
  • AWS Systems Manager Agent (SSM Agent) ist nicht auf dem Basisimage installiert.

Auflösung

Überprüfen Sie die Outbound- und Inbound-Regeln für Ihre Sicherheitsgruppe und Netzwerk-ACL

Wenn Ihre Build- oder Test-Instance nicht auf Systems-Manager-Endpunkte zugreifen kann, dann überprüfen Sie Folgendes:

  • Ihre Sicherheitsgruppe hat ausgehenden Datenverkehr für Port 443 geöffnet.
  • Ihre Netzwerk-ACL hat eingehende offene Ports für kurzlebige Ports (1024—65535) und ausgehende offene Ports für Port 443.

Für öffentliche Subnetz-Builds:

  • Im Subnetz muss die Option Automatische Zuweisung öffentlicher IPv4-Adresse aktivieren aktiviert sein.
  • An die Routing-Tabelle muss ein Internet-Gateway angeschlossen sein.

Für private Subnetz-Builds:

  • Die Routing-Tabelle muss entweder über ein NAT-Gateway oder eine Instanz oder über AWS PrivateLink-Endpunkte zu Systems Manager (ssm, ssmmessages, ec2messages) und Image Builder verfügen. Wenn die Protokollierung aktiviert ist, muss die Routing-Tabelle auch Endpunkte zu Amazon Simple Storage Service (Amazon S3) oder Amazon CloudWatch haben.
  • Die Sicherheitsgruppe für den Amazon Virtual Private Cloud (Amazon VPC) –Endpunkt muss eingehenden Datenverkehr auf Port 443 zum VPC CIDR zulassen.

Stellen Sie sicher, dass das Instance-Profil die richtigen Richtlinien hat

Das Instance-Profil ist die AWS-Identity-and-Access-Management-Rolle (IAM), die in der Infrastrukturkonfiguration definiert ist. Wenn es nicht über die erforderlichen Berechtigungen verfügt, schlägt der Build fehl. Das Instance-Profil muss über die folgenden verwalteten Richtlinien verfügen, um die Berechtigung zum Erstellen von Images zu erhalten:

  • EC2-Instance-Profil für ImageBuilder
  • EC2-Instance-Profil für ImageBuilderECRContainerBuilds (für Docker-Images)
  • AmazonSSMManagedInstanceCore

Sie können auch benutzerdefinierte Richtlinien erstellen, die ähnliche Berechtigungen wie die vorherigen verwalteten Richtlinien haben.

Hinweis: Überprüfen Sie die Vertrauensrichtlinie der Rolle, um sicherzustellen, dass ec2.amazonaws.com die Rolle übernehmen darf.

Stellen Sie sicher, dass die Instance IMDS erreichen kann

IMDS wird verwendet, um auf Metadaten von einer laufenden Instance zuzugreifen. Wenn Ihre Instance IMDS nicht erreichen kann, schlägt der Build fehl. Stellen Sie sicher, dass die Firewall Ihres Betriebssystems (OS) Datenverkehr 169.254.169.254 auf Port 80 zulässt, damit die Instance IMDS erreichen kann.

Führen Sie zum Testen der Konnektivität den folgenden Befehl aus:

$ telnet 169.254.169.254 80

Wenn Sie einen Proxy verwenden, konfigurieren Sie SSM Agent so, dass er mit einem Proxy zusammenarbeitet. Für Linux siehe SSM Agent für die Verwendung eines Proxys konfigurieren (Linux). Für Microsoft Windows siehe Konfiguration von SSM Agent zur Verwendung eines Proxys für Windows Server-Instances.

Stellen Sie sicher, dass SSM Agent auf dem Basisimage installiert ist

Auf den Instances, die Image Builder zum Erstellen von Images und Ausführen von Tests verwendet, muss der Systems Manager Agent installiert sein.

Linux

Bei Amazon-EC2-Linux-Instances, die nicht über SSM-Agent verfügen, installiert Image Builder standardmäßig SSM-Agent auf der Build-Instance. Wenn Sie jedoch Benutzerdaten im Rezept angeben, müssen Sie auch sicherstellen, dass SSM-Agent auf dem Basisimage installiert ist. Oder installieren Sie SSM-Agent mit Ihrer Benutzerdateneingabe.

Windows

Image Builder installiert SSM-Agent nicht auf Amazon-EC2-Build-Instances für Windows Server. Um zu überprüfen, ob SSM-Agent auf dem Basisimage vorinstalliert ist, starten Sie eine Amazon-EC2-Instance mithilfe des Basisimages. Führen Sie dann den folgenden Befehl in PowerShell aus:

Get-Service AmazonSSMAgent

Wenn SSM-Agent nicht auf Ihrem Basisimage vorinstalliert ist, müssen Sie eine Instance von Ihrem Quell-Image aus starten. Installieren Sie anschließend manuell SSM-Agent auf der EC2-Instance und erstellen Sie dann ein neues Basisimage aus Ihrer Instance.

„Instance bei Fehlschlag beenden“ deaktivieren

Wenn die vorherigen Lösungen das Problem nicht lösen, dann:

1.    Öffnen Sie die EC2-Image-Builder-Konsole.

2.    Aktivieren Sie unter Infrastrukturkonfiguration Instance bei Fehlschlag beenden, und führen Sie die Pipeline erneut aus.

3.    Stellen Sie eine Verbindung zur Instance her und führen Sie die folgenden Befehle aus, um die Verbindung zu Systems-Manager-Endpunkten zu überprüfen:

Linux-Instance

$ curl -v https://ssm.region.amazonaws.com
$ curl -v https://ec2messages.region.amazonaws.com
$ curl -v https://ssmmessages.region.amazonaws.com

Windows-Instance

Test-NetConnection ssm.region.amazonaws.com -port 443
Test-NetConnection ec2messages.region.amazonaws.com -port 443
Test-NetConnection ssmmessages.region.amazonaws.com -port 443

Hinweis: Ersetzen Sie die Region durch Ihre AWS-Region.

4.    Verwenden Sie die folgenden Pfade, um SSM-Protokolle auf Fehler oder Fehler zu überprüfen:

Linux

  • /var/log/amazon/ssm/amazon-ssm-agent.log
  • /var/log/amazon/ssm/errors.log

Windows

  • %PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log
  • %PROGRAMDATA%\Amazon\SSM\Logs\errors.log

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren