Menggunakan EC2 Image Builder untuk membuat Amazon ECS yang disesuaikan yang dioptimalkan AMIs - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan EC2 Image Builder untuk membuat Amazon ECS yang disesuaikan yang dioptimalkan AMIs

AWS merekomendasikan agar Anda menggunakan Amazon ECS yang dioptimalkan AMIs karena sudah dikonfigurasi sebelumnya dengan persyaratan dan rekomendasi untuk menjalankan beban kerja penampung Anda. Mungkin ada saat-saat ketika Anda perlu menyesuaikan AMI Anda untuk menambahkan perangkat lunak tambahan. Anda dapat menggunakan EC2 Image Builder untuk pembuatan, pengelolaan, dan penyebaran image server Anda. Anda mempertahankan kepemilikan gambar khusus yang dibuat di akun Anda. Anda dapat menggunakan pipeline EC2 Image Builder untuk mengotomatiskan pembaruan dan penambalan sistem untuk gambar Anda, atau menggunakan perintah yang berdiri sendiri untuk membuat gambar dengan sumber daya konfigurasi yang ditentukan.

Anda membuat resep untuk gambar Anda. Resepnya mencakup gambar induk, dan komponen tambahan apa pun. Anda juga membuat pipeline yang mendistribusikan AMI khusus Anda.

Anda membuat resep untuk gambar Anda. Resep image Builder Image adalah dokumen yang mendefinisikan image dasar dan komponen yang diterapkan pada image dasar untuk menghasilkan konfigurasi yang diinginkan untuk gambar AMI keluaran. Anda juga membuat pipeline yang mendistribusikan AMI khusus Anda. Untuk informasi selengkapnya, lihat Cara kerja EC2 Image Builder di Panduan Pengguna EC2 Image Builder.

Kami menyarankan Anda menggunakan salah satu Amazon ECS berikut yang dioptimalkan AMIs sebagai “Gambar Induk” Anda di EC2 Image Builder:

  • Linux

    • Amazon ECS dioptimalkan 023 x86 AL2

    • Amazon ECS yang dioptimalkan Amazon Linux 2023 (arm64) AMI

    • Amazon ECS yang dioptimalkan Amazon Linux 2 kernel 5 AMI

    • Amazon ECS yang dioptimalkan Amazon Linux 2 x86 AMI

  • Windows

    • Amazon ECS-dioptimalkan Windows 2022 Full x86

    • Amazon ECS yang dioptimalkan Windows 2022 Core x86

    • Amazon ECS Windows 2019 Full x86 yang dioptimalkan oleh Amazon

    • Amazon ECS yang dioptimalkan Windows 2019 Core x86

    • Amazon ECS yang dioptimalkan Windows 2016 Full x86

Kami juga menyarankan Anda memilih “Gunakan versi OS terbaru yang tersedia”. Pipeline akan menggunakan versi semantik untuk gambar induk, yang membantu mendeteksi pembaruan ketergantungan dalam pekerjaan yang dijadwalkan secara otomatis. Untuk informasi selengkapnya, lihat Pembuatan versi semantik di Panduan Pengguna Image BuilderEC2 .

AWS secara teratur memperbarui gambar AMI Amazon ECS yang dioptimalkan dengan tambalan keamanan dan versi agen kontainer baru. Saat Anda menggunakan ID AMI sebagai gambar induk Anda dalam resep gambar Anda, Anda perlu secara teratur memeriksa pembaruan pada gambar induk. Jika ada pembaruan, Anda harus membuat versi baru resep Anda dengan AMI yang diperbarui. Ini memastikan bahwa gambar kustom Anda menggabungkan versi terbaru dari gambar induk. Untuk informasi tentang cara membuat alur kerja untuk memperbarui EC2 instans secara otomatis di klaster Amazon ECS dengan yang baru dibuat AMIs, lihat Cara membuat pipeline pengerasan AMI dan mengotomatiskan pembaruan pada armada instans ECS Anda.

Anda juga dapat menentukan Amazon Resource Name (ARN) dari gambar induk yang dipublikasikan melalui pipeline EC2 Image Builder terkelola. Amazon secara rutin menerbitkan gambar AMI Amazon ECS yang dioptimalkan melalui saluran pipa terkelola. Gambar-gambar ini dapat diakses publik. Anda harus memiliki izin yang benar untuk mengakses gambar. Saat Anda menggunakan ARN gambar alih-alih AMI dalam resep Image Builder, pipeline Anda secara otomatis menggunakan versi terbaru dari gambar induk setiap kali dijalankan. Pendekatan ini menghilangkan kebutuhan untuk membuat versi resep baru secara manual untuk setiap pembaruan.

Menggunakan gambar ARN dengan infrastruktur sebagai kode (IAc)

Anda dapat mengonfigurasi resep menggunakan konsol EC2 Image Builder, atau infrastruktur sebagai kode (misalnya, AWS CloudFormation), atau AWS SDK. Saat menentukan gambar induk dalam resep, Anda dapat menentukan ID EC2 AMI, ARN image Builder Image Builder, ID AWS Marketplace produk, atau gambar kontainer. AWS menerbitkan gambar AMI IDs dan Image Builder ARNs dari Amazon ECS AMIs yang dioptimalkan secara publik. Berikut ini adalah format ARN untuk gambar:

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

Ini ImageVersion memiliki format berikut. Gantimajor, minor dan patch dengan nilai terbaru.

<major>.<minor>.<patch>

Anda dapat menggantimajor, minor dan patch ke nilai tertentu atau Anda dapat menggunakan ARN tanpa versi dari sebuah gambar, sehingga pipeline Anda tetap up-to-date dengan versi terbaru dari gambar induk. ARN tanpa versi menggunakan format wildcard 'x.x.x' untuk mewakili versi gambar. Pendekatan ini memungkinkan layanan Image Builder untuk secara otomatis menyelesaikan ke versi terbaru dari gambar. Menggunakan ARN tanpa versi memastikan bahwa referensi Anda selalu mengarah ke gambar terbaru yang tersedia, merampingkan proses mempertahankan gambar terbaru dalam penerapan Anda. Saat Anda membuat resep dengan konsol, EC2 Image Builder secara otomatis mengidentifikasi ARN untuk gambar induk Anda. Saat Anda menggunakan IAc untuk membuat resep, Anda harus mengidentifikasi ARN dan memilih versi gambar yang diinginkan atau menggunakan arn tanpa versi untuk menunjukkan gambar terbaru yang tersedia. Kami menyarankan Anda membuat skrip otomatis untuk memfilter dan hanya menampilkan gambar yang sesuai dengan kriteria Anda. Skrip Python berikut menunjukkan cara mengambil daftar Amazon ECS yang dioptimalkan. AMIs

Skrip menerima dua argumen opsional: owner danplatform, dengan nilai default “Amazon”, dan “Windows” masing-masing. Nilai yang valid untuk argumen pemilik adalah:Self,Shared,Amazon, danThirdParty. Nilai yang valid untuk argumen platform adalah Windows danLinux. Misalnya, jika Anda menjalankan skrip dengan owner argumen yang disetel ke Amazon dan platform disetel keLinux, skrip akan menghasilkan daftar gambar yang diterbitkan oleh Amazon termasuk gambar yang dioptimalkan 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()

Menggunakan gambar ARN dengan AWS CloudFormation

Resep gambar Image Builder adalah cetak biru yang menentukan gambar induk dan komponen yang diperlukan untuk mencapai konfigurasi gambar keluaran yang diinginkan. Anda menggunakan AWS::ImageBuilder::ImageRecipe sumber daya. Atur ParentImage nilai ke gambar ARN. Gunakan ARN tanpa versi dari gambar yang Anda inginkan untuk memastikan pipeline Anda selalu menggunakan versi gambar terbaru. Misalnya, arn:aws:imagebuilder:us-east-1:aws:image/amazon-linux-2023-ecs-optimized-x86/x.x.x. Definisi AWS::ImageBuilder::ImageRecipe sumber daya berikut menggunakan ARN image terkelola 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"

Untuk informasi selengkapnya tentang AWS::ImageBuilder::ImageRecipesumber daya, lihat di Panduan AWS CloudFormation Pengguna.

Anda dapat mengotomatiskan pembuatan gambar baru di pipeline Anda dengan menyetel Schedule properti AWS::ImageBuilder::ImagePipeline sumber daya. Jadwal mencakup kondisi awal dan ekspresi cron. Untuk informasi selengkapnya, lihat AWS::ImageBuilder::ImagePipeline di AWS CloudFormation Panduan Pengguna.

AWS::ImageBuilder::ImagePipelineContoh berikut ini memiliki pipeline yang menjalankan build pada pukul 10:00 AM Coordinated Universal Time (UTC) setiap hari. Tetapkan Schedule nilai-nilai berikut:

  • Atur PipelineExecutionStartCondition ke EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE. Build dimulai hanya jika sumber daya dependen seperti image induk atau komponen, yang menggunakan wildcard 'x' dalam versi semantiknya, diperbarui. Ini memastikan build menggabungkan pembaruan terbaru dari sumber daya tersebut.

  • Setel ScheduleExpression ke ekspresi (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 * * ? *)'

Menggunakan gambar ARN dengan Terraform

Pendekatan untuk menentukan gambar dan jadwal induk pipeline Anda di Terraform sejalan dengan yang ada di. AWS CloudFormation Anda menggunakan aws_imagebuilder_image_recipe sumber daya. Atur parent_image nilai ke gambar ARN. Gunakan ARN tanpa versi dari gambar yang Anda inginkan untuk memastikan pipeline Anda selalu menggunakan versi gambar terbaru. Untuk informasi lebih lanjut, lihat aws_imagebuilder_image_recipedi dokumentasi Terraform.

Di blok konfigurasi jadwalaws_imagebuilder_image_pipeline resource, atur nilai schedule_expression argumen ke ekspresi cron pilihan Anda untuk menentukan seberapa sering pipeline berjalan, dan atur pipeline_execution_start_condition keEXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE. Untuk informasi lebih lanjut, lihat aws_imagebuilder_image_pipelinedi dokumentasi Terraform.