Création d'une nouvelle version d'une recette de conteneur - EC2 Image Builder

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d'une nouvelle version d'une recette de conteneur

Cette section explique comment créer une nouvelle version d'une recette de conteneur.

Créez une nouvelle version de recette de conteneur avec la console

La création d'une nouvelle version d'une recette contenant est pratiquement identique à la création d'une nouvelle recette. La différence est que certains détails sont présélectionnés pour correspondre à la recette de base, dans la plupart des cas. La liste suivante décrit les différences entre la création d'une nouvelle recette et la création d'une nouvelle version d'une recette existante.

Détails de la recette
  • Nom : non modifiable.

  • Version — Obligatoire. Ce détail n'est pas prérempli avec la version actuelle ni avec aucun type de séquence. Entrez le numéro de version que vous souhaitez créer au format major.minor.patch. Si la version existe déjà, vous rencontrez une erreur.

Image de base
  • Sélectionnez l'option d'image : présélectionnée, mais modifiable. Si vous modifiez votre choix de source pour votre image de base, vous risquez de perdre d'autres détails qui dépendent de l'option d'origine que vous avez choisie.

    Pour voir les détails associés à votre sélection d'images de base, choisissez l'onglet correspondant à votre sélection.

    Managed images
    • Système d'exploitation d'image (OS) : non modifiable.

    • Nom de l'image : présélectionné, en fonction de la combinaison des choix d'images de base que vous avez effectués pour la recette existante. Toutefois, si vous modifiez l'option Sélectionner une image, vous perdez le nom de l'image présélectionné.

    • Options de gestion automatique des versions : ne correspondent pas à votre recette de base. Les options de gestion automatique des versions sont définies par défaut sur l'option Utiliser la version du système d'exploitation sélectionnée.

      Important

      Si vous utilisez le versionnement sémantique pour lancer les builds de pipeline, assurez-vous de modifier cette valeur en Utiliser la dernière version disponible du système d'exploitation. Pour en savoir plus sur le versionnement sémantique des ressources Image Builder, consultez. Versionnage sémantique dans Image Builder

    ECR image
    • Système d'exploitation d'image (OS) : présélectionné, mais modifiable.

    • Version du système d'exploitation : présélectionnée, mais modifiable.

    • ID d'image ECR : prérempli, mais modifiable.

    Docker Hub image
    • Système d'exploitation d'image (OS) : non modifiable.

    • Version du système d'exploitation : présélectionnée, mais modifiable.

    • ID d'image Docker : prérempli, mais modifiable.

Configuration des instances
  • ID AMI : prérempli, mais modifiable.

  • Stockage (volumes)

    EBS volume 1 (racine AMI) — Prérempli. Vous ne pouvez pas modifier le nom du périphérique du volume racine, le snapshot ou les sélections d'IOPS. Cependant, vous pouvez modifier tous les autres paramètres, tels que la taille. Vous pouvez également ajouter de nouveaux volumes.

    Note

    Si vous avez spécifié une AMI de base qui a été partagée avec vous depuis un autre compte, les instantanés de tous les volumes secondaires spécifiés doivent également être partagés avec votre compte.

Répertoire de travail
  • Chemin du répertoire de travail : pré-rempli, mais modifiable.

Composants
  • Composants : les composants déjà inclus dans la recette sont affichés dans la section Composants sélectionnés à la fin de chacune des listes de composants (construction et test). Vous pouvez supprimer ou réorganiser les composants sélectionnés en fonction de vos besoins.

    Les composants de durcissement CIS ne respectent pas les règles de classement des composants standard des recettes Image Builder. Les composants de renforcement CIS sont toujours exécutés en dernier pour garantir que les tests de référence s'exécutent par rapport à votre image de sortie.

    Note

    Les listes de composants de génération et de test affichent les composants disponibles en fonction du type de propriétaire du composant. Pour ajouter ou mettre à jour des composants pour votre recette, sélectionnez le type de propriétaire du composant que vous recherchez. Par exemple, si vous souhaitez ajouter un composant associé à une image de base à laquelle vous vous êtes abonné AWS Marketplace, sélectionnez-le dans la liste des types Third party managed de propriétaire située à côté de la barre de recherche.

    Vous pouvez configurer les paramètres suivants pour le composant sélectionné :

    • Options de gestion des versions : présélectionnées, mais vous pouvez les modifier. Nous vous recommandons de choisir l'option Utiliser la dernière version de composant disponible pour vous assurer que vos compilations d'images reprennent toujours la dernière version du composant. Si vous devez utiliser une version de composant spécifique dans votre recette, vous pouvez choisir Spécifier la version du composant et saisir la version dans la zone Version du composant qui apparaît.

    • Paramètres d'entrée : affiche les paramètres d'entrée acceptés par le composant. La valeur est préremplie avec la valeur de la version précédente de la recette. Si vous utilisez ce composant pour la première fois dans cette recette et qu'une valeur par défaut a été définie pour le paramètre d'entrée, la valeur par défaut apparaît dans la zone Valeur avec du texte grisé. Si aucune autre valeur n'est saisie, Image Builder utilise la valeur par défaut.

      Si un paramètre d'entrée est obligatoire, mais qu'aucune valeur par défaut n'est définie dans le composant, vous devez fournir une valeur. Image Builder ne créera pas la version de la recette s'il manque des paramètres requis et si aucune valeur par défaut n'est définie.

      Important

      Les paramètres des composants sont des valeurs en texte brut et sont connectés AWS CloudTrail. Nous vous recommandons d'utiliser AWS Secrets Manager le AWS Systems Manager Parameter Store pour stocker vos secrets. Pour plus d'informations sur Secrets Manager, voir Qu'est-ce que Secrets Manager ? dans le guide de AWS Secrets Manager l'utilisateur. Pour plus d'informations sur AWS Systems Manager Parameter Store, voir AWS Systems Manager Parameter Store dans le guide de AWS Systems Manager l'utilisateur.

    Pour développer les paramètres des options de version ou des paramètres d'entrée, vous pouvez cliquer sur la flèche à côté du nom du paramètre. Pour étendre tous les paramètres de tous les composants sélectionnés, vous pouvez activer ou désactiver le bouton Tout étendre.

Modèle Dockerfile
  • Modèle Dockerfile : pré-rempli, mais modifiable. Vous pouvez spécifier n'importe laquelle des variables contextuelles suivantes, qu'Image Builder remplace par des informations de build lors de l'exécution.

     

    ParentImage (obligatoire)

    Au moment de la création, cette variable devient l'image de base de votre recette.

    Exemple :

    FROM {{{ imagebuilder:parentImage }}}
    environnements (obligatoire si des composants sont spécifiés)

    Cette variable sera convertie en un script qui exécute des composants.

    Exemple :

    {{{ imagebuilder:environments }}}
    composants (facultatif)

    Image Builder résout les scripts de création et de test des composants pour les composants inclus dans la recette du conteneur. Cette variable peut être placée n'importe où dans le Dockerfile, après la variable d'environnement.

    Exemple :

    {{{ imagebuilder:components }}}
Référentiel cible
  • Nom du référentiel cible : le référentiel Amazon ECR dans lequel votre image de sortie est stockée si aucun autre référentiel n'est spécifié dans la configuration de distribution de votre pipeline pour la région où le pipeline s'exécute (région 1).

Pour créer une nouvelle version de recette de conteneur :
  1. En haut de la page des détails de la recette du conteneur, choisissez Créer une nouvelle version. Vous êtes redirigé vers la page Créer une recette pour les recettes par conteneur.

  2. Pour créer la nouvelle version, apportez vos modifications, puis choisissez Créer une recette.

Pour plus d'informations sur la création d'une recette de conteneur lorsque vous créez un pipeline d'images, consultez la section Mise Étape 2 : Choisissez la recette en route de ce guide.

Créez une recette en pot avec le AWS CLI

Pour créer une recette de conteneur Image Builder à l'aide de la imagebuilder create-container-recipe commande AWS CLI, procédez comme suit :

Prérequis

Avant d'exécuter les commandes Image Builder de cette section pour créer une recette de conteneur avec le AWS CLI, vous devez créer les composants que la recette utilisera. L'exemple de recette de conteneur présenté à l'étape suivante fait référence à des exemples de composants créés dans la Créez un composant personnalisé à partir du AWS CLI section de ce guide.

Après avoir créé vos composants, ou si vous utilisez des composants existants, notez les ARN que vous souhaitez inclure dans la recette.

  1. Créer un fichier JSON d'entrée CLI

    Vous pouvez fournir toutes les entrées de la create-container-recipe commande avec des paramètres de commande intégrés. Cependant, la commande qui en résulte peut être assez longue. Pour rationaliser la commande, vous pouvez plutôt fournir un fichier JSON contenant tous les paramètres des recettes du conteneur

    Note

    La convention de dénomination des valeurs de données dans le fichier JSON suit le modèle spécifié pour les paramètres de demande d'action de l'API Image Builder. Pour consulter les paramètres de demande de commande d'API, consultez la CreateContainerRecipecommande dans le manuel de référence de l'API EC2 Image Builder.

    Pour fournir les valeurs de données sous forme de paramètres de ligne de commande, reportez-vous aux noms de paramètres spécifiés dans la référence des AWS CLI commandes.

    Voici un résumé des paramètres de cet exemple :

    • composants (tableau d'objets, obligatoire) — Contient un tableau d'ComponentConfigurationobjets. Au moins un composant de construction doit être spécifié :

      Note

      Image Builder installe les composants dans l'ordre dans lequel vous les avez spécifiés dans la recette. Cependant, les composants de renforcement CIS s'exécutent toujours en dernier pour garantir que les tests de référence s'exécutent par rapport à votre image de sortie.

      • componentArn (string, obligatoire) — L'ARN du composant.

        Astuce

        Pour utiliser cet exemple afin de créer votre propre recette de conteneur, remplacez les ARN d'exemple par les ARN des composants que vous utilisez pour votre recette,. Il s'agit Région AWS notamment du nom et du numéro de version de chacun.

      • paramètres (tableau d'objets) — Contient un tableau d'ComponentParameterobjets. Si un paramètre d'entrée est obligatoire, mais qu'aucune valeur par défaut n'est définie dans le composant, vous devez fournir une valeur. Image Builder ne créera pas la version de la recette s'il manque des paramètres requis et si aucune valeur par défaut n'est définie.

        Important

        Les paramètres des composants sont des valeurs en texte brut et sont connectés AWS CloudTrail. Nous vous recommandons d'utiliser AWS Secrets Manager le AWS Systems Manager Parameter Store pour stocker vos secrets. Pour plus d'informations sur Secrets Manager, voir Qu'est-ce que Secrets Manager ? dans le guide de AWS Secrets Manager l'utilisateur. Pour plus d'informations sur AWS Systems Manager Parameter Store, voir AWS Systems Manager Parameter Store dans le guide de AWS Systems Manager l'utilisateur.

        • name (chaîne, obligatoire) — Nom du paramètre du composant à définir.

        • valeur (tableau de chaînes, obligatoire) — Contient un tableau de chaînes pour définir la valeur du paramètre de composant nommé. Si une valeur par défaut est définie pour le composant et qu'aucune autre valeur n'est fournie, AWSTOE utilise la valeur par défaut.

    • containerType (chaîne, obligatoire) — Type de conteneur à créer. Les valeurs valides incluentDOCKER.

    • dockerfileTemplateData(string) — Le modèle Dockerfile utilisé pour créer votre image, exprimé sous la forme d'un blob de données intégré.

    • name (chaîne, obligatoire) — Le nom de la recette du conteneur.

    • description (chaîne) — Description de la recette du conteneur.

    • parentImage (chaîne, obligatoire) — Image que la recette du conteneur utilise comme base pour votre image personnalisée. La valeur peut être l'ARN de l'image de base ou un ID d'AMI.

    • PlatforMoverride (chaîne) — Spécifie la plate-forme du système d'exploitation lorsque vous utilisez une image de base personnalisée.

    • SemanticVersion <major>(chaîne, obligatoire) — La version sémantique de la recette de conteneur spécifiée au format suivant, avec des valeurs numériques à chaque position pour indiquer une version spécifique :. <minor>. <patch>. Un exemple serait 1.0.0. Pour en savoir plus sur le versionnement sémantique des ressources Image Builder, consultez. Versionnage sémantique dans Image Builder

    • tags (string map) — Tags attachés à la recette du conteneur.

    • InstanceConfiguration (object) — Groupe d'options qui peuvent être utilisées pour configurer une instance afin de créer et de tester des images de conteneurs.

      • image (chaîne) — L'ID d'AMI à utiliser comme image de base pour une instance de construction et de test de conteneur. Si vous ne spécifiez pas cette valeur, Image Builder utilise l'AMI optimisée Amazon ECS appropriée comme image de base.

      • blockDeviceMappings(ensemble d'objets) — Définit les périphériques en mode bloc à associer pour créer une instance à partir de l'AMI Image Builder spécifiée dans le image paramètre.

        • DeviceName (chaîne) : périphérique auquel ces mappages s'appliquent.

        • ebs (object) — Utilisé pour gérer la configuration spécifique d'Amazon EBS pour ce mappage.

          • deleteOnTermination(Booléen) — Utilisé pour configurer la suppression à la fin de l'appareil associé.

          • crypté (booléen) — Utilisé pour configurer le chiffrement de l'appareil.

          • VolumeSize (entier) — Utilisé pour remplacer la taille du volume de l'appareil.

          • VolumeType (string) — Utilisé pour remplacer le type de volume du périphérique.

    • TargetRepository (objet, obligatoire) — Le référentiel de destination pour l'image du conteneur si aucun autre référentiel n'est spécifié dans la configuration de distribution de votre pipeline pour la région où le pipeline s'exécute (région 1).

      • RepositoryName (chaîne, obligatoire) — Nom du référentiel de conteneurs dans lequel l'image de conteneur de sortie est stockée. Ce nom est doté du préfixe de l'emplacement du référentiel.

      • service (chaîne, obligatoire) — Spécifie le service dans lequel cette image a été enregistrée.

    • WorkingDirectory (string) — Le répertoire de travail à utiliser lors des workflows de génération et de test.

    { "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. Créez la recette

    Utilisez la commande suivante pour créer la recette. Indiquez le nom du fichier JSON que vous avez créé à l'étape précédente dans le --cli-input-json paramètre :

    aws imagebuilder create-container-recipe --cli-input-json file://create-container-recipe.json
    Note
    • Vous devez inclure l'option file:// au début du chemin du fichier JSON.

    • Le chemin d'accès du fichier JSON doit suivre la convention appropriée pour le système d'exploitation de base sur lequel vous exécutez la commande. En effet, Windows utilise la barre oblique inverse ( \) pour faire référence au chemin du répertoire, et Linux utilise la barre oblique directe (/).