Eine neue Version eines Container-Rezepts erstellen - EC2Image 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.

    • ECRBild-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
  • AMIID — Vorausgefüllt, aber editierbar.

  • Speicher (Volumen)

    EBSBand 1 (AMIRoot) — Vorgefüllt. Sie können das Root-Volume, den Gerätenamen, den Snapshot oder die IOPSAuswahl 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 eine Base angegeben habenAMI, die von einem anderen Konto aus mit Ihnen geteilt 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.

    CISDas Härten von Komponenten entspricht nicht den Standardregeln für die Reihenfolge der Komponenten in 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

      Bei den Komponentenparametern handelt es sich um reine Textwerte, die angemeldet sind 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 ECR Amazon-Repository, in dem Ihr Ausgabe-Image gespeichert ist, sofern in der Verteilungskonfiguration Ihrer Pipeline kein anderes Repository für die Region angegeben ist, in der die Pipeline ausgeführt wird (Region 1).

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 dem AWS CLI Abschnitt dieses Handbuchs erstellt wurden.

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

  1. Erstellen Sie eine CLI JSON Eingabedatei

    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 Image Builder API Builder-Aktionsanforderungsparameter angegeben ist. Informationen zu den API Befehlsanforderungsparametern finden Sie unter dem CreateContainerRecipeBefehl in der EC2Image Builder API Builder-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. Die CIS Härtungskomponenten werden jedoch immer zuletzt ausgeführt, um sicherzustellen, dass die Benchmark-Tests anhand Ihres Ausgabebilds ausgeführt werden.

      • component ARN (string, erforderlich) — Die KomponenteARN.

        Tipp

        Wenn Sie das Beispiel verwenden möchten, um Ihr eigenes Container-Rezept zu erstellen, ersetzen Sie das Beispiel ARNs durch das ARNs für die Komponenten, die Sie für Ihr Rezept verwenden,. Dazu gehören jeweils der AWS-Region 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

        Bei den Komponentenparametern handelt es sich um reine Textwerte, die angemeldet sind 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, erforderlich) — Der Typ des zu erstellenden Containers. Zu den gültigen Werten gehörenDOCKER.

    • 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 das Basis-Image ARN 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(Objekt) — 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 Testinstanz verwendet werden soll. Wenn Sie diesen Wert nicht angeben, verwendet Image Builder das entsprechende Amazon, das AMI als Basis-Image ECS optimiert ist.

      • blockDeviceMappings(Array von Objekten) — Definiert die Blockgeräte, die angeschlossen werden sollen, um eine Instanz aus dem im image Parameter AMI angegebenen Image Builder zu erstellen.

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

        • ebs (object) — Wird verwendet, um die EBS Amazon-spezifische Konfiguration für dieses Mapping 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, erforderlich) — Das Ziel-Repository für das Container-Image, falls in der Verteilungskonfiguration Ihrer Pipeline für die Region, in der die Pipeline läuft (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 die file:// Notation am Anfang des JSON Dateipfads angeben.

    • Der Pfad für die JSON Datei sollte der entsprechenden Konvention für das Basisbetriebssystem entsprechen, 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 (/).