Amazon Elastic File System-Beispiel für AWS 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.

Amazon Elastic File System-Beispiel für AWS CodeBuild

Möglicherweise möchten Sie Ihre AWS CodeBuild Builds auf Amazon Elastic File System erstellen, einem skalierbaren, gemeinsam genutzten Dateidienst für Amazon EC2 EC2-Instances. Die Speicherkapazität von Amazon EFS ist elastisch, sodass sie mit dem Hinzufügen und Entfernen von Dateien wächst oder schrumpft. Über eine einfache Web-Service-Schnittstelle können Sie Dateisysteme erstellen und konfigurieren. Die gesamte Dateispeicher-Infrastruktur wird für Sie verwaltet. Sie müssen sich damit nicht um Bereitstellung, Patching oder Wartung von Dateisystem-Konfigurationen kümmern. Weitere Informationen finden Sie unter Was ist Amazon Elastic File System? im Amazon Elastic File System-Benutzerhandbuch.

Dieses Beispiel zeigt Ihnen, wie Sie ein CodeBuild Projekt so konfigurieren, dass es eine Java-Anwendung in einem Amazon EFS-Dateisystem mountet und dann erstellt. Bevor Sie beginnen, müssen Sie eine Java-Anwendung zur Erstellung bereit haben, die in einen S3-Eingabe-Bucket oder ein AWS CodeCommit, GitHub, GitHub Enterprise Server- oder Bitbucket-Repository hochgeladen wird.

Daten, die für Ihr Dateisystem übertragen werden, werden verschlüsselt. Informationen zum Verschlüsseln von Daten während der Übertragung mit einem anderen Bild finden Sie unter Daten im Transit verschlüsseln.

Allgemeine Schritte

Dieses Beispiel behandelt die drei grundlegenden Schritte, die für die Verwendung von Amazon EFS erforderlich sind mit AWS CodeBuild:

  1. Erstellen Sie eine virtuelle private Cloud (VPC) in Ihrem AWS Konto.

  2. Erstellen Sie ein Dateisystem, das diese VPC verwendet.

  3. Erstellen und erstellen Sie ein CodeBuild Projekt, das die VPC verwendet. Das CodeBuild Projekt verwendet Folgendes, um das Dateisystem zu identifizieren:

    • Eine eindeutige Dateisystemkennung. Sie wählen die Kennung, wenn Sie das Dateisystem in Ihrem Build-Projekt angeben.

    • Die Dateisystem-ID. Die ID wird angezeigt, wenn Sie Ihr Dateisystem in der Amazon EFS-Konsole aufrufen.

    • Ein Mountingpunkt. Dies ist ein Verzeichnis in Ihrem Docker-Container, das das Dateisystem mountet.

    • Mountingoptionen. Dazu gehören Details zum Mounten des Dateisystems.

Anmerkung

Ein in Amazon EFS erstelltes Dateisystem wird nur auf Linux-Plattformen unterstützt.

Erstellen Sie eine VPC mit AWS CloudFormation

Erstellen Sie Ihre VPC mit einer AWS CloudFormation Vorlage.

  1. Folgen Sie den Anweisungen unter AWS CloudFormation VPC-Vorlage AWS CloudFormation So erstellen Sie eine VPC.

    Anmerkung

    Die mit dieser AWS CloudFormation Vorlage erstellte VPC hat zwei private Subnetze und zwei öffentliche Subnetze. Sie dürfen private Subnetze nur verwenden, wenn Sie das Dateisystem mounten AWS CodeBuild , das Sie in Amazon EFS erstellt haben. Bei Verwendung eines der öffentlichen Subnetze schlägt der Build fehl.

  2. Melden Sie sich bei der Amazon VPC-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/vpc/.

  3. Wählen Sie die VPC aus, mit AWS CloudFormation der Sie erstellt haben.

  4. Notieren Sie sich den Namen der VPC und ihre ID, die auf der Registerkarte Description (Beschreibung) angezeigt werden. Beide sind erforderlich, wenn Sie Ihr AWS CodeBuild Projekt später in diesem Beispiel erstellen.

Erstellen Sie mit Ihrer VPC ein Amazon Elastic File System-Dateisystem

Erstellen Sie ein einfaches Amazon EFS-Dateisystem für dieses Beispiel mit der VPC, die Sie zuvor erstellt haben.

  1. Melden Sie sich bei der Amazon EFS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/efs/.

  2. Wählen Sie Create file system (Dateisystem erstellen) aus.

  3. Wählen Sie unter VPC den zuvor in diesem Beispiel notierten VPC-Namen aus.

  4. Lassen Sie die Availability Zones für Ihre Subnetze ausgewählt.

  5. Wählen Sie Next Step (Weiter) aus.

  6. Geben Sie unter Tags hinzufügen für den Standardschlüssel Name im Feld Wert den Namen Ihres Amazon EFS-Dateisystems ein.

  7. Lassen Sie Bursting und General Purpose (Universal) als Standardleistungs- und -durchsatzmodus ausgewählt. Wählen Sie dann Next Step (Nächster Schritt) aus.

  8. Wählen Sie unter Configure client access (Client-Zugriff konfigurieren) die Option Next Step (Nächster Schritt).

  9. Klicken Sie auf Create File System (Dateisystem erstellen).

  10. (Optional) Wir empfehlen, Ihrem Amazon EFS-Dateisystem eine Richtlinie hinzuzufügen, die die Verschlüsselung von Daten bei der Übertragung erzwingt. Wählen Sie in der Amazon EFS-Konsole Dateisystemrichtlinie, klicken Sie auf Bearbeiten, aktivieren Sie das Kästchen Verschlüsselung während der Übertragung für alle Clients erzwingen und wählen Sie dann Speichern aus.

Erstellen Sie ein CodeBuild Projekt zur Verwendung mit Amazon EFS

Erstellen Sie ein AWS CodeBuild Projekt, das die VPC verwendet, die Sie zuvor in diesem Beispiel erstellt haben. Wenn der Build ausgeführt wird, hängt er das zuvor erstellte Amazon EFS-Dateisystem ein. Als Nächstes speichert es die von Ihrer Java-Anwendung erstellte .jar-Datei im Mountingpunkt-Verzeichnis Ihres Dateisystems.

  1. Öffnen Sie die AWS CodeBuild Konsole unter https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Wählen Sie im Navigationsbereich Build projects (Build-Projekte) gefolgt von Create build project (Build-Projekt erstellen) aus.

  3. Geben Sie im Feld Projektname einen Namen für Ihr Projekt an.

  4. Wählen Sie unter Source provider (Quellanbieter) das Repository aus, in dem sich die zu erstellende Java-Anwendung befindet.

  5. Geben Sie Informationen ein, z. B. eine Repository-URL, CodeBuild anhand derer Ihre Anwendung gefunden wird. Die Optionen unterscheiden sich je nach Quellanbieter. Weitere Informationen finden Sie unter Choose source provider.

  6. Wählen Sie unter Environment image (Umgebungs-Image) die Option Managed image (Verwaltetes Image) aus.

  7. Wählen Sie unter Operating system (Betriebssystem) die Option Amazon Linux 2 aus.

  8. Wählen Sie unter Runtime(s) (Laufzeit(en)) die Option Standard aus.

  9. Wählen Sie unter Image die Option aws/codebuild/amazonlinux2-x86_64-standard:4.0 aus.

  10. Wählen Sie für Environment type (Umgebungstyp) die Option Linux aus.

  11. Wählen Sie unter Service role (Servicerolle) die Option New service role (Neue Servicerolle) aus. Geben Sie im Feld Rollenname einen Namen für die Rolle ein, die für Sie erstellt wurde. CodeBuild

  12. Erweitern Sie Additional configuration (Zusätzliche Konfiguration).

  13. Wählen Sie Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Dieses Flag aktivieren, wenn Docker-Abbilder erstellt oder die Builds erweiterte Berechtigungen erhalten sollen) aus.

    Anmerkung

    Standardmäßig ist der Docker-Daemon für Nicht-VPC-Builds aktiviert. Wenn Sie Docker-Container für VPC-Builds verwenden möchten, lesen Sie auf der Docker Docs-Website unter Runtime Privilege and Linux Capabilities nach und aktivieren Sie den privilegierten Modus. Außerdem unterstützt Windows den privilegierten Modus nicht.

  14. Wählen Sie unter VPC die VPC-ID aus.

  15. Wählen Sie unter Subnets (Subnetze) mindestens eines der privaten Subnetze aus, die Ihrer VPC zugeordnet sind. Sie müssen private Subnetze in einem Build verwenden, der ein Amazon EFS-Dateisystem mountet. Bei Verwendung eines öffentlichen Subnetzes schlägt der Build fehl.

  16. Wählen Sie unter Security groups (Sicherheitsgruppen) die Standardsicherheitsgruppe aus.

  17. Geben Sie unter File systems (Dateisysteme) die folgenden Informationen ein:

    • Geben Sie unter Identifier (Bezeichner), einen eindeutigen Dateisystembezeichner ein. Es darf weniger als 129 Zeichen lang sein und darf nur alphanumerische Zeichen und Unterstriche enthalten. CodeBuild verwendet diesen Bezeichner, um eine Umgebungsvariable zu erstellen, die das elastische Dateisystem identifiziert. Das Format der Umgebungsvariablen ist CODEBUILD_<file_system_identifier> in Großbuchstaben. Wenn Sie beispielsweise my_efs eingeben, lautet die Umgebungsvariable CODEBUILD_MY_EFS.

    • Wählen Sie für ID die Dateisystem-ID aus.

    • (Optional) Geben Sie ein Verzeichnis im Dateisystem ein. CodeBuild hängt dieses Verzeichnis ein. Wenn Sie den Verzeichnispfad leer lassen, wird CodeBuild das gesamte Dateisystem eingehängt. Der Dateipfad ist relativ zum Stamm des Dateisystems.

    • Geben Sie als Einhängepunkt den absoluten Pfad des Verzeichnisses in Ihrem Build-Container ein, in dem das Dateisystem eingehängt ist. Wenn dieses Verzeichnis nicht existiert, CodeBuild wird es während des Builds erstellt.

    • (Optional) Geben Sie Mountingoptionen ein. Wenn Sie das Feld Einhängeoptionen leer lassen, CodeBuild werden die Standard-Einhängeoptionen verwendet:

      nfsvers=4.1 rsize=1048576 wsize=1048576 hard timeo=600 retrans=2

      Weitere Informationen finden Sie unter Empfohlene NFS-Mount-Optionen im Amazon Elastic File System-Benutzerhandbuch.

  18. Wählen Sie unter Build specification (Build-Spezifikation) die Option Insert build commands (Build-Befehle einfügen) und anschließend Switch to editor (Zum Editor wechseln) aus.

  19. Geben Sie die folgenden Build-Spezifikationsbefehle in den Editor ein. Ersetzen Sie <file_system_identifier> durch den Bezeichner, den Sie in Schritt 17 eingegeben haben. Verwenden Sie Großbuchstaben (z. B. CODEBUILD_MY_EFS).

    version: 0.2 phases: install: runtime-versions: java: corretto11 build: commands: - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
  20. Verwenden Sie für alle anderen Einstellungen die Standardwerte und wählen Sie Create build project (Build-Projekt erstellen) aus. Wenn Ihr Build abgeschlossen ist, wird die Konsolenseite für Ihr Projekt angezeigt.

  21. Wählen Sie Start build (Build starten).

CodeBuild und Zusammenfassung der Amazon EFS-Beispiele

Nachdem Ihr AWS CodeBuild Projekt erstellt wurde:

  • Sie haben eine von Ihrer Java-Anwendung erstellte JAR-Datei, die für Ihr Amazon EFS-Dateisystem in Ihrem Mount-Point-Verzeichnis erstellt wurde.

  • Eine Umgebungsvariable, die Ihr Dateisystem identifiziert, wird mithilfe der beim Erstellen des Projekts eingegebenen Dateisystembezeichner erstellt.

Weitere Informationen finden Sie unter Mounten von Dateisystemen im Amazon Elastic File System-Benutzerhandbuch.

Fehlerbehebung

Die folgenden Fehler können bei der Einrichtung von Amazon EFS auftreten CodeBuild.

CLIENT_ERROR: Das Mounten von '127.0.0.1: /' ist fehlgeschlagen. Zugriff verweigert

Die IAM-Autorisierung wird für das Mounten von Amazon EFS mit CodeBuild nicht unterstützt. Wenn Sie eine benutzerdefinierte Amazon EFS-Dateisystemrichtlinie verwenden, müssen Sie allen IAM-Prinzipalen Lese- und Schreibzugriff gewähren. Beispielsweise:

"Principal": { "AWS": "*" }

CLIENT_ERROR: Das Mounten von '127.0.0.1: /' ist fehlgeschlagen. Verbindung wurde durch Peer zurückgesetzt

Es gibt zwei mögliche Ursachen für diesen Fehler:

  • Das CodeBuild VPC-Subnetz befindet sich in einer anderen Availability Zone als das Amazon EFS-Mount-Ziel. Sie können dieses Problem lösen, indem Sie ein VPC-Subnetz in derselben Availability Zone wie das Amazon EFS-Mount-Ziel hinzufügen.

  • Die Sicherheitsgruppe ist nicht berechtigt, mit Amazon EFS zu kommunizieren. Sie können dieses Problem lösen, indem Sie eine Regel für eingehenden Datenverkehr hinzufügen, die den gesamten Datenverkehr entweder von der VPC (fügen Sie den primären CIDR-Block für Ihre VPC hinzu) oder von der Sicherheitsgruppe selbst zulässt.

VPC_CLIENT_ERROR: Unerwarteter EC2-Fehler: UnauthorizedOperation

Dieser Fehler tritt auf, wenn alle Subnetze in Ihrer VPC-Konfiguration für das CodeBuild Projekt öffentliche Subnetze sind. Sie müssen mindestens ein privates Subnetz in der VPC haben, um die Netzwerkkonnektivität sicherzustellen.