View a markdown version of this page

Créez un pipeline d'images de conteneur à partir du AWS CLI - 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éez un pipeline d'images de conteneur à partir du AWS CLI

Pour créer un pipeline d'images à partir du AWS CLI, exécutez la create-image-pipeline commande avec les options de configuration qui s'appliquent à votre pipeline. Vous avez la possibilité de créer un fichier JSON contenant l'ensemble de la configuration de votre pipeline ou de spécifier la configuration au moment de l'exécution. Cette section utilise la méthode du fichier de configuration JSON pour simplifier la commande.

La fréquence à laquelle votre pipeline crée une nouvelle image pour intégrer les mises à jour en attente à partir de votre image de base et de vos composants dépend de schedule celle que vous avez configurée. A schedule possède les attributs suivants :

  • scheduleExpression— Définit le calendrier d'exécution de votre pipeline afin d'évaluer pipelineExecutionStartCondition et de déterminer s'il doit démarrer une construction. Le planning est configuré avec des expressions cron. Pour plus d'informations sur le formatage d'une expression cron dans Image Builder, consultezUtiliser des expressions cron dans Image Builder.

  • pipelineExecutionStartCondition— Détermine si votre pipeline doit démarrer la construction. Les valeurs valides sont les suivantes :

    • EXPRESSION_MATCH_ONLY— votre pipeline créera une nouvelle image chaque fois que l'expression cron correspond à l'heure actuelle.

    • EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE— votre pipeline crée une nouvelle image uniquement lorsque l'expression de planification correspond et que des mises à jour de votre image de base ou de vos composants sont en attente. Si aucune mise à jour n'est en attente, le build est ignoré. Pour créer immédiatement sans attendre les mises à jour, exécutez le pipeline manuellement.

Lorsque vous exécutez la create-image-pipeline commande dans le AWS CLI, de nombreuses ressources de configuration sont facultatives. Cependant, certaines ressources ont des exigences conditionnelles, en fonction du type d'image créé par le pipeline. Les ressources suivantes sont requises pour les pipelines d'images de conteneurs :

  • Recette du contenant ARN

  • ARN de configuration de l'infrastructure

Si vous n'incluez aucune ressource de configuration de distribution lorsque vous exécutez la create-image-pipeline commande, l'image de sortie est stockée dans le référentiel ECR que vous spécifiez comme référentiel cible dans votre recette de conteneur dans la région où vous exécutez la commande. Si vous incluez une ressource de configuration de distribution pour votre pipeline, le référentiel cible que vous avez spécifié pour la première région de la distribution est utilisé.

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

    Utilisez votre outil d'édition de fichiers préféré pour créer un fichier JSON avec les clés suivantes, ainsi que des valeurs valides pour votre environnement. Cet exemple utilise un fichier nommécreate-image-pipeline.json :

    { "name": "MyWindows2019Pipeline", "description": "Builds Windows 2019 Images", "enhancedImageMetadataEnabled": true, "containerRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-example-recipe/2020.12.03", "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infrastructure-configuration", "distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-example-distribution-configuration", "imageTestsConfiguration": { "imageTestsEnabled": true, "timeoutMinutes": 60 }, "schedule": { "scheduleExpression": "cron(0 0 * * SUN *)", "pipelineExecutionStartCondition": "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" }, "status": "ENABLED" }
    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. Par exemple, Windows utilise la barre oblique inverse (\) pour faire référence au chemin du répertoire, tandis que Linux et macOS utilisent la barre oblique (/).

  2. Exécutez la commande suivante en utilisant le fichier que vous avez créé en entrée.

    aws imagebuilder create-image-pipeline --cli-input-json file://create-image-pipeline.json
Exemple : création d'un pipeline de conteneurs avec numérisation d'images et flux de travail personnalisés

Cet exemple configure un pipeline de conteneurs qui se vérifie tous les lundis à 10 h 00 UTC et s'exécute uniquement lorsque des mises à jour des dépendances sont disponibles. Le fichier de configuration utilise les ressources existantes pour la recette et l'infrastructure du conteneur. Il permet d'analyser les vulnérabilités grâce à l'intégration d'Amazon Inspector et de l'ECR. La configuration spécifie également des flux de travail personnalisés dotés d'un rôle d'exécution. Les groupes parallèles exécutent des tests fonctionnels et de sécurité en même temps. Les journaux du pipeline sont envoyés à des groupes de CloudWatch journaux personnalisés.

  1. Création d'un fichier de configuration

    Créez un fichier JSON nommécreate-container-pipeline-with-workflows.json. Ce fichier définit la configuration du pipeline de conteneurs avec la numérisation d'images activée et des flux de travail de test personnalisés. Remplacez les valeurs d'espace réservé par vos propres ARN de ressources.

    { "name": "MyContainerPipelineWithScanning", "description": "Container pipeline with vulnerability scanning and custom workflows", "containerRecipeArn": "arn:aws:imagebuilder:us-east-1:123456789012:container-recipe/my-container-recipe/1.0.0", "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-east-1:123456789012:infrastructure-configuration/my-infra-config", "distributionConfigurationArn": "arn:aws:imagebuilder:us-east-1:123456789012:distribution-configuration/my-dist-config", "imageScanningConfiguration": { "imageScanningEnabled": true, "ecrConfiguration": { "repositoryName": "my-scanning-repo", "containerTags": ["scan-latest"] } }, "workflows": [ { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/build/my-build-workflow/1.0.0" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-security-scan/1.0.0", "onFailure": "ABORT", "parallelGroup": "security" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-compliance-check/1.0.0", "onFailure": "ABORT", "parallelGroup": "security" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-functional-test/1.0.0", "onFailure": "CONTINUE", "parallelGroup": "functional" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-performance-test/1.0.0", "onFailure": "CONTINUE", "parallelGroup": "functional" } ], "executionRole": "arn:aws:iam::123456789012:role/ImageBuilderExecutionRole", "loggingConfiguration": { "imageLogGroupName": "/aws/imagebuilder/my-container-pipeline-image-logs", "pipelineLogGroupName": "/aws/imagebuilder/my-container-pipeline-execution-logs" }, "imageTestsConfiguration": { "imageTestsEnabled": true, "timeoutMinutes": 120 }, "schedule": { "scheduleExpression": "cron(0 10 ? * MON *)", "pipelineExecutionStartCondition": "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" }, "status": "ENABLED" }
    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. Par exemple, Windows utilise la barre oblique inverse (\) pour faire référence au chemin du répertoire, tandis que Linux et macOS utilisent la barre oblique (/).

  2. Exécutez la commande
    aws imagebuilder create-image-pipeline --cli-input-json file://create-container-pipeline-with-workflows.json