Eine neue Version eines Container-Rezepts erstellen - EC2 Image Builder

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.

Eine neue Version eines Container-Rezepts erstellen

In diesem Abschnitt erfahren Sie, wie Sie eine neue Version eines Container-Rezepts erstellen.

Erstellen Sie mit der Konsole eine neue Container-Rezeptversion

Das Erstellen einer neuen Version eines Container-Rezepts entspricht praktisch dem Erstellen eines neuen Rezepts. Der Unterschied besteht darin, dass in den meisten Fällen bestimmte Details so ausgewählt sind, dass sie dem Basisrezept entsprechen. In der folgenden Liste werden die Unterschiede zwischen dem Erstellen eines neuen Rezepts und dem Erstellen einer neuen Version eines vorhandenen Rezepts beschrieben.

Einzelheiten zum Rezept
  • Namenicht editierbar.

  • Version — Erforderlich. Dieses Detail ist nicht mit der aktuellen Version oder einer Sequenz vorausgefüllt. Geben Sie die Versionsnummer, die Sie erstellen möchten, im Format major.minor.patch ein. Wenn die Version bereits existiert, tritt ein Fehler auf.

Basisbild
  • Bildoption auswählen — Vorausgewählt, aber editierbar. Wenn Sie Ihre Wahl für die Quelle Ihres Basisimages ändern, gehen möglicherweise weitere Details verloren, die von der ursprünglich ausgewählten Option abhängen.

    Um Details zu sehen, die mit Ihrer Auswahl des Basisimages verknüpft sind, wählen Sie die Registerkarte, die Ihrer Auswahl entspricht.

    Managed images
    • Image-Betriebssystem (OS)Nicht editierbar.

    • Bildname — Vorausgewählt, basierend auf der Kombination von Basis-Image-Optionen, die Sie für das bestehende Rezept getroffen haben. Wenn Sie jedoch die Option Bild auswählen ändern, verlieren Sie den Namen des vorausgewählten Images.

    • Optionen für die automatische Versionierung — Entspricht nicht Ihrem Grundrezept. Die Optionen für die automatische Versionierung sind standardmäßig auf die Option Ausgewählte Betriebssystemversion verwenden eingestellt.

      Wichtig

      Wenn Sie semantische Versionierung verwenden, um Pipeline-Builds zu starten, stellen Sie sicher, dass Sie diesen Wert auf Letzte verfügbare Betriebssystemversion verwenden ändern. Weitere Informationen zur semantischen Versionierung für Image Builder Builder-Ressourcen finden Sie unter. Semantische Versionierung in Image Builder

    ECR image
    • Image-Betriebssystem (OS) — Vorausgewählt, aber editierbar.

    • Betriebssystemversion — Vorausgewählt, aber editierbar.

    • ECR-Bild-ID — Vorausgefüllt, aber editierbar.

    Docker Hub image
    • Image-Betriebssystem (OS) — Nicht editierbar.

    • Betriebssystemversion — Vorausgewählt, aber editierbar.

    • Docker-Image-ID — Vorausgefüllt, aber editierbar.

Instance-Konfiguration
  • AMI-ID — Vorausgefüllt, aber editierbar.

  • Speicher (Volumen)

    EBS-Volumen 1 (AMI-Root) — Vorgefüllt. Sie können den Gerätenamen, den Snapshot oder die IOPS-Auswahl des Root-Volumes nicht bearbeiten. Sie können jedoch alle übrigen Einstellungen ändern, z. B. die Größe. Sie können auch neue Volumes hinzufügen.

    Anmerkung

    Wenn Sie ein Basis-AMI angegeben haben, das von einem anderen Konto für Sie freigegeben wurde, müssen die Snapshots für alle angegebenen sekundären Volumes auch mit Ihrem Konto geteilt werden.

Arbeitsverzeichnis
  • Pfad zum Arbeitsverzeichnis — Vorausgefüllt, aber editierbar.

Komponenten
  • Komponenten — Komponenten, die bereits in der Rezeptur enthalten sind, werden im Abschnitt Ausgewählte Komponenten am Ende jeder Komponentenliste (Build und Test) angezeigt. Sie können die ausgewählten Komponenten je nach Bedarf entfernen oder neu anordnen.

    CIS-Härtungskomponenten folgen nicht den Standardregeln für die Reihenfolge der Komponenten in den Image Builder Builder-Rezepten. Die CIS-Härtungskomponenten werden immer zuletzt ausgeführt, um sicherzustellen, dass die Benchmark-Tests anhand Ihres Ausgabebilds ausgeführt werden.

    Anmerkung

    In den Listen der Build- und Testkomponenten werden die verfügbaren Komponenten basierend auf dem Typ des Komponentenbesitzers angezeigt. Um Komponenten für Ihr Rezept hinzuzufügen oder zu aktualisieren, wählen Sie den Besitzertyp für die Komponente aus, nach der Sie suchen. Wenn Sie beispielsweise eine Komponente hinzufügen möchten, die mit einem Basis-Image verknüpft ist, das Sie abonniert haben AWS Marketplace, wählen Sie in der Liste mit dem Besitzertyp neben der Suchleiste einen Eintrag Third party managed aus.

    Sie können die folgenden Einstellungen für die ausgewählte Komponente konfigurieren:

    • Versionierungsoptionen — Vorausgewählt, aber Sie können sie ändern. Wir empfehlen Ihnen, die Option Letzte verfügbare Komponentenversion verwenden zu wählen, um sicherzustellen, dass Ihre Image-Builds immer die neueste Version der Komponente verwenden. Wenn Sie in Ihrem Rezept eine bestimmte Komponentenversion verwenden müssen, können Sie Komponentenversion angeben wählen und die Version in das angezeigte Feld Komponentenversion eingeben.

    • Eingabeparameter — Zeigt Eingabeparameter an, die die Komponente akzeptiert. Der Wert ist bereits mit dem Wert aus der vorherigen Version des Rezepts gefüllt. Wenn Sie diese Komponente zum ersten Mal in diesem Rezept verwenden und ein Standardwert für den Eingabeparameter definiert wurde, wird der Standardwert im Feld Wert mit ausgegrautem Text angezeigt. Wenn kein anderer Wert eingegeben wird, verwendet Image Builder den Standardwert.

      Wenn ein Eingabeparameter erforderlich ist, aber in der Komponente kein Standardwert definiert ist, müssen Sie einen Wert angeben. Image Builder erstellt die Rezeptversion nicht, wenn erforderliche Parameter fehlen und für die kein Standardwert definiert ist.

      Wichtig

      Komponentenparameter sind reine Textwerte und sind angemeldet AWS CloudTrail. Wir empfehlen, dass Sie AWS Secrets Manager oder den AWS Systems Manager Parameter Store verwenden, um Ihre Geheimnisse zu speichern. Weitere Informationen zu Secrets Manager finden Sie unter Was ist Secrets Manager? im AWS Secrets Manager Benutzerhandbuch. Weitere Informationen zum AWS Systems Manager Parameterspeicher finden Sie unter AWS Systems Manager Parameterspeicher im AWS Systems Manager Benutzerhandbuch.

    Um die Einstellungen für Versionierungsoptionen oder Eingabeparameter zu erweitern, können Sie den Pfeil neben dem Namen der Einstellung wählen. Um alle Einstellungen für alle ausgewählten Komponenten zu erweitern, können Sie den Schalter Alle erweitern aus- und einschalten.

Dockerfile-Vorlage
  • Dockerfile-Vorlage — Vorgefüllt, aber editierbar. Sie können jede der folgenden Kontextvariablen angeben, die Image Builder zur Laufzeit durch Buildinformationen ersetzt.

     

    ParentImage (erforderlich)

    Bei der Erstellung wird diese Variable in das Basis-Image für Ihr Rezept aufgelöst.

    Beispiel:

    FROM {{{ imagebuilder:parentImage }}}
    Umgebungen (erforderlich, wenn Komponenten angegeben sind)

    Diese Variable wird in ein Skript aufgelöst, das Komponenten ausführt.

    Beispiel:

    {{{ imagebuilder:environments }}}
    Komponenten (optional)

    Image Builder löst Build- und Testkomponentenskripts für die Komponenten auf, die das Container-Rezept enthält. Diese Variable kann an einer beliebigen Stelle im Dockerfile hinter der Umgebungsvariablen platziert werden.

    Beispiel:

    {{{ imagebuilder:components }}}
Ziel-Repository
  • Name des Ziel-Repositorys — Das Amazon ECR-Repository, in dem Ihr Ausgabebild gespeichert ist, sofern in der Verteilungskonfiguration Ihrer Pipeline für die Region, in der die Pipeline ausgeführt wird (Region 1), kein anderes Repository angegeben ist.

So erstellen Sie eine neue Container-Rezeptversion:
  1. Wählen Sie oben auf der Seite mit den Container-Rezeptdetails die Option Neue Version erstellen aus. Sie werden zur Seite „Rezept erstellen“ für Container-Rezepte weitergeleitet.

  2. Um die neue Version zu erstellen, nehmen Sie Ihre Änderungen vor und wählen Sie dann Rezept erstellen.

Weitere Informationen zum Erstellen eines Container-Rezepts beim Erstellen einer Image-Pipeline finden Sie Schritt 2: Wählen Sie ein Rezept im Abschnitt Erste Schritte dieses Handbuchs.

Erstellen Sie ein Container-Rezept mit dem AWS CLI

Gehen Sie wie folgt vor, um ein Image Builder Builder-Container-Rezept mit dem imagebuilder create-container-recipe Befehl in der AWS CLI zu erstellen:

Voraussetzungen

Bevor Sie die Image Builder Builder-Befehle in diesem Abschnitt ausführen, um ein Container-Rezept mit dem zu erstellen AWS CLI, müssen Sie die Komponenten erstellen, die das Rezept verwenden soll. Das Beispiel für ein Container-Rezept im folgenden Schritt bezieht sich auf Beispielkomponenten, die im Erstellen Sie eine benutzerdefinierte Komponente aus AWS CLI Abschnitt dieses Handbuchs erstellt wurden.

Nachdem Sie Ihre Komponenten erstellt haben oder wenn Sie vorhandene Komponenten verwenden, notieren Sie sich die ARNs, die Sie in das Rezept aufnehmen möchten.

  1. Erstellen einer CLI-Eingabe-JSON-Datei

    Sie können die gesamte Eingabe für den create-container-recipe Befehl mit Inline-Befehlsparametern bereitstellen. Der resultierende Befehl kann jedoch ziemlich lang sein. Um den Befehl zu vereinfachen, können Sie stattdessen eine JSON-Datei bereitstellen, die alle Rezepteinstellungen des Containers enthält

    Anmerkung

    Die Benennungskonvention für die Datenwerte in der JSON-Datei folgt dem Muster, das für die Aktionsanforderungsparameter der Image Builder Builder-API angegeben ist. Informationen zu den API-Befehlsanforderungsparametern finden Sie unter dem CreateContainerRecipeBefehl in der EC2 Image Builder API-Referenz.

    Informationen zur Bereitstellung der Datenwerte als Befehlszeilenparameter finden Sie in den Parameternamen, die in der AWS CLI Befehlsreferenz angegeben sind.

    Im Folgenden finden Sie eine Zusammenfassung der Parameter in diesem Beispiel:

    • components (Array von Objekten, erforderlich) — Enthält ein Array von ComponentConfiguration Objekten. Es muss mindestens eine Build-Komponente angegeben werden:

      Anmerkung

      Image Builder installiert Komponenten in der Reihenfolge, in der Sie sie im Rezept angegeben haben. CIS-Härtungskomponenten werden jedoch immer zuletzt ausgeführt, um sicherzustellen, dass die Benchmark-Tests anhand Ihres Ausgabe-Images ausgeführt werden.

      • componentArn (string, required) — Der Komponenten-ARN.

        Tipp

        Um das Beispiel zu verwenden, um Ihr eigenes Container-Rezept zu erstellen, ersetzen Sie die Beispiel-ARNs durch die ARNs für die Komponenten, die Sie für Ihr Rezept verwenden,. Dazu gehören jeweils der Name AWS-Region, der Name und die Versionsnummer.

      • Parameter (Anordnung von Objekten) — Enthält eine Reihe von ComponentParameter Objekten. Wenn ein Eingabeparameter erforderlich ist, aber in der Komponente kein Standardwert definiert ist, müssen Sie einen Wert angeben. Image Builder erstellt die Rezeptversion nicht, wenn erforderliche Parameter fehlen und für die kein Standardwert definiert ist.

        Wichtig

        Komponentenparameter sind reine Textwerte und sind angemeldet AWS CloudTrail. Wir empfehlen, dass Sie AWS Secrets Manager oder den AWS Systems Manager Parameter Store verwenden, um Ihre Geheimnisse zu speichern. Weitere Informationen zu Secrets Manager finden Sie unter Was ist Secrets Manager? im AWS Secrets Manager Benutzerhandbuch. Weitere Informationen zum AWS Systems Manager Parameterspeicher finden Sie unter AWS Systems Manager Parameterspeicher im AWS Systems Manager Benutzerhandbuch.

        • name (string, erforderlich) — Der Name des festzulegenden Komponentenparameters.

        • value (Zeichenkettenarray, erforderlich) — Enthält ein Array von Zeichenketten, um den Wert für den benannten Komponentenparameter festzulegen. Wenn für die Komponente ein Standardwert definiert ist und kein anderer Wert angegeben wird, wird der Standardwert AWSTOE verwendet.

    • containerType (string, required) — Der Typ des zu erstellenden Containers. Zu den gültigen Werten gehören. DOCKER

    • dockerfileTemplateData(string) — Die Dockerfile-Vorlage, die zum Erstellen Ihres Images verwendet wird, ausgedrückt als Inline-Datenblob.

    • name (string, erforderlich) — Der Name des Container-Rezepts.

    • description (string) — Die Beschreibung des Container-Rezepts.

    • parentImage (string, erforderlich) — Bild, das das Container-Rezept als Grundlage für Ihr benutzerdefiniertes Bild verwendet. Der Wert kann der ARN des Basis-Images oder eine AMI-ID sein.

    • PlatformOverride (Zeichenfolge) — Gibt die Betriebssystemplattform an, wenn Sie ein benutzerdefiniertes Basisimage verwenden.

    • semanticVersion <major>(string, erforderlich) — Die semantische Version des Container-Rezepts, angegeben im folgenden Format, mit numerischen Werten an jeder Position, um eine bestimmte Version anzugeben:. <minor>. <patch>. Ein Beispiel wäre 1.0.0. Weitere Informationen zur semantischen Versionierung für Image Builder Builder-Ressourcen finden Sie unter. Semantische Versionierung in Image Builder

    • tags (String-Map) — Tags, die an das Container-Rezept angehängt sind.

    • instanceConfiguration (object) — Eine Gruppe von Optionen, die verwendet werden können, um eine Instanz zum Erstellen und Testen von Container-Images zu konfigurieren.

      • image (string) — Die AMI-ID, die als Basisimage für eine Container-Build- und Test-Instance verwendet werden soll. Wenn Sie diesen Wert nicht angeben, verwendet Image Builder das entsprechende Amazon ECS-optimierte AMI als Basis-Image.

      • blockDeviceMappings(Array von Objekten) — Definiert die Blockgeräte, die zum Erstellen einer Instanz aus dem im image Parameter angegebenen Image Builder Builder-AMI angeschlossen werden sollen.

        • deviceName (string) — Das Gerät, für das diese Zuordnungen gelten.

        • ebs (object) — Wird verwendet, um die Amazon EBS-spezifische Konfiguration für diese Zuordnung zu verwalten.

          • deleteOnTermination(Boolean) — Wird verwendet, um das Löschen bei Beendigung des zugehörigen Geräts zu konfigurieren.

          • encrypted (Boolean) — Wird zur Konfiguration der Geräteverschlüsselung verwendet.

          • volumeSize (Ganzzahl) — Wird verwendet, um die Volumengröße des Geräts zu überschreiben.

          • volumeType (string) — Wird verwendet, um den Lautstärketyp des Geräts zu überschreiben.

    • targetRepository (object, required) — Das Ziel-Repository für das Container-Image, falls in der Verteilungskonfiguration Ihrer Pipeline für die Region, in der die Pipeline ausgeführt wird (Region 1), kein anderes Repository angegeben ist.

      • repositoryName (string, erforderlich) — Der Name des Container-Repositorys, in dem das Ausgabe-Container-Image gespeichert ist. Diesem Namen wird der Speicherort des Repositorys vorangestellt.

      • service (string, erforderlich) — Gibt den Dienst an, in dem dieses Image registriert wurde.

    • workingDirectory (string) — Das Arbeitsverzeichnis für die Verwendung bei Build- und Test-Workflows.

    { "components": [ { "componentArn": "arn:aws:imagebuilder:us-east-1:123456789012:component/helloworldal2/x.x.x" } ], "containerType": "DOCKER", "description": "My Linux Docker container image", "dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}", "name": "amazonlinux-container-recipe", "parentImage": "amazonlinux:latest", "platformOverride": "Linux", "semanticVersion": "1.0.2", "tags": { "sometag" : "Tag detail" }, "instanceConfiguration": { "image": "ami-1234567890", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" }
  2. Erstellen Sie das Rezept

    Verwenden Sie den folgenden Befehl, um das Rezept zu erstellen. Geben Sie den Namen der JSON-Datei, die Sie im vorherigen Schritt erstellt haben, in den --cli-input-json Parameter ein:

    aws imagebuilder create-container-recipe --cli-input-json file://create-container-recipe.json
    Anmerkung
    • Sie müssen diefile://-Notation am Anfang des JSON-Dateipfades.

    • Der Pfad für die JSON-Datei sollte der entsprechenden Konvention für das Basisbetriebssystem folgen, auf dem Sie den Befehl ausführen. Windows verwendet beispielsweise den umgekehrten Schrägstrich (\), um auf den Verzeichnispfad zu verweisen, und Linux verwendet den Schrägstrich (/).