View a markdown version of this page

Buat pipeline gambar kontainer dari AWS CLI - EC2 Image Builder

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

Buat pipeline gambar kontainer dari AWS CLI

Untuk membuat pipeline gambar dari AWS CLI, jalankan create-image-pipeline perintah dengan opsi konfigurasi yang berlaku untuk pipeline Anda. Anda memiliki opsi untuk membuat file JSON yang berisi semua konfigurasi pipeline Anda, atau untuk menentukan konfigurasi saat runtime. Bagian ini menggunakan metode file konfigurasi JSON untuk menyederhanakan perintah.

Seberapa sering pipeline Anda membuat gambar baru untuk menggabungkan pembaruan yang tertunda dari gambar dasar dan komponen Anda tergantung pada schedule yang telah Anda konfigurasikan. A schedule memiliki atribut berikut:

  • scheduleExpression— Tetapkan jadwal kapan pipeline Anda berjalan untuk mengevaluasi pipelineExecutionStartCondition dan menentukan apakah itu harus memulai pembangunan. Jadwal dikonfigurasi dengan ekspresi cron. Untuk informasi selengkapnya tentang cara memformat ekspresi cron di Image Builder, lihatGunakan ekspresi cron di Image Builder.

  • pipelineExecutionStartCondition— Menentukan apakah pipeline Anda harus memulai pembangunan. Nilai yang valid meliputi:

    • EXPRESSION_MATCH_ONLY— pipeline Anda akan membangun gambar baru setiap kali ekspresi cron cocok dengan waktu saat ini.

    • EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE— pipeline Anda membuat gambar baru hanya jika ekspresi jadwal cocok dan ada pembaruan yang tertunda untuk gambar atau komponen dasar Anda. Jika tidak ada pembaruan yang tertunda, build akan dilewati. Untuk segera membangun tanpa menunggu pembaruan, jalankan pipeline secara manual.

Ketika Anda menjalankan create-image-pipeline perintah di AWS CLI, banyak sumber daya konfigurasi adalah opsional. Namun, beberapa sumber daya memiliki persyaratan bersyarat, tergantung pada jenis gambar apa yang dibuat pipa. Sumber daya berikut diperlukan untuk pipeline gambar kontainer:

  • Resep kontainer ARN

  • Konfigurasi infrastruktur ARN

Jika Anda tidak menyertakan sumber daya konfigurasi distribusi saat menjalankan create-image-pipeline perintah, gambar keluaran disimpan di repositori ECR yang Anda tentukan sebagai repositori target dalam resep kontainer Anda di Wilayah tempat Anda menjalankan perintah. Jika Anda menyertakan sumber daya konfigurasi distribusi untuk pipeline Anda, repositori target yang telah Anda tentukan untuk Wilayah pertama dalam distribusi akan digunakan.

  1. Buat file JSON input CLI

    Gunakan alat pengeditan file favorit Anda untuk membuat file JSON dengan kunci berikut, ditambah nilai yang valid untuk lingkungan Anda. Contoh ini menggunakan file bernama 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" }
    catatan
    • Anda harus menyertakan notasi file:// pada awal jalur file JSON.

    • Jalur untuk file JSON harus mengikuti konvensi yang sesuai untuk sistem operasi dasar tempat Anda menjalankan perintah. Misalnya, Windows menggunakan garis miring terbalik (\) untuk merujuk ke jalur direktori, sedangkan Linux dan macOS menggunakan garis miring maju (/).

  2. Jalankan perintah berikut, menggunakan file yang Anda buat sebagai input.

    aws imagebuilder create-image-pipeline --cli-input-json file://create-image-pipeline.json
Contoh: Buat pipeline kontainer dengan pemindaian gambar dan alur kerja khusus

Contoh ini mengonfigurasi pipeline kontainer yang memeriksa setiap hari Senin pukul 10:00 UTC dan hanya berjalan saat pembaruan ketergantungan tersedia. File konfigurasi menggunakan sumber daya yang ada untuk resep dan infrastruktur kontainer. Ini memungkinkan pemindaian kerentanan dengan Amazon Inspector dan integrasi ECR. Konfigurasi juga menentukan alur kerja kustom dengan peran eksekusi. Grup paralel menjalankan tes keamanan dan fungsional secara bersamaan. Log pipa dikirim ke grup CloudWatch log kustom.

  1. Buat file konfigurasi

    Buat file JSON bernamacreate-container-pipeline-with-workflows.json. File ini mendefinisikan konfigurasi pipeline kontainer dengan pemindaian gambar diaktifkan dan alur kerja pengujian kustom. Ganti nilai placeholder dengan ARN sumber daya Anda sendiri.

    { "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" }
    catatan
    • Anda harus menyertakan notasi file:// pada awal jalur file JSON.

    • Jalur untuk file JSON harus mengikuti konvensi yang sesuai untuk sistem operasi dasar tempat Anda menjalankan perintah. Misalnya, Windows menggunakan garis miring terbalik (\) untuk merujuk ke jalur direktori, sedangkan Linux dan macOS menggunakan garis miring maju (/).

  2. Jalankan perintah
    aws imagebuilder create-image-pipeline --cli-input-json file://create-container-pipeline-with-workflows.json