View a markdown version of this page

Erste Schritte mit CodeBuild - 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.

Erste Schritte mit CodeBuild

In den folgenden Tutorials verwenden Sie, AWS CodeBuild um eine Sammlung von Beispiel-Quellcode-Eingabedateien in eine bereitstellbare Version des Quellcodes zu integrieren.

Beide Tutorials haben dieselben Eingaben und Ergebnisse, aber eines verwendet die AWS CodeBuild Konsole und das andere verwendet die AWS CLI.

Wichtig

Wir empfehlen nicht, dass Sie Ihr AWS Root-Konto verwenden, um dieses Tutorial abzuschließen.

Erste Schritte mit AWS CodeBuild mit der Konsole

In diesem Tutorial verwenden Sie, AWS CodeBuild um eine Sammlung von Beispiel-Quellcode-Eingabedateien (Build-Eingabe-Artefakte oder Build-Eingabe) in eine bereitstellbare Version des Quellcodes (Build-Ausgabeartefakt oder Build-Ausgabe) zu erstellen. Insbesondere weisen Sie an CodeBuild , Apache Maven, ein gängiges Build-Tool, zu verwenden, um eine Reihe von Java-Klassendateien in eine Java-Archivdatei (JAR) zu erstellen. Dieses Tutorial setzt nicht voraus, dass Sie mit Apache Maven oder Java vertraut sind.

Sie können CodeBuild über die CodeBuild Konsole AWS CodePipeline, die oder die SDKs AWS CLI damit arbeiten. AWS Dieses Tutorial zeigt, wie Sie die CodeBuild Konsole verwenden. Für weitere Informationen zur Nutzung von CodePipeline siehe Verwenden Sie CodeBuild mit CodePipeline.

Wichtig

Für die Schritte in diesem Tutorial müssen Sie Ressourcen erstellen (z. B. einen S3-Bucket), die zu Belastungen Ihres AWS Kontos führen können. Dazu gehören mögliche Gebühren für CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon S3 und CloudWatch Logs. AWS KMS Weitere Informationen finden Sie unter AWS CodeBuild Preise, Amazon S3-Preise , AWS Key Management Service Preise und CloudWatch Amazon-Preise.

Schritt 1: Erstellen Sie den Quellcode

(Teil von: Erste Schritte mit AWS CodeBuild mit der Konsole)

In diesem Schritt erstellen Sie den Quellcode, den Sie für den Ausgabe-Bucket erstellen möchten CodeBuild . Dieser Quellcode besteht aus zwei Java-Klassendateien und einer Apache Maven Project Object Model (POM)-Datei.

  1. Erstellen Sie in einem leeren Verzeichnis auf Ihrem lokalen Computer oder der Instance folgende Verzeichnisstruktur.

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. Erstellen Sie diese Datei mithilfe eines Texteditors, benennen Sie sie MessageUtil.java und speichern Sie sie im Verzeichnis src/main/java.

    public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }

    Diese Klassendatei erstellt die Zeichenfolge, die an sie übergeben wurde, als Ausgabe. Der MessageUtil-Konstruktor legt die Zeichenfolge fest. Die printMessage-Methode erstellt die Ausgabe. Die salutationMessage-Methode gibt Hi! gefolgt von der Zeichenfolge aus.

  3. Erstellen Sie diese Datei, benennen Sie sie TestMessageUtil.java und speichern Sie sie im Verzeichnis /src/test/java.

    import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }

    Diese Klassendatei setzt die message-Variable in der Klasse MessageUtil auf Robert. Anschließend führt sie einen Test durch, um zu sehen, ob die message-Variable erfolgreich festgelegt wurde, indem sie überprüft, ob die Zeichenfolgen Robert und Hi!Robert in der Ausgabe vorhanden sind.

  4. Erstellen Sie diese Datei, benennen Sie sie pom.xml und speichern Sie sie im Stammverzeichnis (oberste Ebene).

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>

    Apache Maven verwendet die Anweisungen in dieser Datei, um die Dateien MessageUtil.java und TestMessageUtil.java in eine Datei namens messageUtil-1.0.jar zu konvertieren und dann die angegebenen Tests auszuführen.

An diesem Punkt sollte Ihre Dateistruktur wie folgt aussehen:

(root directory name) |-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

Schritt 2: Erstellen Sie die Buildspec-Datei

(Vorheriger Schritt: Schritt 1: Erstellen Sie den Quellcode)

In diesem Schritt erstellen Sie eine Build-Spezifikationsdatei. Eine Buildspec ist eine Sammlung von Build-Befehlen und zugehörigen Einstellungen im YAML-Format, die zur Ausführung eines Builds verwendet wird. CodeBuild Ohne eine Build-Spezifikation können Sie Ihre Build-Eingabe CodeBuild nicht erfolgreich in eine Build-Ausgabe konvertieren oder das Build-Ausgabe-Artefakt in der Build-Umgebung finden, um es in Ihren Ausgabe-Bucket hochzuladen.

Erstellen Sie diese Datei, benennen Sie sie buildspec.yml und speichern Sie sie im Stammverzeichnis (oberste Ebene).

version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
Wichtig

Da es sich bei der Build-Spezifikationsdeklaration um eine gültige YAML handelt, ist die Formatierung in einer Build-Spezifikationsdeklaration wichtig. Wenn die Anzahl der Leerzeichen in der Build-Spezifikationsdeklaration nicht mit dieser übereinstimmt, schlägt der Build ggf. sofort fehl. Verwenden Sie eine YAML-Validierung, um zu testen, ob es sich bei der Build-Spezifikationsdeklaration um eine gültige YAML handelt.

Anmerkung

Statt eine Build-Spezifikationsdatei in Ihren Quellcode einzuschließen, können Sie Build-Befehle beim Erstellen eines Build-Projekts separat deklarieren. Das ist hilfreich, wenn Sie Ihren Quellcode mit unterschiedlichen Build-Befehlen erstellen möchten, ohne jedes Mal das Quellcode-Repository zu aktualisieren. Weitere Informationen finden Sie unter Syntax der Build-Spezifikation.

In dieser Build-Spezifikationsdeklaration gilt:

  • version steht für die Version des verwendeten Build-Spezifikationsstandards. Diese Build-Spezifikationsdeklaration verwendet die aktuelle Version, 0.2.

  • phases steht für die Build-Phasen, in denen Sie CodeBuild anweisen können, Befehle auszuführen. Diese Build-Phasen sind hier als install, pre_build, build und post_build aufgelistet. Sie können die Schreibweise dieser Build-Phasennamen nicht ändern und Sie können keine zusätzlichen Build-Phasennamen erstellen.

    In diesem Beispiel wird während der build Phase der Befehl CodeBuild ausgeführt. mvn install Dieser Befehl weist Apache Maven an, die Java-Klassendateien zu kompilieren, zu testen und die kompilierten Dateien in ein Build-Ausgabeartefakt zu verpacken. Der Vollständigkeit halber sind in diesem Beispiel einige echo-Befehle in jeder Build-Phase platziert. Wenn Sie die detaillierten Build-Informationen später in diesem Tutorial anzeigen, können Sie der Ausgabe dieser echo-Befehle entnehmen, wie und in welcher Reihenfolge CodeBuild Befehle ausführt. (Auch wenn alle Build-Phasen in diesem Beispiel enthalten sind, müssen Sie nicht unbedingt eine Build-Phase einschließen, wenn Sie nicht vorhaben, während dieser Phase Befehle auszuführen.) CodeBuild Führt in jeder Buildphase jeden angegebenen Befehl nacheinander in der angegebenen Reihenfolge von Anfang bis Ende aus.

  • artifactssteht für den Satz von Build-Ausgabeartefakten, der in den Ausgabe-Bucket CodeBuild hochgeladen wird. filessteht für die Dateien, die in die Build-Ausgabe aufgenommen werden sollen. CodeBuild lädt die einzelne messageUtil-1.0.jar Datei hoch, die sich im target relativen Verzeichnis in der Build-Umgebung befindet. Der Dateiname messageUtil-1.0.jar und der Verzeichnisname target, unter denen Apache Maven Build-Ausgabeartefakte erstellt und speichert, gelten nur für dieses Beispiel. In Ihren eigenen Builds lauten diese Dateinamen und Verzeichnisse anders.

Weitere Informationen hierzu finden Sie unter Build-Spezifikationsreferenz.

An diesem Punkt sollte Ihre Dateistruktur wie folgt aussehen:

(root directory name) |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

Schritt 3: Erstellen Sie zwei S3-Buckets

(Vorheriger Schritt: Schritt 2: Erstellen Sie die Buildspec-Datei)

Auch wenn Sie einen einzelnen Bucket für dieses Tutorial verwenden können, ist mit zwei Buckets einfacher zu erkennen, woher die Build-Eingabe stammt und wohin die Build-Ausgabe geschrieben wird.

  • Einer dieser Buckets (Eingangs-Bucket) speichert die Build-Eingabe. In diesem Tutorial lautet der Name dieses Eingabe-Bucketscodebuild-region-ID-account-ID-input-bucket, wobei region-ID die AWS Region des Buckets und Ihre AWS Konto-ID account-ID ist.

  • Der andere Bucket (Ausgabe-Bucket) nimmt die Build-Ausgabe auf. In diesem Tutorial ist der Name dieses Ausgabe-Buckets codebuild-region-ID-account-ID-output-bucket.

Wenn Sie andere Namen für diese Buckets gewählt haben, müssen Sie diese Namen im gesamten Tutorial verwenden.

Diese beiden Buckets müssen sich in derselben AWS Region wie Ihre Builds befinden. Wenn Sie beispielsweise anweisen CodeBuild , einen Build in der Region USA Ost (Ohio) auszuführen, müssen sich diese Buckets auch in der Region USA Ost (Ohio) befinden.

Weitere Informationen erhalten Sie unter Erstellen eines Buckets im Benutzerhandbuch für Amazon Simple Storage Service.

Anmerkung

CodeBuild Es unterstützt zwar auch Build-Eingaben, die in Bitbucket-Repositorys gespeichert sind CodeCommit GitHub, und Bitbucket-Repositorys, aber dieses Tutorial zeigt dir nicht, wie du sie verwendest. Weitere Informationen finden Sie unter Planen eines Builds.

Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei

(Vorheriger Schritt: Schritt 3: Erstellen Sie zwei S3-Buckets)

In diesem Schritt fügen Sie den Quellcode und die Build-Spezifikationsdatei zum Empfangs-Bucket hinzu.

Erstellen Sie mit dem ZIP-Dienstprogramm Ihres Betriebssystems eine Datei namens MessageUtil.zip, die MessageUtil.java, TestMessageUtil.java, pom.xml und buildspec.yml enthält.

Die Verzeichnisstruktur der Datei MessageUtil.zip muss wie folgt aussehen:

MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Wichtig

Schließen Sie nicht das Verzeichnis (root directory name) ein, sondern nur die Verzeichnisse und Dateien, die im Verzeichnis (root directory name) enthalten sind.

Laden Sie die Datei MessageUtil.zip in den Empfangs-Bucket namens codebuild-region-ID-account-ID-input-bucket.

Wichtig

Für CodeCommit und Bitbucket-Repositorys musst du laut Konvention eine Build-Spezifikationsdatei speichern, die buildspec.yml im Stammverzeichnis (oberste Ebene) jedes Repositorys benannt ist, oder die Build-Spezifikationsdeklaration als Teil der Build-Projektdefinition angeben. GitHub Erstellen Sie keine ZIP-Datei, die den Quellcode und die Build-Spezifikationsdatei des Repositorys enthält.

Bei Build-Eingaben, die nur in S3-Buckets gespeichert sind, müssen Sie eine ZIP-Datei erstellen, die den Quellcode enthält, und – gemäß Konvention – eine Build-Spezifikationsdatei namens buildspec.yml im Stammverzeichnis (oberste Ebene) speichern oder die Build-Spezifikationsdeklaration in die Build-Projektdefinition einschließen.

Wenn Sie einen anderen Namen für Ihre Build-Spezifikationsdatei verwenden oder auf eine Build-Spezifikation verweisen möchten, die nicht im Stammverzeichnis gespeichert ist, können Sie eine Überschreibung der Build-Spezifikation im Rahmen der Build-Projektdefinition angeben. Weitere Informationen finden Sie unter Dateiname der Build-Spezifikation und Speicherort.

Schritt 5: Erstellen des Build-Projekts

(Vorheriger Schritt: Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei)

In diesem Schritt erstellst du ein Build-Projekt, mit dem der Build AWS CodeBuild ausgeführt wird. Ein Build-Projekt enthält Informationen darüber, wie ein Build ausgeführt wird. Dazu gehört auch, wo der Quellcode abgerufen werden kann, welche Build-Umgebung verwendet werden muss, welche Build-Befehle ausgeführt werden müssen und wo die Build-Ausgabe gespeichert werden soll. Eine Build-Umgebung stellt eine Kombination aus Betriebssystem, Programmiersprachenlaufzeit und Tools dar, die zur Ausführung eines Builds CodeBuild verwendet werden. Die Build-Umgebung wird als Docker-Image ausgedrückt. Weitere Informationen finden Sie unter Docker Overview auf der Docker Docs-Website.

Für diese Build-Umgebung weisen Sie an, ein Docker-Image CodeBuild zu verwenden, das eine Version des Java Development Kit (JDK) und Apache Maven enthält.

So erstellen Sie ein Build-Projekt
  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Konsole unter. AWS CodeBuild https://console.aws.amazon.com/codesuite/codebuild/home

  2. Verwenden Sie die AWS Regionsauswahl, um eine AWS Region auszuwählen, in der dies unterstützt CodeBuild wird. Weitere Informationen finden Sie unter AWS CodeBuild -Endpunkte und -Kontingente in der Allgemeine Amazon Web Services-Referenz.

  3. Wenn eine CodeBuild Informationsseite angezeigt wird, wählen Sie Build-Projekt erstellen. Erweitern Sie andernfalls im Navigationsbereich die Option Build, wählen Sie Build-Projekte aus und wählen Sie dann Build-Projekt erstellen aus.

  4. Geben Sie auf der Seite Create build project (Build-Projekt erstellen) unter Project configuration (Projektkonfiguration) für Project name (Projektname) einen Namen für dieses Build-Projekt ein (in diesem Beispiel codebuild-demo-project). Die Namen der Build-Projekte müssen für jedes AWS Konto eindeutig sein. Wenn Sie einen anderen Namen vergeben, müssen Sie diesen im gesamten Tutorial verwenden.

    Anmerkung

    Auf der Seite Create build project (Build-Projekt erstellen) wird möglicherweise eine Fehlermeldung ähnlich der folgenden angezeigt: You are not authorized to perform this operation (Sie sind nicht berechtigt, diesen Vorgang auszuführen).. Dies liegt höchstwahrscheinlich daran, dass Sie sich AWS-Managementkonsole als Benutzer angemeldet haben, der nicht über die Berechtigungen zum Erstellen eines Build-Projekts verfügt. Um dies zu beheben, melden Sie sich von der ab und dann wieder mit den Anmeldeinformationen an AWS-Managementkonsole, die zu einer der folgenden IAM-Entitäten gehören:

    • Ein Administratorbenutzer in Ihrem AWS Konto. Weitere Informationen finden Sie im Benutzerhandbuch unter Erstellen Ihres ersten AWS-Konto Root-Benutzers und Ihrer ersten Root-Gruppe.

    • Ein Benutzer in Ihrem AWS Konto mit den und IAMFullAccess verwalteten Richtlinien AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccess, die diesem Benutzer oder einer IAM-Gruppe, der der Benutzer angehört, zugeordnet sind. Wenn Sie in Ihrem AWS Konto keinen Benutzer oder keine Gruppe mit diesen Berechtigungen haben und Sie diese Berechtigungen Ihrem Benutzer oder Ihrer Gruppe nicht hinzufügen können, wenden Sie sich an Ihren AWS Kontoadministrator, um Unterstützung zu erhalten. Weitere Informationen finden Sie unter AWS verwaltete (vordefinierte) Richtlinien für AWS CodeBuild.

    Beide Optionen beinhalten Administratorrechte, die es Ihnen ermöglichen, ein Build-Projekt zu erstellen, damit Sie dieses Tutorial abschließen können. Es wird empfohlen, immer die Mindestberechtigungen zu verwenden, die für die Ausführung Ihrer Aufgabe erforderlich sind. Weitere Informationen finden Sie unter AWS CodeBuild Berechtigungsreferenz.

  5. Wählen Sie unter Source für Source provider die Option Amazon S3 aus.

  6. Wählen Sie für Bucket codebuild- region-ID - account-ID -input-bucket aus.

  7. Geben Sie für S3 object key (S3-Objektschlüssel) MessageUtil.zip ein.

  8. Wählen Sie unter Environment für Environment image weiterhin Managed Image aus.

  9. Wählen Sie Amazon Linux als Betriebssystem aus.

  10. Wählen Sie unter Runtime (Laufzeit) die Option Standard aus.

  11. Wählen Sie für Image aws/codebuild /amazonlinux-x86_64-standard:corretto11.

  12. Wählen Sie unter Service role weiterhin New service role aus und lassen Sie Role name unverändert.

  13. Belassen Sie für Buildspec die Option Use a buildspec file (Eine buildspec-Datei verwenden) aktiviert.

  14. Wählen Sie unter Artifacts für Type die Option Amazon S3 aus.

  15. Wählen Sie als Bucket-Namen codebuild- region-ID - account-ID -output-bucket aus.

  16. Lassen Sie Name und Path (Pfad) leer.

  17. Wählen Sie Create build project (Build-Projekt erstellen) aus.

Schritt 6: Ausführen des Builds

(Vorheriger Schritt: Schritt 5: Erstellen des Build-Projekts)

In diesem Schritt weisen Sie an AWS CodeBuild , den Build mit den Einstellungen im Build-Projekt auszuführen.

So führen Sie den Build 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.

  3. Wählen Sie in der Liste der Build-Projekte codebuild-demo-project aus, und wählen Sie dann Start build aus. Der Build beginnt sofort.

Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen

(Vorheriger Schritt: Schritt 6: Ausführen des Builds)

In diesem Schritt zeigen Sie eine Zusammenfassung der Informationen über den Build-Status an.

So zeigen Sie eine Zusammenfassung der Build-Informationen an

  1. Wenn die <build-ID> Seite codebuild-demo-project: nicht angezeigt wird, wählen Sie in der Navigationsleiste Build history aus. Wählen Sie als Nächstes in der Liste der Build-Projekte für Project den Link Build run for codebuild-demo-project aus. Es sollte nur ein passender Link vorhanden sein. (Wenn Sie dieses Tutorial bereits zuvor durchgearbeitet haben, wählen Sie in der Spalte Completed (Fertiggestellt) den Link mit dem neuesten Wert aus.)

  2. Auf der Build-Statusseite sollten unter Phasendetails die folgenden Build-Phasen mit Erfolgreich in der Statusspalte angezeigt werden:

    • SUBMITTED

    • IN WARTESCHLANGE

    • PROVISIONING

    • DOWNLOAD_SOURCE

    • INSTALL

    • PRE_BUILD

    • BUILD

    • POST_BUILD

    • UPLOAD_ARTIFACTS

    • FINALIZING

    • COMPLETED

    Unter Build-Status sollte Succeeded angezeigt werden.

    Wenn stattdessen In Progress (Verarbeitung läuft...) angezeigt wird, wählen Sie die Schaltfläche zum Aktualisieren aus.

  3. Neben jeder Build-Phase gibt der Wert Duration (Dauer) an, wie lange diese Build-Phase gedauert hat. Der Wert End time gibt an, wann die Build-Phase beendet wurde.

Schritt 8: Anzeigen der detaillierten Build-Informationen

(Vorheriger Schritt: Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen)

In diesem Schritt sehen Sie detaillierte Informationen zu Ihrem Build in den CloudWatch Protokollen.

Anmerkung

Zum Schutz vertraulicher Informationen sind die folgenden Informationen in den CodeBuild Protokollen versteckt:

So zeigen Sie detaillierte Build-Informationen an
  1. Während die Seite mit den Build-Details immer noch vom vorherigen Schritt angezeigt wird, werden die letzten 10,000 Zeilen des Build-Protokolls unter Build logs angezeigt. Um das gesamte Build-Protokoll in CloudWatch Logs anzuzeigen, wählen Sie den Link Gesamtes Protokoll anzeigen.

  2. Im CloudWatch Log-Stream „Logs“ können Sie die Log-Ereignisse durchsuchen. Standardmäßig werden nur die letzten Protokollereignisse angezeigt. Um ältere Protokollereignisse anzuzeigen, blättern Sie zum Anfang der Liste.

  3. In diesem Tutorial enthalten die meisten Protokollereignisse wahrscheinlich nicht benötigte detaillierte Informationen über das Herunterladen von Build-Abhängigkeitsdateien durch CodeBuild in die Build-Umgebung und deren Installation. Sie können die angezeigten Informationen über das Feld Filter events reduzieren. Wenn Sie beispielsweise "[INFO]" in das Feld Filter events (Ereignisse filtern) eingeben, werden nur Ereignisse angezeigt, die [INFO] enthalten. Weitere Informationen finden Sie unter Filter- und Mustersyntax im CloudWatch Amazon-Benutzerhandbuch.

Schritt 9: Abrufen des Build-Ausgabeartefakts

(Vorheriger Schritt: Schritt 8: Anzeigen der detaillierten Build-Informationen)

In diesem Schritt erhalten Sie die messageUtil-1.0.jar Datei, die CodeBuild erstellt und in den Ausgabe-Bucket hochgeladen wurde.

Sie können die CodeBuild Konsole oder die Amazon S3-Konsole verwenden, um diesen Schritt abzuschließen.

Um das Build-Ausgabeartefakt abzurufen (AWS CodeBuild Konsole)
  1. Wenn die CodeBuild Konsole noch geöffnet ist und die Seite mit den Build-Details aus dem vorherigen Schritt immer noch angezeigt wird, wählen Sie den Tab Build-Details und scrollen Sie nach unten zum Abschnitt Artefakte.

    Anmerkung

    Wenn die Seite mit den Build-Details nicht angezeigt wird, wählen Sie in der Navigationsleiste die Option Build-Verlauf und dann den Link Build ausführen aus.

  2. Der Link zum Amazon S3-Ordner befindet sich unter dem Upload-Verzeichnis für Artifacts. Dieser Link öffnet den Ordner in Amazon S3, in dem Sie die messageUtil-1.0.jar Build-Ausgabe-Artefaktdatei finden.

Um das Build-Ausgabeartefakt abzurufen (Amazon S3-Konsole)
  1. Öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Öffnen Sie codebuild-region-ID-account-ID-output-bucket.

  3. Öffnen Sie das Verzeichnis codebuild-demo-project.

  4. Öffnen Sie den Ordner target, in dem Sie die Build-Ausgabeartefaktdatei messageUtil-1.0.jar finden.

Schritt 10: Löschen Sie die S3-Buckets

(Vorheriger Schritt: Schritt 9: Abrufen des Build-Ausgabeartefakts)

Um zu verhindern, dass Ihr AWS Konto fortlaufend belastet wird, können Sie die in diesem Tutorial verwendeten Eingabe- und Ausgabe-Buckets löschen. Eine Anleitung finden Sie unter Löschen oder Leeren eines Buckets im Amazon Simple Storage Service-Benutzerhandbuch.

Wenn Sie den IAM-Benutzer oder einen Administrator-IAM-Benutzer verwenden, um diese Buckets zu löschen, muss der Benutzer über mehr Zugriffsberechtigungen verfügen. Fügen Sie die folgende Anweisung zwischen den Markierungen (### BEGIN ADDING STATEMENT HERE ###und### END ADDING STATEMENTS HERE ###) zu einer vorhandenen Zugriffsrichtlinie für den Benutzer hinzu.

Die Ellipsen (...) in dieser Anweisung dienen der Übersichtlichkeit der Darstellung. Entfernen Sie keine Anweisungen aus der vorhandenen Zugriffsrichtlinie. Geben Sie keine Auslassungspunkte in die Richtlinie ein.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" } ] }

Nachbearbeitung

In diesem Tutorial haben Sie AWS CodeBuild früher eine Reihe von Java-Klassendateien in eine JAR-Datei eingebaut. Anschließend haben Sie die Build-Ergebnisse angezeigt.

Sie können jetzt versuchen, es CodeBuild in Ihren eigenen Szenarien zu verwenden. Folgen Sie den Anweisungen in Planen eines Builds. Wenn Sie dazu noch nicht bereit sind, können Sie einige der Beispiele als Build erstellen. Weitere Informationen finden Sie unter Anwendungsfallbasierte Beispiele für CodeBuild.

Erste Schritte mit AWS CodeBuild mit dem AWS CLI

In diesem Tutorial verwenden Sie, AWS CodeBuild um eine Sammlung von Beispiel-Quellcode-Eingabedateien (sogenannte Build-Eingabeartefakte oder Build-Input) in eine bereitstellbare Version des Quellcodes (als Build-Ausgabeartefakt oder Build-Output bezeichnet) zu erstellen. Insbesondere weisen Sie an CodeBuild , Apache Maven, ein gängiges Build-Tool, zu verwenden, um eine Reihe von Java-Klassendateien in eine Java-Archivdatei (JAR) zu erstellen. Dieses Tutorial setzt nicht voraus, dass Sie mit Apache Maven oder Java vertraut sind.

Sie können CodeBuild über die CodeBuild Konsole AWS CodePipeline, die oder die SDKs AWS CLI damit arbeiten. AWS Dieses Tutorial zeigt die Verwendung CodeBuild mit dem AWS CLI. Hinweise zur Verwendung finden CodePipeline Sie unterVerwenden Sie CodeBuild mit CodePipeline.

Wichtig

Für die Schritte in diesem Tutorial müssen Sie Ressourcen erstellen (z. B. einen S3-Bucket), die zu Belastungen Ihres AWS Kontos führen können. Dazu gehören mögliche Gebühren für CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon S3 und CloudWatch Logs. AWS KMS Weitere Informationen finden Sie unter CodeBuild Preise, Amazon S3-Preise , AWS Key Management Service Preise und CloudWatch Amazon-Preise.

Schritt 1: Erstellen Sie den Quellcode

(Teil von: Erste Schritte mit AWS CodeBuild mit dem AWS CLI)

In diesem Schritt erstellen Sie den Quellcode, den Sie für den Ausgabe-Bucket erstellen möchten CodeBuild . Dieser Quellcode besteht aus zwei Java-Klassendateien und einer Apache Maven Project Object Model (POM)-Datei.

  1. Erstellen Sie in einem leeren Verzeichnis auf Ihrem lokalen Computer oder der Instance folgende Verzeichnisstruktur.

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. Erstellen Sie diese Datei mithilfe eines Texteditors, benennen Sie sie MessageUtil.java und speichern Sie sie im Verzeichnis src/main/java.

    public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }

    Diese Klassendatei erstellt die Zeichenfolge, die an sie übergeben wurde, als Ausgabe. Der MessageUtil-Konstruktor legt die Zeichenfolge fest. Die printMessage-Methode erstellt die Ausgabe. Die salutationMessage-Methode gibt Hi! gefolgt von der Zeichenfolge aus.

  3. Erstellen Sie diese Datei, benennen Sie sie TestMessageUtil.java und speichern Sie sie im Verzeichnis /src/test/java.

    import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }

    Diese Klassendatei setzt die message-Variable in der Klasse MessageUtil auf Robert. Anschließend führt sie einen Test durch, um zu sehen, ob die message-Variable erfolgreich festgelegt wurde, indem sie überprüft, ob die Zeichenfolgen Robert und Hi!Robert in der Ausgabe vorhanden sind.

  4. Erstellen Sie diese Datei, benennen Sie sie pom.xml und speichern Sie sie im Stammverzeichnis (oberste Ebene).

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>

    Apache Maven verwendet die Anweisungen in dieser Datei, um die Dateien MessageUtil.java und TestMessageUtil.java in eine Datei namens messageUtil-1.0.jar zu konvertieren und dann die angegebenen Tests auszuführen.

An diesem Punkt sollte Ihre Dateistruktur wie folgt aussehen:

(root directory name) |-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

Schritt 2: Erstellen Sie die Buildspec-Datei

(Vorheriger Schritt: Schritt 1: Erstellen Sie den Quellcode)

In diesem Schritt erstellen Sie eine Build-Spezifikationsdatei. Eine Buildspec ist eine Sammlung von Build-Befehlen und zugehörigen Einstellungen im YAML-Format, die zur Ausführung eines Builds verwendet wird. CodeBuild Ohne eine Build-Spezifikation können Sie Ihre Build-Eingabe CodeBuild nicht erfolgreich in eine Build-Ausgabe konvertieren oder das Build-Ausgabe-Artefakt in der Build-Umgebung finden, um es in Ihren Ausgabe-Bucket hochzuladen.

Erstellen Sie diese Datei, benennen Sie sie buildspec.yml und speichern Sie sie im Stammverzeichnis (oberste Ebene).

version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
Wichtig

Da es sich bei der Build-Spezifikationsdeklaration um eine gültige YAML handelt, ist die Formatierung in einer Build-Spezifikationsdeklaration wichtig. Wenn die Anzahl der Leerzeichen in der Build-Spezifikationsdeklaration nicht mit dieser übereinstimmt, schlägt der Build ggf. sofort fehl. Verwenden Sie eine YAML-Validierung, um zu testen, ob es sich bei der Build-Spezifikationsdeklaration um eine gültige YAML handelt.

Anmerkung

Statt eine Build-Spezifikationsdatei in Ihren Quellcode einzuschließen, können Sie Build-Befehle beim Erstellen eines Build-Projekts separat deklarieren. Das ist hilfreich, wenn Sie Ihren Quellcode mit unterschiedlichen Build-Befehlen erstellen möchten, ohne jedes Mal das Quellcode-Repository zu aktualisieren. Weitere Informationen finden Sie unter Syntax der Build-Spezifikation.

In dieser Build-Spezifikationsdeklaration gilt:

  • version steht für die Version des verwendeten Build-Spezifikationsstandards. Diese Build-Spezifikationsdeklaration verwendet die aktuelle Version, 0.2.

  • phases steht für die Build-Phasen, in denen Sie CodeBuild anweisen können, Befehle auszuführen. Diese Build-Phasen sind hier als install, pre_build, build und post_build aufgelistet. Sie können die Schreibweise dieser Build-Phasennamen nicht ändern und Sie können keine zusätzlichen Build-Phasennamen erstellen.

    In diesem Beispiel wird während der build Phase der Befehl CodeBuild ausgeführt. mvn install Dieser Befehl weist Apache Maven an, die Java-Klassendateien zu kompilieren, zu testen und die kompilierten Dateien in ein Build-Ausgabeartefakt zu verpacken. Der Vollständigkeit halber sind in diesem Beispiel einige echo-Befehle in jeder Build-Phase platziert. Wenn Sie die detaillierten Build-Informationen später in diesem Tutorial anzeigen, können Sie der Ausgabe dieser echo-Befehle entnehmen, wie und in welcher Reihenfolge CodeBuild Befehle ausführt. (Auch wenn alle Build-Phasen in diesem Beispiel enthalten sind, müssen Sie nicht unbedingt eine Build-Phase einschließen, wenn Sie nicht vorhaben, während dieser Phase Befehle auszuführen.) CodeBuild Führt in jeder Buildphase jeden angegebenen Befehl nacheinander in der angegebenen Reihenfolge von Anfang bis Ende aus.

  • artifactssteht für den Satz von Build-Ausgabeartefakten, der in den Ausgabe-Bucket CodeBuild hochgeladen wird. filessteht für die Dateien, die in die Build-Ausgabe aufgenommen werden sollen. CodeBuild lädt die einzelne messageUtil-1.0.jar Datei hoch, die sich im target relativen Verzeichnis in der Build-Umgebung befindet. Der Dateiname messageUtil-1.0.jar und der Verzeichnisname target, unter denen Apache Maven Build-Ausgabeartefakte erstellt und speichert, gelten nur für dieses Beispiel. In Ihren eigenen Builds lauten diese Dateinamen und Verzeichnisse anders.

Weitere Informationen hierzu finden Sie unter Build-Spezifikationsreferenz.

An diesem Punkt sollte Ihre Dateistruktur wie folgt aussehen:

(root directory name) |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

Schritt 3: Erstellen Sie zwei S3-Buckets

(Vorheriger Schritt: Schritt 2: Erstellen Sie die Buildspec-Datei)

Auch wenn Sie einen einzelnen Bucket für dieses Tutorial verwenden können, ist mit zwei Buckets einfacher zu erkennen, woher die Build-Eingabe stammt und wohin die Build-Ausgabe geschrieben wird.

  • Einer dieser Buckets (Eingangs-Bucket) speichert die Build-Eingabe. In diesem Tutorial lautet der Name dieses Eingabe-Buckets. Dabei handelt es codebuild-region-ID-account-ID-input-bucket sich region-ID um die AWS Region des Buckets und account-ID um Ihre AWS Konto-ID.

  • Der andere Bucket (Ausgabe-Bucket) nimmt die Build-Ausgabe auf. In diesem Tutorial ist der Name dieses Ausgabe-Buckets codebuild-region-ID-account-ID-output-bucket.

Wenn Sie andere Namen für diese Buckets gewählt haben, müssen Sie diese Namen im gesamten Tutorial verwenden.

Diese beiden Buckets müssen sich in derselben AWS Region wie Ihre Builds befinden. Wenn Sie beispielsweise anweisen CodeBuild , einen Build in der Region USA Ost (Ohio) auszuführen, müssen sich diese Buckets auch in der Region USA Ost (Ohio) befinden.

Weitere Informationen erhalten Sie unter Erstellen eines Buckets im Benutzerhandbuch für Amazon Simple Storage Service.

Anmerkung

CodeBuild Es unterstützt zwar auch Build-Eingaben, die in Bitbucket-Repositorys gespeichert sind CodeCommit GitHub, und Bitbucket-Repositorys, aber dieses Tutorial zeigt dir nicht, wie du sie verwendest. Weitere Informationen finden Sie unter Planen eines Builds.

Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei

(Vorheriger Schritt: Schritt 3: Erstellen Sie zwei S3-Buckets)

In diesem Schritt fügen Sie den Quellcode und die Build-Spezifikationsdatei zum Empfangs-Bucket hinzu.

Erstellen Sie mit dem ZIP-Dienstprogramm Ihres Betriebssystems eine Datei namens MessageUtil.zip, die MessageUtil.java, TestMessageUtil.java, pom.xml und buildspec.yml enthält.

Die Verzeichnisstruktur der Datei MessageUtil.zip muss wie folgt aussehen:

MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Wichtig

Schließen Sie nicht das Verzeichnis (root directory name) ein, sondern nur die Verzeichnisse und Dateien, die im Verzeichnis (root directory name) enthalten sind.

Laden Sie die Datei MessageUtil.zip in den Empfangs-Bucket namens codebuild-region-ID-account-ID-input-bucket.

Wichtig

Für CodeCommit und Bitbucket-Repositorys musst du laut Konvention eine Build-Spezifikationsdatei speichern, die buildspec.yml im Stammverzeichnis (oberste Ebene) jedes Repositorys benannt ist, oder die Build-Spezifikationsdeklaration als Teil der Build-Projektdefinition angeben. GitHub Erstellen Sie keine ZIP-Datei, die den Quellcode und die Build-Spezifikationsdatei des Repositorys enthält.

Bei Build-Eingaben, die nur in S3-Buckets gespeichert sind, müssen Sie eine ZIP-Datei erstellen, die den Quellcode enthält, und – gemäß Konvention – eine Build-Spezifikationsdatei namens buildspec.yml im Stammverzeichnis (oberste Ebene) speichern oder die Build-Spezifikationsdeklaration in die Build-Projektdefinition einschließen.

Wenn Sie einen anderen Namen für Ihre Build-Spezifikationsdatei verwenden oder auf eine Build-Spezifikation verweisen möchten, die nicht im Stammverzeichnis gespeichert ist, können Sie eine Überschreibung der Build-Spezifikation im Rahmen der Build-Projektdefinition angeben. Weitere Informationen finden Sie unter Dateiname der Build-Spezifikation und Speicherort.

Schritt 5: Erstellen des Build-Projekts

(Vorheriger Schritt: Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei)

In diesem Schritt erstellst du ein Build-Projekt, mit dem der Build AWS CodeBuild ausgeführt wird. Ein Build-Projekt enthält Informationen darüber, wie ein Build ausgeführt wird. Dazu gehört auch, wo der Quellcode abgerufen werden kann, welche Build-Umgebung verwendet werden muss, welche Build-Befehle ausgeführt werden müssen und wo die Build-Ausgabe gespeichert werden soll. Eine Build-Umgebung stellt eine Kombination aus Betriebssystem, Programmiersprachenlaufzeit und Tools dar, die zur Ausführung eines Builds CodeBuild verwendet werden. Die Build-Umgebung wird als Docker-Image ausgedrückt. Weitere Informationen finden Sie unter Docker Overview auf der Docker Docs-Website.

Für diese Build-Umgebung weisen Sie an, ein Docker-Image CodeBuild zu verwenden, das eine Version des Java Development Kit (JDK) und Apache Maven enthält.

So erstellen Sie ein Build-Projekt
  1. Verwenden Sie das, AWS CLI um den Befehl auszuführen: create-project

    aws codebuild create-project --generate-cli-skeleton

    JSON-formatted Daten erscheinen in der Ausgabe. Kopieren Sie die Daten create-project.json in eine Datei, die an einem Speicherort auf dem lokalen Computer oder der Instanz benannt ist, auf der die installiert AWS CLI ist. Wenn Sie einen anderen Dateinamen verwenden, muss dieser Name im gesamten Tutorial verwendet werden.

    Ändern Sie die kopierten Daten entsprechend dem nachfolgenden Format und speichern Sie die Ergebnisse:

    { "name": "codebuild-demo-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole" }

    serviceIAMRoleErsetzen Sie durch den Amazon-Ressourcennamen (ARN) einer CodeBuild Servicerolle (z. B.arn:aws:iam::account-ID:role/role-name). Informationen zum Erstellen finden Sie unter Erlauben CodeBuild Sie die Interaktion mit anderen AWS service.

    In diesen Daten:

    • name stellt eine erforderliche ID für dieses Build-Projekt dar (in diesem Beispiel codebuild-demo-project). Build-Projektnamen müssen in allen Build-Projekten in Ihrem Konto eindeutig sein.

    • For type ist ein erforderlicher Wertsource, der den Repository-Typ des Quellcodes darstellt (in diesem Beispiel S3 für einen Amazon S3-Bucket).

    • Für source stellt location den Pfad zum Quellcode dar (in diesem Beispiel der Name des Empfangs-Buckets gefolgt vom ZIP-Dateinamen).

    • For type ist ein erforderlicher Wertartifacts, der den Repository-Typ des Build-Ausgabeartefakts darstellt (in diesem Beispiel S3 für einen Amazon S3-Bucket).

    • Für artifacts stellt location den Namen des Ausgabe-Buckets dar, den Sie zuvor erstellt oder definiert haben (in diesem Beispiel codebuild-region-ID-account-ID-output-bucket).

    • Forenvironment, type ist ein erforderlicher Wert, der den Typ der Build-Umgebung darstellt (in diesem BeispielLINUX_CONTAINER).

    • For image ist ein erforderlicher Wertenvironment, der die Kombination aus Docker-Image-Namen und -Tag darstellt, die dieses Build-Projekt verwendet, wie durch den Docker-Image-Repository-Typ angegeben (in diesem Beispiel aws/codebuild/standard:5.0 für ein Docker-Image im CodeBuild Docker-Images-Repository). aws/codebuild/standardist der Name des Docker-Images. 5.0ist das Tag des Docker-Images.

      Weitere Docker-Images, die Sie in Ihren Szenarien verwenden können, finden Sie unter Build-Umgebungsreferenz.

    • Forenvironment, computeType ist ein erforderlicher Wert, der die CodeBuild verwendeten Computerressourcen angibt (in diesem BeispielBUILD_GENERAL1_SMALL).

    Anmerkung

    Andere verfügbare Werte in den JSON-formatted Originaldaten, wie descriptionbuildspec, auth (einschließlich type undresource), pathnamespaceType, name (fürartifacts)packaging, environmentVariables (einschließlich name undvalue), timeoutInMinutesencryptionKey, und tags (einschließlich key undvalue), sind optional. Sie werden in diesem Tutorial nicht verwendet und deshalb hier nicht aufgelistet. Weitere Informationen finden Sie unter Erstellen Sie ein Build-Projekt (AWS CLI).

  2. Wechseln Sie in das Verzeichnis, das die soeben gespeicherte Datei enthält, und führen Sie den Befehl create-project erneut aus.

    aws codebuild create-project --cli-input-json file://create-project.json

    Ist der Befehl erfolgreich, gibt er als Ausgabe Daten zurück, die wie folgt aussehen sollten.

    { "project": { "name": "codebuild-demo-project", "serviceRole": "serviceIAMRole", "tags": [], "artifacts": { "packaging": "NONE", "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "name": "message-util.zip" }, "lastModified": 1472661575.244, "timeoutInMinutes": 60, "created": 1472661575.244, "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "encryptionKey": "arn:aws:kms:region-ID:account-ID:alias/aws/s3", "arn": "arn:aws:codebuild:region-ID:account-ID:project/codebuild-demo-project" } }
    • project enthält Informationen zu diesem Build-Projekt.

      • tags stellt alle deklarierten Tags dar.

      • packaging gibt an, wie die Build-Ausgabeartefakte im Ausgabe-Bucket gespeichert werden. NONE bedeutet, dass ein Ordner im Ausgabe-Bucket erstellt wird. Das Build-Ausgabeartefakt wir in diesem Ordner gespeichert.

      • lastModified zeigt die Uhrzeit der letzten Änderung des Build-Projekts im Unix-Zeitformat an.

      • timeoutInMinutessteht für die Anzahl der Minuten, nach denen der Build CodeBuild beendet wird, falls der Build noch nicht abgeschlossen wurde. (Der Standardwert ist 60 Minuten.)

      • created zeigt die Uhrzeit der Erstellung des Build-Projekts im Unix-Zeitformat an.

      • environmentVariablessteht für alle Umgebungsvariablen, die deklariert wurden und für die CodeBuild Verwendung während des Builds verfügbar sind.

      • encryptionKeysteht für den ARN des vom Kunden verwalteten Schlüssels, der zum Verschlüsseln des Build-Ausgabeartefakts CodeBuild verwendet wurde.

      • arn zeigt den ARN des Build-Projekts an.

Anmerkung

Nachdem Sie den create-project Befehl ausgeführt haben, wird möglicherweise eine Fehlermeldung ähnlich der folgenden ausgegeben: User: user-ARN is not authorized to perform: codebuild:. CreateProject Dies liegt höchstwahrscheinlich daran, dass Sie den AWS CLI mit den Anmeldeinformationen eines Benutzers konfiguriert haben, der nicht über ausreichende Berechtigungen CodeBuild zum Erstellen von Build-Projekten verfügt. Um dies zu beheben, konfigurieren Sie die AWS CLI mit Anmeldeinformationen, die zu einer der folgenden IAM-Entitäten gehören:

  • Ein Administratorbenutzer in Ihrem AWS Konto. Weitere Informationen finden Sie im Benutzerhandbuch unter Erstellen Ihres ersten AWS-Konto Root-Benutzers und Ihrer ersten Root-Gruppe.

  • Ein Benutzer in Ihrem AWS Konto mit den und IAMFullAccess verwalteten Richtlinien AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccess, die diesem Benutzer oder einer IAM-Gruppe, der der Benutzer angehört, zugeordnet sind. Wenn Sie in Ihrem AWS Konto keinen Benutzer oder keine Gruppe mit diesen Berechtigungen haben und Sie diese Berechtigungen Ihrem Benutzer oder Ihrer Gruppe nicht hinzufügen können, wenden Sie sich an Ihren AWS Kontoadministrator, um Unterstützung zu erhalten. Weitere Informationen finden Sie unter AWS verwaltete (vordefinierte) Richtlinien für AWS CodeBuild.

Schritt 6: Ausführen des Builds

(Vorheriger Schritt: Schritt 5: Erstellen des Build-Projekts)

In diesem Schritt weisen Sie an AWS CodeBuild , den Build mit den Einstellungen im Build-Projekt auszuführen.

So führen Sie den Build aus
  1. Verwenden Sie den AWS CLI , um den start-build Befehl auszuführen:

    aws codebuild start-build --project-name project-name

    project-nameErsetzen Sie es durch den Namen Ihres Build-Projekts aus dem vorherigen Schritt (z. B.codebuild-demo-project).

  2. Ist der Befehl erfolgreich, gibt er als Ausgabe Daten zurück, die wie folgt aussehen sollten:

    { "build": { "buildComplete": false, "initiator": "user-name", "artifacts": { "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "buildStatus": "IN_PROGRESS", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "currentPhase": "SUBMITTED", "startTime": 1472848787.882, "id": "codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE", "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE" } }
    • build enthält Informationen zu diesem Build.

      • buildComplete gibt an, ob der Build abgeschlossen wurde (true). Andernfalls false.

      • initiator steht für die Entität, die den Build gestartet hat.

      • artifacts enthält Informationen über die Build-Ausgabe, einschließlich Speicherort.

      • projectName zeigt den Namen des Build-Projekts an.

      • buildStatus stellt den aktuellen Build-Status dar, wenn der start-build-Befehl ausgeführt wurde.

      • currentPhase stellt die aktuelle Build-Phase dar, wenn der start-build-Befehl ausgeführt wurde.

      • startTime zeigt die Uhrzeit für den Start des Build-Prozesses im Unix-Zeitformat an.

      • id enthält die Build-ID.

      • arn zeigt den ARN des Builds an.

    Notieren Sie sich den Wert für die id. Sie benötigen ihn im nächsten Schritt.

Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen

(Vorheriger Schritt: Schritt 6: Ausführen des Builds)

In diesem Schritt zeigen Sie eine Zusammenfassung der Informationen über den Build-Status an.

So zeigen Sie eine Zusammenfassung der Build-Informationen an
  • Verwenden Sie den AWS CLI , um den batch-get-builds Befehl auszuführen.

    aws codebuild batch-get-builds --ids id

    idErsetzen Sie durch den id Wert, der in der Ausgabe des vorherigen Schritts angezeigt wurde.

    Ist der Befehl erfolgreich, gibt er als Ausgabe Daten zurück, die wie folgt aussehen sollten.

    { "buildsNotFound": [], "builds": [ { "buildComplete": true, "phases": [ { "phaseStatus": "SUCCEEDED", "endTime": 1472848788.525, "phaseType": "SUBMITTED", "durationInSeconds": 0, "startTime": 1472848787.882 }, ... The full list of build phases has been omitted for brevity ... { "phaseType": "COMPLETED", "startTime": 1472848878.079 } ], "logs": { "groupName": "/aws/codebuild/codebuild-demo-project", "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "streamName": "38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" }, "artifacts": { "md5sum": "MD5-hash", "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip", "sha256sum": "SHA-256-hash" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "initiator": "user-name", "buildStatus": "SUCCEEDED", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "currentPhase": "COMPLETED", "startTime": 1472848787.882, "endTime": 1472848878.079, "id": "codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" } ] }
    • buildsNotFound zeigt die Build-IDs für alle Builds an, für die keine Informationen verfügbar sind. In diesem Beispiel sollte dies leer sein.

    • builds zeigt die Informationen für alle Builds an, für die Informationen verfügbar sind. In diesem Beispiel sollten nur über einen Build Informationen in der Ausgabe angezeigt werden.

      • phases steht für den Satz von Build-Phasen, die CodeBuild während des Build-Prozesses ausführt. Informationen über die einzelnen Build-Phasen werden separat als startTime, endTime und durationInSeconds aufgelistet (wann die Build-Phase gestartet und beendet wurde, im Unix-Zeitformat, und wie lange sie in Sekunden gedauert hat) sowie der phaseType (z. B. SUBMITTED, PROVISIONING, DOWNLOAD_SOURCE, INSTALL, PRE_BUILD, BUILD, POST_BUILD, UPLOAD_ARTIFACTS, FINALIZING oder COMPLETED) und phaseStatus (z. B. SUCCEEDED, FAILED, FAULT, TIMED_OUT, IN_PROGRESS oder STOPPED). Wenn Sie den Befehl batch-get-builds zum ersten Mal ausführen, sind möglicherweise nicht viele (oder gar keine) Phasen vorhanden. Nach mehrmaligem Ausführen des Befehls batch-get-builds mit derselben Build-ID sollten mehr Build-Phasen in der Ausgabe angezeigt werden.

      • logssteht für Informationen in Amazon CloudWatch Logs zu den Protokollen des Builds.

      • md5sumund sha256sum stehen für MD5 und SHA-256 Hashes des Ausgabeartefakts des Builds. Diese werden nur dann in der Ausgabe angezeigt, wenn der packaging-Wert des Build-Projekts auf ZIP gesetzt ist. (Sie haben diesen Wert nicht in diesem Tutorial festgelegt.) Sie können die Hash-Werte zusammen mit dem Prüfsummen-Tool verwenden, um die Dateiintegrität und die Authentizität zu bestätigen.

        Anmerkung

        Sie können auch die Amazon S3-Konsole verwenden, um diese Hashes anzuzeigen. Aktivieren Sie das Kontrollkästchen neben dem Build-Ausgabeartefakt. Wählen Sie dann Actions (Aktionen) und schließlich Properties (Eigenschaften) aus. Erweitern Sie im Bereich Properties den Eintrag Metadata und zeigen Sie die Werte für x-amz-meta-codebuild-content-md5 und x-amz-meta-codebuild-content-sha256 an. (In der Amazon S3-Konsole sollte der ETag-Wert des Build-Ausgabeartefakts weder als MD5 noch als Hash interpretiert werden.) SHA-256

        Wenn Sie die AWS SDKs verwenden, um diese Hashes abzurufen, heißen die Werte und. codebuild-content-md5 codebuild-content-sha256

      • endTime zeigt die Uhrzeit für das Ende des Build-Prozesses im Unix-Zeitformat an.

    Anmerkung

    Amazon S3-Metadaten haben CodeBuild einen Namenx-amz-meta-codebuild-buildarn, der den buildArn des CodeBuild Builds enthält, der Artefakte in Amazon S3 veröffentlicht. Der buildArn wird hinzugefügt, um die Quellverfolgung für Benachrichtigungen zu ermöglichen und um zu referenzieren, aus welchem Build das Artefakt generiert wurde.

Schritt 8: Anzeigen der detaillierten Build-Informationen

(Vorheriger Schritt: Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen)

In diesem Schritt siehst du detaillierte Informationen zu deinem Build in CloudWatch Logs.

Anmerkung

Zum Schutz vertraulicher Informationen sind die folgenden Informationen in den CodeBuild Protokollen versteckt:

So zeigen Sie detaillierte Build-Informationen an
  1. Wechseln Sie in Ihrem Webbrowser zum deepLink-Speicherort, der in der Ausgabe des vorherigen Schrittes angezeigt wurde (beispielsweise https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE).

  2. Im CloudWatch Log-Stream „Logs“ können Sie die Log-Ereignisse durchsuchen. Standardmäßig werden nur die letzten Protokollereignisse angezeigt. Um ältere Protokollereignisse anzuzeigen, blättern Sie zum Anfang der Liste.

  3. In diesem Tutorial enthalten die meisten Protokollereignisse wahrscheinlich nicht benötigte detaillierte Informationen über das Herunterladen von Build-Abhängigkeitsdateien durch CodeBuild in die Build-Umgebung und deren Installation. Sie können die angezeigten Informationen über das Feld Filter events reduzieren. Wenn Sie beispielsweise "[INFO]" in das Feld Filter events (Ereignisse filtern) eingeben, werden nur Ereignisse angezeigt, die [INFO] enthalten. Weitere Informationen finden Sie unter Filter- und Mustersyntax im CloudWatch Amazon-Benutzerhandbuch.

Diese Abschnitte eines CloudWatch Logs-Log-Streams beziehen sich auf dieses Tutorial.

... [Container] 2016/04/15 17:49:42 Entering phase PRE_BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering pre_build phase... [Container] 2016/04/15 17:49:42 Entering pre_build phase... [Container] 2016/04/15 17:49:42 Phase complete: PRE_BUILD Success: true [Container] 2016/04/15 17:49:42 Entering phase BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering build phase... [Container] 2016/04/15 17:49:42 Entering build phase... [Container] 2016/04/15 17:49:42 Running command mvn install [Container] 2016/04/15 17:49:44 [INFO] Scanning for projects... [Container] 2016/04/15 17:49:44 [INFO] [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:44 [INFO] Building Message Utility Java Sample App 1.0 [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ ... [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 T E S T S [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 Running TestMessageUtil [Container] 2016/04/15 17:49:55 Inside testSalutationMessage() [Container] 2016/04/15 17:49:55 Hi!Robert [Container] 2016/04/15 17:49:55 Inside testPrintMessage() [Container] 2016/04/15 17:49:55 Robert [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Results : [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 ... [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] BUILD SUCCESS [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] Total time: 11.845 s [Container] 2016/04/15 17:49:56 [INFO] Finished at: 2016-04-15T17:49:56+00:00 [Container] 2016/04/15 17:49:56 [INFO] Final Memory: 18M/216M [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 Phase complete: BUILD Success: true [Container] 2016/04/15 17:49:56 Entering phase POST_BUILD [Container] 2016/04/15 17:49:56 Running command echo Entering post_build phase... [Container] 2016/04/15 17:49:56 Entering post_build phase... [Container] 2016/04/15 17:49:56 Phase complete: POST_BUILD Success: true [Container] 2016/04/15 17:49:57 Preparing to copy artifacts [Container] 2016/04/15 17:49:57 Assembling file list [Container] 2016/04/15 17:49:57 Expanding target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Found target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Creating zip artifact

In diesem Beispiel wurden die Phasen vor dem Build, Build und Post-Build CodeBuild erfolgreich abgeschlossen. Es hat die Komponententests ausgeführt und die Datei messageUtil-1.0.jar erfolgreich erstellt.

Schritt 9: Abrufen des Build-Ausgabeartefakts

(Vorheriger Schritt: Schritt 8: Anzeigen der detaillierten Build-Informationen)

In diesem Schritt erhalten Sie die messageUtil-1.0.jar Datei, die CodeBuild erstellt und in den Ausgabe-Bucket hochgeladen wurde.

Sie können die CodeBuild Konsole oder die Amazon S3-Konsole verwenden, um diesen Schritt abzuschließen.

Um das Build-Ausgabeartefakt abzurufen (AWS CodeBuild Konsole)
  1. Wenn die CodeBuild Konsole noch geöffnet ist und die Seite mit den Build-Details aus dem vorherigen Schritt immer noch angezeigt wird, wählen Sie den Tab Build-Details und scrollen Sie nach unten zum Abschnitt Artefakte.

    Anmerkung

    Wenn die Seite mit den Build-Details nicht angezeigt wird, wählen Sie in der Navigationsleiste die Option Build-Verlauf und dann den Link Build ausführen aus.

  2. Der Link zum Amazon S3-Ordner befindet sich unter dem Upload-Verzeichnis für Artifacts. Dieser Link öffnet den Ordner in Amazon S3, in dem Sie die messageUtil-1.0.jar Build-Ausgabe-Artefaktdatei finden.

Um das Build-Ausgabeartefakt abzurufen (Amazon S3-Konsole)
  1. Öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Öffnen Sie codebuild-region-ID-account-ID-output-bucket.

  3. Öffnen Sie das Verzeichnis codebuild-demo-project.

  4. Öffnen Sie den Ordner target, in dem Sie die Build-Ausgabeartefaktdatei messageUtil-1.0.jar finden.

Schritt 10: Löschen Sie die S3-Buckets

(Vorheriger Schritt: Schritt 9: Abrufen des Build-Ausgabeartefakts)

Um zu verhindern, dass Ihr AWS Konto fortlaufend belastet wird, können Sie die in diesem Tutorial verwendeten Eingabe- und Ausgabe-Buckets löschen. Eine Anleitung finden Sie unter Löschen oder Leeren eines Buckets im Amazon Simple Storage Service-Benutzerhandbuch.

Wenn Sie den IAM-Benutzer oder einen Administrator-IAM-Benutzer verwenden, um diese Buckets zu löschen, muss der Benutzer über mehr Zugriffsberechtigungen verfügen. Fügen Sie die folgende Anweisung zwischen den Markierungen (### BEGIN ADDING STATEMENT HERE ###und### END ADDING STATEMENTS HERE ###) zu einer vorhandenen Zugriffsrichtlinie für den Benutzer hinzu.

Die Ellipsen (...) in dieser Anweisung dienen der Übersichtlichkeit der Darstellung. Entfernen Sie keine Anweisungen aus der vorhandenen Zugriffsrichtlinie. Geben Sie keine Auslassungspunkte in die Richtlinie ein.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" } ] }

Nachbearbeitung

In diesem Tutorial haben Sie AWS CodeBuild früher eine Reihe von Java-Klassendateien in eine JAR-Datei eingebaut. Anschließend haben Sie die Build-Ergebnisse angezeigt.

Sie können jetzt versuchen, es CodeBuild in Ihren eigenen Szenarien zu verwenden. Folgen Sie den Anweisungen in Planen eines Builds. Wenn Sie dazu noch nicht bereit sind, können Sie einige der Beispiele als Build erstellen. Weitere Informationen finden Sie unter Anwendungsfallbasierte Beispiele für CodeBuild.