Verwenden von EC2 Image Builder zur Erstellung maßgeschneiderter Amazon ECS-optimierter AMIs - Amazon Elastic Container Service

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.

Verwenden von EC2 Image Builder zur Erstellung maßgeschneiderter Amazon ECS-optimierter AMIs

AWS empfiehlt, dass Sie Amazon ECS-Optimized verwenden, AMIs da diese mit den Anforderungen und Empfehlungen für die Ausführung Ihrer Container-Workloads vorkonfiguriert sind. Es kann vorkommen, dass Sie Ihr AMI anpassen müssen, um zusätzliche Software hinzuzufügen. Sie können EC2 Image Builder für die Erstellung, Verwaltung und Bereitstellung Ihrer Server-Images verwenden. Sie behalten das Eigentum an den benutzerdefinierten Images, die in Ihrem Konto erstellt wurden. Sie können EC2 Image Builder Builder-Pipelines verwenden, um Updates und System-Patches für Ihre Images zu automatisieren, oder einen eigenständigen Befehl verwenden, um ein Image mit Ihren definierten Konfigurationsressourcen zu erstellen.

Sie erstellen ein Rezept für Ihr Image. Das Rezept enthält ein übergeordnetes Bild und alle zusätzlichen Komponenten. Sie erstellen auch eine Pipeline, die Ihr benutzerdefiniertes AMI verteilt.

Sie erstellen ein Rezept für Ihr Image. Ein Image Builder Builder-Image-Rezept ist ein Dokument, das das Basis-Image und die Komponenten definiert, die auf das Basis-Image angewendet werden, um die gewünschte Konfiguration für das Ausgabe-AMI-Image zu erzeugen. Sie erstellen auch eine Pipeline, die Ihr benutzerdefiniertes AMI verteilt. Weitere Informationen finden Sie unter So funktioniert EC2 Image Builder im EC2 Image Builder Builder-Benutzerhandbuch.

Wir empfehlen Ihnen, eines der folgenden Amazon ECS-optimierten Images AMIs als Ihr „übergeordnetes Image“ in EC2 Image Builder zu verwenden:

  • Linux

    • Amazon ECS-optimiert 023 x86 AL2

    • Amazon-ECS-optimiertes AMI für Amazon Linux 2023 (arm64)

    • Amazon ECS-optimiertes Amazon Linux 2-Kernel-5-AMI

    • Amazon ECS-optimiertes Amazon Linux 2 x86-AMI

  • Windows

    • Amazon ECS-optimiertes Windows 2022 Full x86

    • Amazon ECS-optimiertes Windows 2022 Core x86

    • Amazon ECS-optimiertes Windows 2019 Full x86

    • Amazon ECS-optimiertes Windows 2019 Core x86

    • Amazon ECS-optimiertes Windows 2016 Full x86

Wir empfehlen außerdem, dass Sie „Die neueste verfügbare Betriebssystemversion verwenden“ auswählen. Die Pipeline verwendet für das übergeordnete Image eine semantische Versionierung, die hilft, die Abhängigkeitsupdates in automatisch geplanten Jobs zu erkennen. Weitere Informationen finden Sie unter Semantische Versionierung im EC2 Image Builder Builder-Benutzerhandbuch.

AWS aktualisiert regelmäßig Amazon ECS-optimierte AMI-Images mit Sicherheitspatches und der neuen Container-Agent-Version. Wenn Sie eine AMI-ID als Ihr übergeordnetes Image in Ihrem Image-Rezept verwenden, müssen Sie regelmäßig nach Aktualisierungen für das übergeordnete Image suchen. Wenn es Updates gibt, müssen Sie eine neue Version Ihres Rezepts mit dem aktualisierten AMI erstellen. Dadurch wird sichergestellt, dass Ihre benutzerdefinierten Images die neueste Version des übergeordneten Images enthalten. Informationen zum Erstellen eines Workflows zur automatischen Aktualisierung Ihrer EC2 Instances in Ihrem Amazon ECS-Cluster mit den neu erstellten AMIs Instances finden Sie unter So erstellen Sie eine AMI-Hardening-Pipeline und automatisieren Updates für Ihre ECS-Instance-Flotte.

Sie können auch den Amazon-Ressourcennamen (ARN) eines übergeordneten Images angeben, das über eine verwaltete EC2 Image Builder Builder-Pipeline veröffentlicht wurde. Amazon veröffentlicht routinemäßig Amazon ECS-optimierte AMI-Images über verwaltete Pipelines. Diese Bilder sind öffentlich zugänglich. Sie müssen über die richtigen Berechtigungen verfügen, um auf das Bild zugreifen zu können. Wenn Sie in Ihrem Image Builder Builder-Rezept einen Image-ARN anstelle eines AMI verwenden, verwendet Ihre Pipeline bei jeder Ausführung automatisch die neueste Version des übergeordneten Images. Dieser Ansatz macht es überflüssig, für jedes Update manuell neue Rezeptversionen zu erstellen.

Verwenden des Image-ARN mit Infrastruktur als Code (IaC)

Sie können das Rezept mit der EC2 Image Builder Builder-Konsole, Infrastructure as Code (z. B. AWS CloudFormation) oder dem AWS SDK konfigurieren. Wenn Sie in Ihrem Rezept ein übergeordnetes Image angeben, können Sie eine EC2 AMI-ID, einen Image Builder Builder-Image-ARN, eine AWS Marketplace Produkt-ID oder ein Container-Image angeben. AWS veröffentlicht sowohl das AMI IDs - als auch Image Builder Builder-Image ARNs von Amazon ECS-Optimized öffentlich AMIs . Das folgende ist das ARN-Format für das Bild:

arn:${Partition}:imagebuilder:${Region}:${Account}:image/${ImageName}/${ImageVersion}

Das ImageVersion hat das folgende Format. Ersetzen Siemajor, minor und patch durch die neuesten Werte.

<major>.<minor>.<patch>

Sie können minor und patch durch bestimmte Werte ersetzen major oder Sie können den versionslosen ARN eines Images verwenden, sodass Ihre Pipeline up-to-date bei der neuesten Version des übergeordneten Images bleibt. Ein versionsloser ARN verwendet das Platzhalterformat 'x.x.x', um die Image-Version darzustellen. Dieser Ansatz ermöglicht es dem Image Builder Builder-Dienst, automatisch die neueste Version des Images aufzulösen. Durch die Verwendung von versionsfreiem ARN wird sichergestellt, dass Ihre Referenz immer auf das neueste verfügbare Image verweist, wodurch der Prozess der Aktualisierung von Images in Ihrer Bereitstellung optimiert wird. Wenn Sie mit der Konsole ein Rezept erstellen, identifiziert EC2 Image Builder automatisch den ARN für Ihr übergeordnetes Image. Wenn Sie IaC verwenden, um das Rezept zu erstellen, müssen Sie den ARN identifizieren und die gewünschte Image-Version auswählen oder den versionslosen ARN verwenden, um das neueste verfügbare Image anzugeben. Wir empfehlen Ihnen, ein automatisiertes Skript zu erstellen, um nur Bilder zu filtern und anzuzeigen, die Ihren Kriterien entsprechen. Das folgende Python-Skript zeigt, wie Sie eine Liste von Amazon AMIs ECS-optimierten Dateien abrufen.

Das Skript akzeptiert zwei optionale Argumente: owner undplatform, mit den Standardwerten „Amazon“ bzw. „Windows“. Die gültigen Werte für das Argument owner sind: SelfShared,Amazon, undThirdParty. Die gültigen Werte für das Plattformargument sind Windows undLinux. Wenn Sie das Skript beispielsweise mit den owner Argumenten set to Amazon und set to ausführen, generiert das platform Skript eine Liste von BildernLinux, die von Amazon veröffentlicht wurden, einschließlich Amazon ECS-optimierter Bilder.

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()

Verwenden des Bild-ARN mit AWS CloudFormation

Ein Image Builder Builder-Image-Rezept ist ein Blueprint, der das übergeordnete Image und die Komponenten spezifiziert, die für die beabsichtigte Konfiguration des Ausgabe-Images erforderlich sind. Sie verwenden die AWS::ImageBuilder::ImageRecipe Ressource. Setzen Sie den ParentImage Wert auf den Bild-ARN. Verwenden Sie den versionslosen ARN Ihres gewünschten Images, um sicherzustellen, dass Ihre Pipeline immer die neueste Version des Images verwendet. Beispiel, arn:aws:imagebuilder:us-east-1:aws:image/amazon-linux-2023-ecs-optimized-x86/x.x.x. Die folgende AWS::ImageBuilder::ImageRecipe Ressourcendefinition verwendet einen ARN für verwaltete Amazon-Images:

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"

Weitere Informationen zu der AWS::ImageBuilder::ImageRecipeRessource finden Sie im AWS CloudFormation Benutzerhandbuch.

Sie können die Erstellung neuer Bilder in Ihrer Pipeline automatisieren, indem Sie die Schedule Eigenschaft der AWS::ImageBuilder::ImagePipeline Ressource festlegen. Der Zeitplan enthält eine Startbedingung und einen Cron-Ausdruck. Weitere Informationen finden Sie unter AWS::ImageBuilder::ImagePipeline im AWS CloudFormation -Benutzerhandbuch.

Im folgenden AWS::ImageBuilder::ImagePipeline Beispiel wird für die Pipeline täglich um 10:00 Uhr Coordinated Universal Time (UTC) ein Build ausgeführt. Legen Sie die folgenden Schedule Werte fest:

  • Setzen Sie PipelineExecutionStartCondition auf EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE. Der Build wird nur initiiert, wenn abhängige Ressourcen wie das übergeordnete Image oder Komponenten, die in ihren semantischen Versionen den Platzhalter „x“ verwenden, aktualisiert werden. Dadurch wird sichergestellt, dass der Build die neuesten Updates dieser Ressourcen enthält.

  • Auf ScheduleExpression den Cron-Ausdruck (0 10 * * ? *) gesetzt.

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 * * ? *)'

Verwenden des Bild-ARN mit Terraform

Der Ansatz zur Angabe des übergeordneten Images und des Zeitplans Ihrer Pipeline in Terraform entspricht dem in. AWS CloudFormation Sie verwenden die Ressource. aws_imagebuilder_image_recipe Setzen Sie den parent_image Wert auf den Bild-ARN. Verwenden Sie den versionslosen ARN Ihres gewünschten Images, um sicherzustellen, dass Ihre Pipeline immer die neueste Version des Images verwendet. Weitere Informationen finden Sie aws_imagebuilder_image_recipein der Terraform-Dokumentation.

Setzen Sie im Zeitplankonfigurationsblock von den den schedule_expression Argumentwert auf einen Cron-Ausdruck Ihrer Wahlaws_imagebuilder_image_pipeline resource, um anzugeben, wie oft die Pipeline ausgeführt wird, und setzen Sie den Wert auf. pipeline_execution_start_condition EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE Weitere Informationen finden Sie aws_imagebuilder_image_pipelinein der Terraform-Dokumentation.