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.
Problembehebung AWS CodeBuild
Verwenden Sie die Informationen in diesem Thema, um Fehler zu identifizieren, zu diagnostizieren und zu beheben. Informationen zum Protokollieren und Überwachen von CodeBuild Builds zur Problembehandlung finden Sie unterProtokollierung und Überwachung.
Themen
- Apache Maven erstellt Referenzartefakte aus dem falschen Repository
- Build-Befehle werden standardmäßig als Root-Benutzer ausgeführt
- Builds schlagen möglicherweise fehl, wenn Dateinamen nicht in den USA angegeben sind. Englische Schriftzeichen
- Builds schlagen möglicherweise fehl, wenn Parameter aus dem Amazon EC2 Parameter Store abgerufen werden
- Auf den Zweigfilter in der CodeBuild Konsole kann nicht zugegriffen werden
- Erfolg oder Misserfolg der Build-Erstellung wird nicht angezeigt
- Der Build-Status wurde dem Quellanbieter nicht gemeldet
- Das Basisimage der Windows Server Core 2019-Plattform kann nicht gefunden und ausgewählt werden
- Vorherige Befehle in den Build-Spezifikationsdateien werden von nachfolgenden Befehlen nicht erkannt
- Fehler: „Access denied“ (Zugriff verweigert) beim Versuch, den Cache herunterzuladen
- Fehler: "BUILD_ CONTAINER _ UNABLE _TO_ PULL _IMAGE" bei der Verwendung eines benutzerdefinierten Build-Images
- Fehler: „Der Build-Container wurde vor Abschluss des Builds als tot befunden. Der Build-Container ist gestorben, weil nicht genügend Arbeitsspeicher zur Verfügung stand oder das Docker-Image nicht unterstützt wird. ErrorCode: 500"
- Fehler: „Es kann keine Verbindung mit dem Docker-Daemon hergestellt werden“ beim Ausführen eines Builds
- Fehler: "CodeBuild ist nicht autorisiert, Folgendes auszuführen: sts:AssumeRole" beim Erstellen oder Aktualisieren eines Build-Projekts
- Fehler: „Fehler beim Aufrufen GetBucketAcl: Entweder hat sich der Bucket-Besitzer geändert oder die Servicerolle ist nicht mehr berechtigt, s3 aufzurufen:GetBucketAcl“
- Fehler: „Failed to upload artifacts: Invalid arn” beim Ausführen eines Builds
- Fehler: „Git-Klon fehlgeschlagen: Zugriff nicht möglich'your-repository-URL': SSL Zertifikatsproblem: Selbstsigniertes Zertifikat“
- Fehler: „The bucket you are attempting to access must be addressed using the specified endpoint” beim Ausführen eines Builds
- Fehler: "This build image requires selecting at least one runtime version."
- Fehler: "QUEUED: INSUFFICIENT _SUBNET", wenn ein Build in einer Build-Warteschlange fehlschlägt
- Fehler: „Cache konnte nicht heruntergeladen werden: RequestError: Die Anfrage konnte nicht gesendet werden, verursacht durch: x509: System-Roots konnten nicht geladen werden und es wurden keine Roots bereitgestellt“
- Fehler: „Das Zertifikat konnte nicht von S3 heruntergeladen werden. AccessDenied“
- Fehler: „Unable to locate credentials“
- RequestError Timeout-Fehler bei der Ausführung auf CodeBuild einem Proxyserver
- Die Bourne-Shell (sh) muss in Build-Images vorhanden sein
- Warnung: „Skipping install of runtimes. runtime version selection is not supported by this build image“ beim Ausführen eines Builds
- Fehler: „ JobWorker Identität konnte nicht verifiziert werden“ beim Öffnen der CodeBuild Konsole
- Build konnte nicht gestartet werden
- Zugreifen auf GitHub Metadaten in lokal zwischengespeicherten Builds
- AccessDenied: Der Bucket-Besitzer für die Berichtsgruppe stimmt nicht mit dem Besitzer des S3-Buckets überein...
Apache Maven erstellt Referenzartefakte aus dem falschen Repository
Problem: Wenn Sie Maven mit einer von ihm AWS CodeBuild bereitgestellten Java-Build-Umgebung verwenden, ruft Maven Build- und Plugin-Abhängigkeiten aus dem sicheren zentralen Maven-Repository unter https://repo1.maven.org/maven2 ab.pom.xml
des Build-Projekts explizit die Verwendung anderer Verzeichnisse angibt.
Mögliche Ursache: Von CodeBuild -bereitgestellte Java-Build-Umgebungen enthalten eine Datei mit dem Namensettings.xml
, die im Verzeichnis der Build-Umgebung vorinstalliert ist. /root/.m2
Diese Datei settings.xml
enthält die folgenden Deklarationen, die Maven anweisen, Build- und Plugin-Abhängigkeiten aus dem sicheren zentralen Maven-Repository unter https://repo1.maven.org/maven2
<settings> <activeProfiles> <activeProfile>securecentral</activeProfile> </activeProfiles> <profiles> <profile> <id>securecentral</id> <repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>
Empfohlene Lösung: Gehen Sie wie folgt vor:
-
Fügen Sie eine Datei
settings.xml
zu Ihrem Quellcode hinzu. -
Verwenden Sie in dieser Datei
settings.xml
das oben angegebene Format fürsettings.xml
als Richtlinie zur Deklaration der Repositorys, aus denen Maven stattdessen die Build- und Plugin-Abhängigkeiten abrufen soll. -
Weisen Sie in der
install
Phase Ihres Build-Projekts CodeBuild an, Ihresettings.xml
Datei in das Verzeichnis der Build-Umgebung zu kopieren./root/.m2
Ein Beispiel ist der folgende Codeausschnitt aus der Dateibuildspec.yml
, der dieses Verhalten veranschaulicht.version 0.2 phases: install: commands: - cp ./settings.xml /root/.m2/settings.xml
Build-Befehle werden standardmäßig als Root-Benutzer ausgeführt
Problem: AWS CodeBuild Führt Ihre Build-Befehle als Root-Benutzer aus. Dies passiert, auch wenn das Dockerfile des entsprechenden Build-Image die USER
-Anweisungen auf einen anderen Benutzer umstellt.
Ursache: CodeBuild Führt standardmäßig alle Build-Befehle als Root-Benutzer aus.
Empfohlene Lösung: Keine.
Builds schlagen möglicherweise fehl, wenn Dateinamen nicht in den USA angegeben sind. Englische Schriftzeichen
Problem: Wenn Sie einen Build ausführen, der Dateien verwendet, deren Dateinamen nicht aus den USA stammen Englische Zeichen (z. B. chinesische Schriftzeichen) schlägt der Build fehl.
Mögliche Ursache: In Build-Umgebungen, die von AWS CodeBuild bereitgestellt werden, ist das Standardgebietsschema auf POSIX
gesetzt. POSIX
Die Lokalisierungseinstellungen sind weniger kompatibel mit CodeBuild Dateinamen, die nicht aus den USA stammen. Englische Zeichen und können dazu führen, dass verwandte Builds fehlschlagen.
Empfohlene Lösung: Fügen Sie die folgenden Befehle zum Abschnitt pre_build
Ihrer Build-Spezifikationsdatei hinzu. Diese Befehle sorgen dafür, dass die Buildumgebung US-Englisch UTF -8 für ihre Lokalisierungseinstellungen verwendet, was besser mit CodeBuild Dateinamen kompatibel ist, die nicht in den USA vorkommen. Englische Schriftzeichen.
Für Build-Umgebungen basierend auf Ubuntu:
pre_build: commands: - export LC_ALL="en_US.UTF-8" - locale-gen en_US en_US.UTF-8 - dpkg-reconfigure locales
Für Build-Umgebungen, die auf Amazon Linux basieren:
pre_build: commands: - export LC_ALL="en_US.utf8"
Builds schlagen möglicherweise fehl, wenn Parameter aus dem Amazon EC2 Parameter Store abgerufen werden
Problem: Wenn ein Build versucht, den Wert eines oder mehrerer im Amazon Parameter Store gespeicherter EC2 Parameter abzurufen, schlägt der Build in der DOWNLOAD_SOURCE
Phase mit dem Fehler fehlParameter does not
exist
.
Mögliche Ursache: Die Servicerolle, auf die sich das Build-Projekt stützt, ist nicht berechtigt, die ssm:GetParameters
Aktion aufzurufen, oder das Build-Projekt verwendet eine Servicerolle, die von der Aktion generiert wird AWS CodeBuild und den Aufruf der ssm:GetParameters
Aktion ermöglicht, aber die Parameter haben Namen, die nicht mit beginnen/CodeBuild/
.
Empfohlene Lösungen:
-
Wenn die Servicerolle nicht von generiert wurde CodeBuild, aktualisieren Sie ihre Definition, CodeBuild damit die
ssm:GetParameters
Aktion aufgerufen werden kann. Die folgende Richtlinienanweisung erlaubt es beispielsweise, die Aktionssm:GetParameters
auszuführen und Parameter, deren Namen mit/CodeBuild/
beginnen, abzurufen:{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:
REGION_ID
:ACCOUNT_ID
:parameter/CodeBuild/*" } ] } -
Wenn die Servicerolle von generiert wurde CodeBuild, aktualisieren Sie ihre Definition, um den Zugriff auf Parameter im Amazon EC2 Parameter Store mit anderen Namen als denen, die mit beginnen, zu ermöglichen CodeBuild
/CodeBuild/
. Die folgende Richtlinienanweisung erlaubt es beispielsweise, die Aktionssm:GetParameters
auszuführen und Parameter mit dem angegebenen Namen abzurufen:{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:
REGION_ID
:ACCOUNT_ID
:parameter/PARAMETER_NAME
" } ] }
Auf den Zweigfilter in der CodeBuild Konsole kann nicht zugegriffen werden
Problem: Die Branch-Filter-Option ist in der Konsole nicht verfügbar, wenn Sie ein AWS CodeBuild Projekt erstellen oder aktualisieren.
Mögliche Ursache: Die Verzweigungsfilter-Option ist veraltet. Sie wurde durch Webhook-Filtergruppen ersetzt, die mehr Kontrolle über die Webhook-Ereignisse bieten, die einen neuen Build auslösen. CodeBuild
Empfohlene Lösung: Um einen Verzweigungsfilter zu migrieren, den Sie vor der Einführung von Webhook-Filtern erstellt haben, erstellen Sie eine Webhook-Filtergruppe mit einem HEAD_REF
-Filter mit dem regulären Ausdruck ^refs/heads/
. Wenn der reguläre Ausdruck Ihres Verzweigungsfilters beispielsweise branchName
$^branchName$
lautete, ist der aktualisierte reguläre Ausdruck, den Sie in den HEAD_REF
-Filter eingeben, ^refs/heads/branchName$
. Weitere Informationen erhalten Sie unter Bitbucket-Webhook-Ereignisse und GitHub Webhook-Ereignisse filtern (Konsole).
Erfolg oder Misserfolg der Build-Erstellung wird nicht angezeigt
Problem: Erfolg oder Misserfolg einer wiederholten Build-Erstellung wird nicht angezeigt.
Mögliche Ursache: Die Option zum Melden des Build-Status ist nicht aktiviert.
Empfohlene Lösungen: Aktivieren Sie die Option Build-Status melden, wenn Sie ein CodeBuild Projekt erstellen oder aktualisieren. Diese Option weist CodeBuild an, dass der Status gemeldet werden soll, wenn Sie einen Build auslösen. Weitere Informationen finden Sie reportBuildStatusin der AWS CodeBuild APIReferenz.
Der Build-Status wurde dem Quellanbieter nicht gemeldet
Problem: Nachdem die Berichterstattung über den Build-Status an einen Quellanbieter wie GitHub Bitbucket zugelassen wurde, wird der Build-Status nicht aktualisiert.
Mögliche Ursache: Der mit dem Quellanbieter verknüpfte Benutzer hat keinen Schreibzugriff auf das Repo.
Empfohlene Lösungen: Um dem Quellanbieter den Build-Status melden zu können, muss der mit dem Quellanbieter verknüpfte Benutzer Schreibzugriff auf das Repository haben. Wenn der Benutzer keinen Schreibzugriff hat, kann der Build-Status nicht aktualisiert werden. Weitere Informationen finden Sie unter Zugriff auf den Quellanbieter.
Das Basisimage der Windows Server Core 2019-Plattform kann nicht gefunden und ausgewählt werden
Problem: Sie können das Basisimage der Windows Server Core 2019-Plattform nicht finden oder auswählen.
Mögliche Ursache: Sie verwenden eine AWS Region, die dieses Image nicht unterstützt.
Empfohlene Lösungen: Verwenden Sie eine der folgenden AWS Regionen, in denen das Basisimage der Windows Server Core 2019-Plattform unterstützt wird:
-
USA Ost (Nord-Virginia)
-
USA Ost (Ohio)
-
USA West (Oregon)
-
Europa (Irland)
Vorherige Befehle in den Build-Spezifikationsdateien werden von nachfolgenden Befehlen nicht erkannt
Problem: Die Ergebnisse von einem oder mehreren Befehlen in der Build-Spezifikationsdatei werden von nachfolgenden Befehlen in derselben Build-Spezifikationsdatei nicht erkannt. Beispielsweise legt ein Befehl eine lokale Umgebungsvariable fest, aber ein späterer Befehl ruft den Wert dieser lokalen Umgebungsvariable nicht ab.
Mögliche Ursache: In der Build-Spezifikationsdateiversion 0.1 führt AWS CodeBuild jeden Befehl in einer separaten Instance der Standard-Shell in der Build-Umgebung aus. d. h., dass jeder Befehl unabhängig von allen anderen Befehlen ausgeführt wird. Daher können Sie keinen Einzelbefehl ausführen, der auf dem Status eines vorherigen Befehls basiert.
Empfohlene Lösungen: Wir empfehlen die Verwendung der Build-Spezifikationsversion 0.2, die dieses Problem behebt. Falls Sie doch die Build-Spezifikationsversion 0.1 verwenden müssen, empfehlen wir die Verwendung des Shell-Befehlsverkettungsoperators (z. B. &&
in Linux), um mehrere Befehle zu einem einzigen Befehl zu kombinieren. Oder schließen Sie ein Shell-Skript in den Quellcode ein, das mehrere Befehle enthält, und rufen Sie dann dieses Shell-Skript über einen Einzelbefehl in der Build-Spezifikationsdatei auf. Weitere Informationen erhalten Sie unter Shells und Befehle in Build-Umgebungen und Umgebungsvariablen in Build-Umgebungen.
Fehler: „Access denied“ (Zugriff verweigert) beim Versuch, den Cache herunterzuladen
Problem: Beim Versuch, den Cache für ein Build-Projekt herunterzuladen, das den Cache aktiviert hat, wird eine Access denied
-Fehlermeldung angezeigt.
Mögliche Ursachen:
-
Sie haben gerade Caching als Teil Ihres Build-Projekts konfiguriert.
-
Der Cache wurde kürzlich über den
InvalidateProjectCache
API ungültig gemacht. -
Die von verwendete Servicerolle CodeBuild hat keine
s3:GetObject
s3:PutObject
Berechtigungen für den S3-Bucket, der den Cache enthält.
Empfohlene Lösung: Bei der ersten Verwendung ist es normal, diese Fehlermeldung direkt nach der Aktualisierung der Cache-Konfiguration zu erhalten. Wenn das Problem weiterhin besteht, sollten Sie prüfen, ob Ihre Service-Rolle über die Berechtigungen s3:GetObject
und s3:PutObject
für den S3-Bucket verfügt, in dem sich der Cache befindet. Weitere Informationen finden Sie unter Spezifying S3 Permissions im Amazon S3 Developer Guide.
Fehler: "BUILD_ CONTAINER _ UNABLE _TO_ PULL _IMAGE" bei der Verwendung eines benutzerdefinierten Build-Images
Problem: Wenn Sie versuchen, Builds auszuführen, die benutzerdefinierte Build-Images verwenden, erhalten Sie die Fehlermeldung BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE
.
- Mögliche Ursache: Die unkomprimierte Gesamtgröße des Build-Images ist größer als der verfügbare Speicherplatz des Build Environment-Compute-Typs. Zum Prüfen der Größe des Build-Image nutzen Sie Docker und führen den Befehl
docker images
aus. Eine Liste der für die jeweiligen Datenverarbeitungstypen verfügbaren Speicherplätze finden Sie unter Berechnungsmodi und Typen der Build-Umgebung.REPOSITORY
:TAG
-
Empfohlene Lösung: Verwenden Sie einen größeren Compute-Typ mit mehr verfügbarem Festplattenspeicher oder reduzieren Sie die Größe Ihres benutzerdefinierten Build-Images.
- Mögliche Ursache: ist AWS CodeBuild nicht berechtigt, das Build-Image aus Ihrer Amazon Elastic Container Registry (AmazonECR) abzurufen.
-
Empfohlene Lösung: Aktualisieren Sie die Berechtigungen in Ihrem Repository in Amazon, ECR sodass Ihr benutzerdefiniertes Build-Image in die Build-Umgebung abgerufen werden CodeBuild kann. Weitere Informationen hierzu finden Sie unter ECRAmazon-Beispiel.
- Mögliche Ursache: Das von Ihnen angeforderte ECR Amazon-Bild ist in der AWS Region, die Ihr AWS Konto verwendet, nicht verfügbar.
-
Empfohlene Lösung: Verwenden Sie ein ECR Amazon-Bild, das sich in derselben AWS Region befindet wie das, das Ihr AWS Konto verwendet.
- Mögliche Ursache: Sie verwenden eine private Registrierung in einerVPC, die keinen öffentlichen Internetzugang hat. CodeBuild kann kein Bild von einer privaten IP-Adresse in einem abrufenVPC. Weitere Informationen finden Sie unter Privates Register mit AWS Secrets Manager Muster für CodeBuild.
-
Empfohlene Lösung: Wenn Sie eine private Registrierung in einer verwenden, stellen Sie sicherVPC, dass diese über einen öffentlichen Internetzugang VPC verfügt.
- Mögliche Ursache: Wenn die Fehlermeldung "enthält toomanyrequests„, und das Image wurde von Docker Hub abgerufen. Dieser Fehler bedeutet, dass das Docker Hub-Pulllimit erreicht wurde.
-
Empfohlene Lösung: Verwenden Sie eine private Docker Hub-Registrierung oder beziehen Sie Ihr Image von AmazonECR. Weitere Informationen zur Verwendung einer privaten Registrierung finden Sie unter Privates Register mit AWS Secrets Manager Muster für CodeBuild. Weitere Informationen zur Nutzung von Amazon ECR finden Sie unterECRAmazon-Beispiel für CodeBuild .
Fehler: „Der Build-Container wurde vor Abschluss des Builds als tot befunden. Der Build-Container ist gestorben, weil nicht genügend Arbeitsspeicher zur Verfügung stand oder das Docker-Image nicht unterstützt wird. ErrorCode: 500"
Problem: Wenn Sie versuchen, einen Microsoft Windows- oder Linux-Container in zu verwenden AWS CodeBuild, tritt dieser Fehler während der PROVISIONING Phase auf.
Mögliche Ursachen:
-
Die Container-Betriebssystemversion wird von nicht unterstützt CodeBuild.
-
HTTP_PROXY
,HTTPS_PROXY
oder beides werden im Container angegeben.
Empfohlene Lösungen:
-
Verwenden Sie für Microsoft Windows einen Windows-Container mit einem Container-Betriebssystem (Version: microsoft/windowsservercore:10.0.x (for example, microsoft/windowsservercore 10.0.14393.2125).
-
Löschen Sie für Linux die
HTTPS_PROXY
EinstellungenHTTP_PROXY
und in Ihrem Docker-Image, oder geben Sie die Konfiguration in Ihrem Build-Projekt an. VPC
Fehler: „Es kann keine Verbindung mit dem Docker-Daemon hergestellt werden“ beim Ausführen eines Builds
Problem: Ihr Build ist nicht erfolgreich und Sie erhalten eine Fehlermeldung ähnlich Cannot connect to the Docker daemon
at unix:/var/run/docker.sock. Is the docker daemon running?
im Build-Protokoll.
Mögliche Ursache: Sie führen den Build nicht im privilegierten Modus aus.
Empfohlene Lösung: Um diesen Fehler zu beheben, müssen Sie den privilegierten Modus aktivieren und Ihre Buildspec anhand der folgenden Anweisungen aktualisieren.
Gehen Sie folgendermaßen vor, um Ihren Build im privilegierten Modus auszuführen:
-
Öffnen Sie die CodeBuild Konsole unter https://console.aws.amazon.com/codebuild/
. -
Wählen Sie im Navigationsbereich Build projects und dann Ihr Build-Projekt aus.
-
Wählen Sie in Edit (Bearbeiten) Environment (Umgebung) aus.
-
Wählen Sie Additional configuration (Zusätzliche Konfiguration).
-
Wählen Sie unter Privilegiert die Option Dieses Flag aktivieren aus, wenn Sie Docker-Images erstellen oder Ihren Builds erweiterte Rechte gewähren möchten. .
-
Wählen Sie Update environment (Umgebung aktualisieren).
-
Wählen Sie Start build (Build starten) aus, um erneut zu versuchen, den Build zu erstellen.
Sie müssen auch den Docker-Daemon in Ihrem Container starten. Die install
Phase Ihrer Buildspec könnte in etwa so aussehen.
phases: install: commands: - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
Weitere Informationen über die OverlayFS-Speichertreiber, auf die in der Build-Spezifikationsdatei verwiesen wird, finden Sie auf der Docker-Website unter Verwenden des OverlayFS-Speichertreibers
Anmerkung
Wenn das Basis-Betriebssystem Alpine Linux ist,fügen Sie in buildspec.yml
das Argument -t
zu timeout
hinzu:
- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
Weitere Informationen darüber, wie Sie mithilfe von ein Docker-Image erstellen und ausführen, finden Sie unter. AWS CodeBuildDocker im benutzerdefinierten Bildbeispiel für CodeBuild
Fehler: "CodeBuild ist nicht autorisiert, Folgendes auszuführen: sts:AssumeRole" beim Erstellen oder Aktualisieren eines Build-Projekts
Problem: Wenn Sie versuchen, ein Build-Projekt zu erstellen oder zu aktualisieren, wird der Fehler Code:InvalidInputException,
Message:CodeBuild is not authorized to perform: sts:AssumeRole on
arn:aws:iam::
angezeigt.account-ID
:role/service-role-name
Mögliche Ursachen:
-
AWS Security Token Service (AWS STS) wurde für die AWS Region deaktiviert, in der Sie versuchen, das Build-Projekt zu erstellen oder zu aktualisieren.
-
Die dem Build-Projekt zugeordnete AWS CodeBuild Servicerolle ist nicht vorhanden oder verfügt nicht über ausreichende Berechtigungen, um ihr zu vertrauen CodeBuild.
Empfohlene Lösungen:
-
Stellen Sie sicher, dass sie für die AWS Region aktiviert AWS STS ist, in der Sie versuchen, das Build-Projekt zu erstellen oder zu aktualisieren. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter Aktivierung und Deaktivierung AWS STS in einer AWS Region.
-
Stellen Sie sicher, dass die CodeBuild Ziel-Servicerolle in Ihrem AWS Konto vorhanden ist. Wenn Sie die Konsole nicht verwenden, stellen Sie sicher, dass Sie den Amazon-Ressourcennamen (ARN) der Servicerolle nicht falsch geschrieben haben, als Sie das Build-Projekt erstellt oder aktualisiert haben.
-
Stellen Sie sicher, dass die CodeBuild Ziel-Servicerolle über ausreichende Berechtigungen verfügt, um ihr zu vertrauen CodeBuild. Weitere Informationen finden Sie in der Vertrauensbeziehung-Richtlinienanweisung unter Erlaube CodeBuild die Interaktion mit anderen AWS Diensten.
Fehler: „Fehler beim Aufrufen GetBucketAcl: Entweder hat sich der Bucket-Besitzer geändert oder die Servicerolle ist nicht mehr berechtigt, s3 aufzurufen:GetBucketAcl“
Problem: Ihnen wird beim Ausführen eines Builds eine Fehlermeldung in Bezug auf die Änderung eines S3-Bucket-Eigentümers und von GetBucketAcl
-Berechtigungen angezeigt.
Mögliche Ursache: Sie haben die s3:GetBucketLocation
Berechtigungen s3:GetBucketAcl
und zu Ihrer IAM Rolle hinzugefügt. Diese Berechtigungen sichern den S3-Bucket Ihres Projekts und stellen Sie sicher, dass nur Sie Zugriff auf diesen haben. Nachdem Sie diese Berechtigungen hinzugefügt haben, hat sich der Besitzer des S3-Buckets geändert.
Empfohlene Lösung: Stellen Sie sicher, dass Sie der Besitzer des S3-Buckets sind, und fügen Sie Ihrer IAM Rolle dann erneut Berechtigungen hinzu. Weitere Informationen finden Sie unter Sicherer Zugriff auf S3-Buckets.
Fehler: „Failed to upload artifacts: Invalid arn” beim Ausführen eines Builds
Problem: Beim Ausführen eines Builds schlägt die Build-Phase UPLOAD_ARTIFACTS
mit der Fehlermeldung Failed to
upload artifacts: Invalid arn
fehl.
Mögliche Ursache: Ihr S3-Ausgabe-Bucket (der Bucket, in dem die Ausgabe aus dem Build AWS CodeBuild gespeichert wird) befindet sich in einer anderen AWS Region als das CodeBuild Build-Projekt.
Empfohlene Lösung: Aktualisieren Sie die Einstellungen des Build-Projekts so, dass sie auf einen Ausgabe-Bucket verweisen, der sich in derselben AWS Region wie das Build-Projekt befindet.
Fehler: „Git-Klon fehlgeschlagen: Zugriff nicht möglich'your-repository-URL'
: SSL Zertifikatsproblem: Selbstsigniertes Zertifikat“
Problem: Beim Versuch, ein Build-Projekt auszuführen, schlägt der Build mit dieser Fehlermeldung fehl.
Mögliche Ursache: Ihr Quell-Repository verfügt über ein selbstsigniertes Zertifikat, Sie haben jedoch nicht angegeben, dass das Zertifikat aus Ihrem S3-Bucket als Teil Ihres Build-Projekts installiert werden soll.
Empfohlene Lösungen:
-
Bearbeiten Sie Ihr Projekt. Für Certificate wählen Sie Install certificate from S3. Wählen Sie als Bucket of Certificate den S3-Bucket aus, in dem Ihr SSL Zertifikat gespeichert ist. Für Object key of certificate (Objektschlüssel des Zertifikats) geben Sie den Namen Ihres S3-Objektschlüssels ein.
-
Bearbeiten Sie Ihr Projekt. Wählen Sie Unsicher ausSSL, um SSL Warnungen zu ignorieren, während Sie eine Verbindung zu Ihrem GitHub Enterprise Server-Projekt-Repository herstellen.
Anmerkung
Wir empfehlen, Insecure nur zu SSL Testzwecken zu verwenden. Es sollte nicht in einer Produktionsumgebung verwendet werden.
Fehler: „The bucket you are attempting to access must be addressed using the specified endpoint” beim Ausführen eines Builds
Problem: Beim Ausführen eines Builds schlägt die Build-Phase DOWNLOAD_SOURCE
mit der Fehlermeldung The bucket you
are attempting to access must be addressed using the specified endpoint. Please send
all future requests to this endpoint
fehl.
Mögliche Ursache: Ihr vorgefertigter Quellcode ist in einem S3-Bucket gespeichert, und dieser Bucket befindet sich in einer anderen AWS Region als das AWS CodeBuild Build-Projekt.
Empfohlene Lösung: Aktualisieren Sie die Einstellungen des Build-Projekts, sodass diese auf einen Bucket verweisen, der Ihren vorgefertigten Quellcode enthält. Stellen Sie sicher, dass sich der Bucket in derselben AWS Region wie das Build-Projekt befindet.
Fehler: "This build image requires selecting at least one runtime version."
Problem: Beim Ausführen eines Builds schlägt die Build-Phase DOWNLOAD_SOURCE
mit der Fehlermeldung YAML_FILE_ERROR:
This build image requires selecting at least one runtime version
fehl.
Mögliche Ursache: Ihr Build verwendet Version 1.0 oder höher des Amazon Linux 2 (AL2) -Standard-Images oder Version 2.0 oder höher des Ubuntu-Standard-Images, und in der Buildspec-Datei ist keine Laufzeit angegeben.
Empfohlene Lösung: Wenn Sie das aws/codebuild/standard:2.0
CodeBuild verwaltete Image verwenden, müssen Sie im runtime-versions
Abschnitt der Buildspec-Datei eine Laufzeitversion angeben. Sie könnten beispielsweise die folgende Buildspec-Datei für ein Projekt verwenden, das Folgendes verwendet: PHP
version: 0.2 phases: install: runtime-versions: php: 7.3 build: commands: - php --version artifacts: files: - README.md
Anmerkung
Wenn Sie einen runtime-versions
Abschnitt angeben und ein anderes Image als Ubuntu Standard Image 2.0 oder höher oder das Amazon Linux 2 (AL2) Standard Image 1.0 oder höher verwenden, gibt der Build die Warnung "“ ausSkipping install of runtimes. Runtime version selection is not supported by this build image
.
Weitere Informationen finden Sie unter Specify runtime versions in the buildspec file.
Fehler: "QUEUED: INSUFFICIENT _SUBNET", wenn ein Build in einer Build-Warteschlange fehlschlägt
Problem: Ein Build in einer Build-Warteschlange schlägt fehl und es wird eine Fehlermeldung ähnlich wie QUEUED: INSUFFICIENT_SUBNET
angezeigt.
Mögliche Ursachen: Der für Sie angegebene IPv4 CIDR Block VPC verwendet eine reservierte IP-Adresse. Die ersten vier IP-Adressen und die letzte IP-Adresse in jedem CIDR Subnetzblock stehen Ihnen nicht zur Verfügung und können keiner Instanz zugewiesen werden. In einem Subnetz mit CIDR Block sind 10.0.0.0/24
beispielsweise die folgenden fünf IP-Adressen reserviert:
-
10.0.0.0:
: Netzwerkadresse. -
10.0.0.1
: Reserviert von AWS für den VPC Router. -
10.0.0.2
: Reserviert von AWS. Die IP-Adresse des DNS Servers ist immer die Basis des VPC Netzwerkbereichs plus zwei. Wir behalten uns jedoch auch die Basis für jeden Subnetzbereich plus zwei vor. Denn VPCs bei mehreren CIDR Blöcken befindet sich die IP-Adresse des DNS Servers im CIDR Primärbereich. Weitere Informationen finden Sie unter DNSAmazon-Server im VPCAmazon-Benutzerhandbuch. -
10.0.0.3
: Reserviert von AWS für die future Verwendung. -
10.0.0.255
: Broadcast Adresse des Netzwerks. Wir unterstützen keine Übertragung in VPC a. Diese Adresse ist reserviert.
Empfohlene Lösungen: Überprüfen Sie, ob Sie VPC eine reservierte IP-Adresse verwenden. Ersetzen Sie eine reservierte IP-Adresse durch eine IP-Adresse, die nicht reserviert ist. Weitere Informationen finden Sie unter VPCund zur Größe von Subnetzen im VPCAmazon-Benutzerhandbuch.
Fehler: „Cache konnte nicht heruntergeladen werden: RequestError: Die Anfrage konnte nicht gesendet werden, verursacht durch: x509: System-Roots konnten nicht geladen werden und es wurden keine Roots bereitgestellt“
Problem: Beim Versuch, ein Build-Projekt auszuführen, schlägt der Build mit dieser Fehlermeldung fehl.
Mögliche Ursache: Sie haben Caching als Teil Ihres Build-Projekts konfiguriert und verwenden ein älteres Docker-Image mit einem abgelaufenen Stammzertifikat.
Empfohlene Lösung: Aktualisieren Sie das Docker-Image, das in Ihrem AWS CodeBuild Projekt verwendet wird. Weitere Informationen finden Sie unter Docker-Images bereitgestellt von CodeBuild.
Fehler: „Das Zertifikat konnte nicht von S3 heruntergeladen werden. AccessDenied“
Problem: Beim Versuch, ein Build-Projekt auszuführen, schlägt der Build mit dieser Fehlermeldung fehl.
Mögliche Ursachen:
-
Sie haben den falschen S3-Bucket für Ihr Zertifikat gewählt.
-
Sie haben den falschen Objektschlüssel für Ihr Zertifikat eingegeben.
Empfohlene Lösungen:
-
Bearbeiten Sie Ihr Projekt. Wählen Sie für „Bucket of Certificate“ den S3-Bucket aus, in dem Ihr SSL Zertifikat gespeichert ist.
-
Bearbeiten Sie Ihr Projekt. Für Object key of certificate (Objektschlüssel des Zertifikats) geben Sie den Namen Ihres S3-Objektschlüssels ein.
Fehler: „Unable to locate credentials“
Problem: Wenn Sie versuchen AWS CLI, die Komponente auszuführen AWS
SDK, eine zu verwenden oder eine andere ähnliche Komponente als Teil eines Builds aufzurufen, werden Build-Fehler angezeigt, die in direktem Zusammenhang mit der AWS CLI AWS SDK, oder -Komponente stehen. Sie könnten zum Beispiel eine Build-Fehlermeldung wie Unable to locate credentials
erhalten.
Mögliche Ursachen:
-
Die Version der AWS CLI AWS SDK, oder -Komponente in der Buildumgebung ist nicht kompatibel mit AWS CodeBuild.
-
Sie führen einen Docker-Container in einer Build-Umgebung aus, die Docker verwendet, und der Container hat standardmäßig keinen Zugriff auf die AWS Anmeldeinformationen.
Empfohlene Lösungen:
-
Stellen Sie sicher, dass Ihre Build-Umgebung die folgende Version oder eine höhere Version der AWS CLI AWS SDK, oder -Komponente enthält.
-
AWS CLI: 1.10.47
-
AWS SDKfür C++: 0.2.19
-
AWS SDKfür Go: 1.2.5
-
AWS SDKfür Java: 1.11.16
-
AWS SDKfür JavaScript: 2.4.7
-
AWS SDKfürPHP: 3.18.28
-
AWS SDKfür Python (Boto3): 1.4.0
-
AWS SDKfür Ruby: 2.3.22
-
Botocore: 1.4.37
-
KernCLR: 3.2.6-beta
-
Node.js: 2.4.7
-
-
Wenn Sie einen Docker-Container in einer Build-Umgebung ausführen müssen und für den Container AWS Anmeldeinformationen erforderlich sind, müssen Sie die Anmeldeinformationen von der Build-Umgebung an den Container weitergeben. Fügen Sie in Ihrer Build-Spezifikationsdatei wie in dem nachfolgenden Beispiel einen Docker-
run
-Befehl ein. In diesem Beispiel werden die verfügbaren S3-Buckets mit demaws s3 ls
Befehl aufgeführt. Die-e
Option übergibt die Umgebungsvariablen, die für den Zugriff Ihres Containers auf die AWS Anmeldeinformationen erforderlich sind.docker run -e AWS_DEFAULT_REGION -e AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
your-image-tag
aws s3 ls -
Wenn Sie ein Docker-Image erstellen und für den Build AWS Anmeldeinformationen erforderlich sind (z. B. um eine Datei von Amazon S3 herunterzuladen), müssen Sie die Anmeldeinformationen aus der Build-Umgebung wie folgt an den Docker-Build-Prozess übergeben.
-
Geben Sie in Ihrem Quellcode für das Dockerfile des Docker-Image die folgenden
ARG
-Anweisungen ein.ARG AWS_DEFAULT_REGION ARG AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
-
Fügen Sie in Ihrer Build-Spezifikationsdatei wie in dem nachfolgenden Beispiel einen Docker-
build
-Befehl ein. Die--build-arg
Optionen legen die Umgebungsvariablen fest, die Ihr Docker-Build-Prozess für den Zugriff auf die Anmeldeinformationen benötigt. AWSdocker build --build-arg AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION --build-arg AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI -t
your-image-tag
.
-
RequestError Timeout-Fehler bei der Ausführung auf CodeBuild einem Proxyserver
Problem: Sie erhalten eine RequestError
-Fehlermeldung ähnlich einer der folgenden:
-
RequestError: send request failed caused by: Post https://logs.<your-region>.amazonaws.com/: dial tcp 52.46.158.105:443: i/o timeout
aus CloudWatch Protokollen. -
Error uploading artifacts: RequestError: send request failed caused by: Put https://
von Amazon S3.your-bucket
.s3.your-aws-region
.amazonaws.com/*: dial tcp 52.219.96.208:443: connect: connection refused
Mögliche Ursachen:
-
ssl-bump
ist nicht ordnungsgemäß konfiguriert. -
Die Sicherheitsrichtlinie Ihrer Organisation lässt nicht zu, dass Sie
ssl_bump
verwenden. -
Für Ihre Buildspec-Datei sind keine Proxy-Einstellungen mit einem
proxy
-Element angegeben.
Empfohlene Lösungen:
-
Stellen Sie sicher, dass
ssl-bump
korrekt konfiguriert ist. Wenn Sie Squid als Proxy-Server verwenden, beachten Sie die Informationen im Abschnitt Konfigurieren von Squid als expliziter Proxy-Server. -
Gehen Sie wie folgt vor, um private Endpunkte für Amazon S3 und CloudWatch Logs zu verwenden:
-
Entfernen Sie in der Routing-Tabelle Ihres privaten Subnetzes die von Ihnen hinzugefügte Regel, die für das Internet bestimmten Datenverkehr an Ihren Proxy-Server weiterleitet. Weitere Informationen finden Sie unter Erstellen eines Subnetzes in Ihrem VPC im VPCAmazon-Benutzerhandbuch.
-
Erstellen Sie einen privaten Amazon S3 S3-Endpunkt und einen CloudWatch Logs-Endpunkt und verknüpfen Sie sie mit dem privaten Subnetz Ihres AmazonVPC. Weitere Informationen finden Sie unter VPCEndpoint Services im VPCAmazon-Benutzerhandbuch.
-
Bestätigen Sie, dass Private DNS Namen in Ihrem Amazon aktivieren ausgewählt VPC ist. Weitere Informationen finden Sie unter Erstellen eines Schnittstellenendpunkts im VPCAmazon-Benutzerhandbuch.
-
-
Wenn Sie für einen expliziten Proxy-Server kein
ssl-bump
verwenden, fügen Sie Ihrer Buildspec-Datei mithilfe einesproxy
-Elements eine Proxy-Konfiguration hinzu. Weitere Informationen erhalten Sie unter CodeBuild Auf einem expliziten Proxyserver ausführen und Syntax der Build-Spezifikation.version: 0.2 proxy: upload-artifacts: yes logs: yes phases: build: commands:
Die Bourne-Shell (sh) muss in Build-Images vorhanden sein
Problem: Sie verwenden ein Build-Image, das nicht von bereitgestellt wird AWS CodeBuild, und Ihre Builds schlagen mit der Meldung fehlBuild container found
dead before completing the build
.
Mögliche Ursache: Die Bourne-Shell (sh
) ist nicht in Ihrem Build-Image enthalten. CodeBuild sh
muss Build-Befehle und -Skripte ausführen.
Empfohlene Lösung: Falls es nicht sh
in Ihrem Build-Image vorhanden ist, fügen Sie es unbedingt hinzu, bevor Sie weitere Builds starten, die Ihr Image verwenden. (CodeBuild ist bereits sh
in den Build-Images enthalten.)
Warnung: „Skipping install of runtimes. runtime version selection is not supported by this build image“ beim Ausführen eines Builds
Problem: Wenn Sie einen Build ausführen, enthält das Build-Protokoll diesen Warnhinweis.
Mögliche Ursache: Ihr Build verwendet keine Version 1.0 oder höher des Amazon Linux 2 (AL2) -Standard-Images oder Version 2.0 oder höher des Ubuntu-Standard-Images, und eine Laufzeit ist in einem runtime-versions
Abschnitt in Ihrer Buildspec-Datei angegeben.
Empfohlene Lösung: Stellen Sie sicher, dass Ihre buildspec-Datei keinen runtime-versions
-Abschnitt enthält. Der runtime-versions
Abschnitt ist nur erforderlich, wenn Sie das Amazon Linux 2 (AL2) -Standard-Image oder höher oder das Ubuntu-Standard-Image Version 2.0 oder höher verwenden.
Fehler: „ JobWorker Identität konnte nicht verifiziert werden“ beim Öffnen der CodeBuild Konsole
Problem: Wenn Sie die CodeBuild Konsole öffnen, wird die Fehlermeldung „ JobWorker Identität konnte nicht verifiziert werden“ angezeigt.
Mögliche Ursache: Die IAM Rolle, die für den Konsolenzugriff verwendet wird, hat ein Tag mit jobId
als Schlüssel. Dieser Tag-Schlüssel ist reserviert für CodeBuild und verursacht diesen Fehler, falls er vorhanden ist.
Empfohlene Lösung: Ändern Sie alle benutzerdefinierten IAM Rollen-Tags, die den Schlüssel enthaltenjobId
, so, dass sie einen anderen Schlüssel haben, z. jobIdentifier
B.
Build konnte nicht gestartet werden
Problem: Beim Starten eines Builds erhalten Sie die Fehlermeldung Build konnte nicht gestartet werden.
Mögliche Ursache: Die Anzahl gleichzeitiger Builds wurde erreicht.
Empfohlene Lösungen: Warten Sie, bis andere Builds abgeschlossen sind, oder erhöhen Sie das Limit für gleichzeitige Builds für das Projekt und starten Sie den Build erneut. Weitere Informationen finden Sie unter Konfiguration des Projekts.
Zugreifen auf GitHub Metadaten in lokal zwischengespeicherten Builds
Problem: In einigen Fällen ist das .git-Verzeichnis in einem zwischengespeicherten Build eine Textdatei und kein Verzeichnis.
Mögliche Ursachen: Wenn das lokale Quell-Caching für einen Build aktiviert ist, wird ein Gitlink für das Verzeichnis CodeBuild erstellt. .git
Das bedeutet, dass das .git
Verzeichnis tatsächlich eine Textdatei ist, die den Pfad zum Verzeichnis enthält.
Empfohlene Lösungen: Verwenden Sie in allen Fällen den folgenden Befehl, um das Git-Metadatenverzeichnis abzurufen. Dieser Befehl funktioniert unabhängig vom Format von.git
:
git rev-parse --git-dir
AccessDenied: Der Bucket-Besitzer für die Berichtsgruppe stimmt nicht mit dem Besitzer des S3-Buckets überein...
Problem: Beim Hochladen von Testdaten in einen Amazon S3 S3-Bucket können die Testdaten nicht in den Bucket geschrieben werden. CodeBuild
Mögliche Ursachen:
-
Das für den Bucket-Besitzer der Berichtsgruppe angegebene Konto stimmt nicht mit dem Besitzer des Amazon S3 S3-Buckets überein.
-
Die Servicerolle hat keinen Schreibzugriff auf den Bucket.
Empfohlene Lösungen:
-
Ändern Sie den Besitzer des Berichtsgruppen-Buckets so, dass er dem Besitzer des Amazon S3 S3-Buckets entspricht.
-
Ändern Sie die Servicerolle, um Schreibzugriff auf den Amazon S3 S3-Bucket zu ermöglichen.