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.
Utilisation d' EC2 Image Builder pour créer une solution personnalisée optimisée pour Amazon ECS AMIs
AWS vous recommande d'utiliser les solutions optimisées pour Amazon ECS, AMIs car elles sont préconfigurées avec les exigences et les recommandations nécessaires pour exécuter vos charges de travail de conteneurs. Il peut arriver que vous deviez personnaliser votre AMI pour ajouter des logiciels supplémentaires. Vous pouvez utiliser EC2 Image Builder pour créer, gérer et déployer les images de votre serveur. Vous restez propriétaire des images personnalisées créées dans votre compte. Vous pouvez utiliser les pipelines EC2 Image Builder pour automatiser les mises à jour et les correctifs système pour vos images, ou utiliser une commande autonome pour créer une image avec les ressources de configuration que vous avez définies.
Vous créez une recette pour votre image. La recette inclut une image parent et tous les composants supplémentaires. Vous créez également un pipeline qui distribue votre AMI personnalisée.
Vous créez une recette pour votre image. Une recette d'image Image Builder est un document qui définit l'image de base et les composants qui sont appliqués à l'image de base afin de produire la configuration souhaitée pour l'image AMI de sortie. Vous créez également un pipeline qui distribue votre AMI personnalisée. Pour plus d'informations, consultez la section Fonctionnement EC2 d'Image Builder dans le guide de l'utilisateur d'EC2 Image Builder.
Nous vous recommandons d'utiliser l'une des images optimisées pour Amazon ECS suivantes AMIs comme « image parent » dans EC2 Image Builder :
Linux
-
023 x86 optimisé pour Amazon ECS AL2
-
AMI Amazon Linux 2023 (arm64) optimisée pour Amazon ECS
-
AMI Amazon Linux 2 (noyau 5) optimisée pour Amazon ECS
-
AMI Amazon Linux 2 x86 optimisée pour Amazon ECS
-
Windows
-
Windows 2022 Full x86 optimisé pour Amazon ECS
-
Windows 2022 Core x86 optimisé pour Amazon ECS
-
Windows 2019 Full x86 optimisé pour Amazon ECS
-
Windows 2019 Core x86 optimisé pour Amazon ECS
-
Windows 2016 complet x86 optimisé pour Amazon ECS
-
Nous vous recommandons également de sélectionner « Utiliser la dernière version disponible du système d'exploitation ». Le pipeline utilisera le versionnement sémantique pour l'image parent, ce qui permet de détecter les mises à jour des dépendances dans les tâches planifiées automatiquement. Pour plus d'informations, consultez la section Gestion des versions sémantique dans le guide de l'utilisateur EC2 d'Image Builder.
AWS met régulièrement à jour les images d'AMI optimisées pour Amazon ECS avec des correctifs de sécurité et la nouvelle version de l'agent de conteneur. Lorsque vous utilisez un ID AMI comme image parent dans votre recette d'image, vous devez vérifier régulièrement si des mises à jour ont été apportées à l'image parent. S'il y a des mises à jour, vous devez créer une nouvelle version de votre recette avec l'AMI mise à jour. Cela garantit que vos images personnalisées incorporent la dernière version de l'image parent. Pour plus d'informations sur la création d'un flux de travail permettant de mettre automatiquement à jour vos EC2 instances dans votre cluster Amazon ECS avec les instances nouvellement créées AMIs, consultez Comment créer un pipeline de renforcement des AMI et automatiser les mises à jour de votre parc d'instances ECS
Vous pouvez également spécifier le Amazon Resource Name (ARN) d'une image parent publiée via un pipeline EC2 Image Builder géré. Amazon publie régulièrement des images AMI optimisées pour Amazon ECS via des pipelines gérés. Ces images sont accessibles au public. Vous devez disposer des autorisations appropriées pour accéder à l'image. Lorsque vous utilisez un ARN d'image au lieu d'une AMI dans votre recette Image Builder, votre pipeline utilise automatiquement la version la plus récente de l'image parent à chaque exécution. Cette approche élimine le besoin de créer manuellement de nouvelles versions de recettes pour chaque mise à jour.
Utilisation de l'ARN de l'image avec l'infrastructure en tant que code (IaC)
Vous pouvez configurer la recette à l'aide de la console EC2 Image Builder, de l'infrastructure sous forme de code (par exemple AWS CloudFormation) ou du AWS SDK. Lorsque vous spécifiez une image parent dans votre recette, vous pouvez spécifier un ID EC2 AMI, un ARN d'image Image Builder, un identifiant de AWS Marketplace produit ou une image de conteneur. AWS publie publiquement l'image AMI IDs et Image Builder ARNs d'Amazon ECS optimisée pour Amazon ECS AMIs . Le format ARN de l'image est le suivant :
arn:${Partition}:imagebuilder:${Region}:${Account}:image/${ImageName}/${ImageVersion}
Le format ImageVersion
est le suivant. Remplacezmajor
, minor
et patch
par les dernières valeurs.
<
major
>.<minor
>.<patch
>
Vous pouvez remplacer major
minor
et patch
remplacer des valeurs spécifiques ou utiliser l'ARN sans version d'une image, afin que votre pipeline conserve up-to-date la dernière version de l'image parent. Un ARN sans version utilise le format générique « x.x.x » pour représenter la version de l'image. Cette approche permet au service Image Builder de résoudre automatiquement la version la plus récente de l'image. L'utilisation d'un ARN sans version garantit que votre référence pointe toujours vers la dernière image disponible, ce qui rationalise le processus de mise à jour des images dans votre déploiement. Lorsque vous créez une recette avec la console, EC2 Image Builder identifie automatiquement l'ARN de votre image parent. Lorsque vous utilisez iAC pour créer la recette, vous devez identifier l'ARN et sélectionner la version d'image souhaitée ou utiliser un ARN sans version pour indiquer la dernière image disponible. Nous vous recommandons de créer un script automatique pour filtrer et n'afficher que les images correspondant à vos critères. Le script Python suivant montre comment récupérer une liste d'Amazon ECS AMIs optimisés.
Le script accepte deux arguments facultatifs : owner
etplatform
, avec les valeurs par défaut « Amazon » et « Windows » respectivement. Les valeurs valides pour l'argument du propriétaire sont : Self
Shared
,Amazon
, etThirdParty
. Les valeurs valides pour l'argument de plate-forme sont Windows
etLinux
. Par exemple, si vous exécutez le script avec les owner
arguments set to Amazon
et platform
set toLinux
, le script génère une liste d'images publiées par Amazon, y compris des images optimisées pour Amazon ECS.
import boto3 import argparse def list_images(owner, platform): # Create a Boto3 session session = boto3.Session() # Create an EC2 Image Builder client client = session.client('imagebuilder') # Define the initial request parameters request_params = { 'owner': owner, 'filters': [ { 'name': 'platform', 'values': [platform] } ] } # Initialize the results list all_images = [] # Get the initial response with the first page of results response = client.list_images(**request_params) # Extract images from the response all_images.extend(response['imageVersionList']) # While 'nextToken' is present, continue paginating while 'nextToken' in response and response['nextToken']: # Update the token for the next request request_params['nextToken'] = response['nextToken'] # Get the next page of results response = client.list_images(**request_params) # Extract images from the response all_images.extend(response['imageVersionList']) return all_images def main(): # Initialize the parser parser = argparse.ArgumentParser(description="List AWS images based on owner and platform") # Add the parameters/arguments parser.add_argument("--owner", default="Amazon", help="The owner of the images. Default is 'Amazon'.") parser.add_argument("--platform", default="Windows", help="The platform type of the images. Default is 'Windows'.") # Parse the arguments args = parser.parse_args() # Retrieve all images based on the provided owner and platform images = list_images(args.owner, args.platform) # Print the details of the images for image in images: print(f"Name: {image['name']}, Version: {image['version']}, ARN: {image['arn']}") if __name__ == "__main__": main()
Utilisation de l'ARN de l'image avec AWS CloudFormation
Une recette d'image Image Builder est un plan qui spécifie l'image parent et les composants nécessaires pour obtenir la configuration prévue de l'image de sortie. Vous utilisez la AWS::ImageBuilder::ImageRecipe
ressource. Définissez la ParentImage
valeur sur l'ARN de l'image. Utilisez l'ARN sans version de l'image souhaitée pour vous assurer que votre pipeline utilise toujours la version la plus récente de l'image. Par exemple, arn:aws:imagebuilder:us-east-1:aws:image/amazon-linux-2023-ecs-optimized-x86/x.x.x
. La définition de AWS::ImageBuilder::ImageRecipe
ressource suivante utilise un ARN d'image géré par Amazon :
ECSRecipe: Type: AWS::ImageBuilder::ImageRecipe Properties: Name: MyRecipe Version: '1.0.0' Components: - ComponentArn: [<The component arns of the image recipe>] ParentImage: "arn:aws:imagebuilder:us-east-1:aws:image/amazon-linux-2023-ecs-optimized-x86/x.x.x"
Pour plus d'informations sur cette AWS::ImageBuilder::ImageRecipe
ressource, consultez le guide de AWS CloudFormation l'utilisateur.
Vous pouvez automatiser la création de nouvelles images dans votre pipeline en définissant la Schedule
propriété de la AWS::ImageBuilder::ImagePipeline
ressource. Le calendrier inclut une condition de départ et une expression cron. Pour plus d’informations, consultez AWS::ImageBuilder::ImagePipeline
dans le Guide de l’utilisateur AWS CloudFormation .
Dans l'AWS::ImageBuilder::ImagePipeline
exemple suivant, le pipeline exécute une construction à 10 h 00, heure universelle coordonnée (UTC) tous les jours. Définissez les Schedule
valeurs suivantes :
Définissez
PipelineExecutionStartCondition
surEXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE
. La génération ne démarre que si des ressources dépendantes telles que l'image parent ou les composants, qui utilisent le caractère générique « x » dans leurs versions sémantiques, sont mises à jour. Cela garantit que la version intègre les dernières mises à jour de ces ressources.-
ScheduleExpression Défini sur l'expression
(0 10 * * ? *)
cron.
ECSPipeline: Type: AWS::ImageBuilder::ImagePipeline Properties: Name: my-pipeline ImageRecipeArn: <arn of the recipe you created in previous step> InfrastructureConfigurationArn: <ARN of the infrastructure configuration associated with this image pipeline> Schedule: PipelineExecutionStartCondition: EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE ScheduleExpression: 'cron(0 10 * * ? *)'
Utilisation de l'image ARN avec Terraform
L'approche permettant de spécifier l'image parent et le calendrier de votre pipeline dans Terraform s'aligne sur celle de. AWS CloudFormation Vous utilisez la aws_imagebuilder_image_recipe
ressource. Définissez la parent_image
valeur sur l'ARN de l'image. Utilisez l'ARN sans version de l'image souhaitée pour vous assurer que votre pipeline utilise toujours la version la plus récente de l'image. Pour plus d'informations, consultez aws_imagebuilder_image_recipe
Dans le bloc de configuration de planification duaws_imagebuilder_image_pipeline
resource
, définissez la valeur de l'schedule_expression
argument sur une expression cron de votre choix pour spécifier la fréquence d'exécution du pipeline, puis définissez la pipeline_execution_start_condition
valeur sur. EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE
Pour plus d'informations, consultez aws_imagebuilder_image_pipeline