Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat versi baru resep wadah
Bagian ini menunjukkan cara membuat resep wadah atau versi baru dari resep yang ada. Resep wadah mendefinisikan tiga elemen kunci: image dasar, komponen build, dan repositori target. Gunakan resep ini untuk menghasilkan gambar Docker wadah yang disimpan Image Builder di Amazon ECR.
Buat versi resep wadah baru dengan konsol
Membuat versi baru resep wadah hampir sama dengan membuat resep baru. Perbedaannya adalah bahwa detail tertentu telah dipilih sebelumnya agar sesuai dengan resep dasar, dalam banyak kasus. Daftar berikut menjelaskan perbedaan antara membuat resep baru dan membuat versi baru dari resep yang ada.
Rincian resep
-
Nama - tidak dapat diedit.
-
Versi - Diperlukan. Detail ini tidak diisi sebelumnya dengan versi saat ini atau jenis urutan apa pun. Masukkan nomor versi yang ingin Anda buat dalam format major. minor.patch. Jika versi sudah ada, Pembuat Gambar mengembalikan kesalahan.
Gambar dasar
-
Pilih opsi gambar — Pre-selected, tetapi dapat diedit. Jika Anda mengubah pilihan Anda untuk sumber gambar dasar Anda, Anda mungkin kehilangan detail lain yang bergantung pada opsi asli yang Anda pilih.
Untuk gambar Docker kontainer, Anda dapat memilih dari gambar publik yang dihosting diDockerHub, gambar kontainer yang ada di Amazon ECR, atau gambar Amazon-managed kontainer. Untuk melihat detail yang terkait dengan pemilihan gambar dasar Anda, pilih tab yang cocok dengan pilihan Anda.
Konfigurasi instans
-
Sumber AMI (Diperlukan) — Mengidentifikasi AMI khusus untuk digunakan sebagai image dasar untuk build container dan instance pengujian Anda. Ini bisa berupa ID AMI atau parameter Penyimpanan Parameter AWS Systems Manager (SSM) yang berisi ID AMI.
-
ID AMI — Pengaturan ini tidak diisi sebelumnya dengan entri asli Anda. Masukkan ID AMI untuk gambar dasar Anda. Contoh:
.ami-1234567890abcdef1 -
Parameter SSM — Masukkan nama atau ARN parameter SSM Parameter Store yang berisi ID AMI untuk gambar dasar Anda. Contoh:
atau/ib/test/paramarn:aws:ssm:.us-east-1:111122223333:parameter/ib/test/param
-
-
Penyimpanan (volume)
EBS volume 1 (Akar AMI) — Pre-filled. Anda tidak dapat mengedit volume root Nama perangkat, Snapshot, atau pilihan IOPS. Namun, Anda dapat mengubah semua pengaturan yang tersisa, seperti Ukuran. Anda juga dapat menambahkan volume baru.
catatan
Jika Anda menentukan AMI dasar yang dibagikan dengan Anda dari akun lain, snapshot untuk volume sekunder yang ditentukan juga harus dibagikan dengan akun Anda.
Direktori kerja
-
Jalur direktori kerja — Pre-filled, tetapi dapat diedit.
Komponen-komponen
Komponen — Komponen yang sudah termasuk dalam resep ditampilkan di bagian Komponen yang dipilih di akhir setiap daftar komponen (build dan test). Anda dapat menghapus atau menyusun ulang komponen yang dipilih sesuai dengan kebutuhan Anda.
Komponen pengerasan CIS tidak mengikuti aturan pemesanan komponen standar dalam resep Pembuat Gambar. Komponen pengerasan CIS selalu berjalan terakhir untuk memastikan bahwa tes benchmark berjalan terhadap gambar keluaran Anda.
catatan
Membangun dan menguji daftar komponen menampilkan komponen yang tersedia berdasarkan jenis pemilik komponen. Untuk menambahkan komponen, pilih Tambahkan komponen build, dan pilih filter kepemilikan yang berlaku. Misalnya, untuk menambahkan komponen build yang terkait dengan AWS Marketplace produk, pilih
AWS Marketplace. Ini membuka panel pilihan di sisi kanan antarmuka konsol yang mencantumkan AWS Marketplace komponen.Untuk komponen CIS, pilih
Third party managed.Anda dapat mengonfigurasi pengaturan berikut untuk komponen yang Anda pilih:
-
Opsi pembuatan versi — Pre-selected, tetapi Anda dapat mengubahnya. Sebaiknya pilih opsi Gunakan versi komponen terbaru yang tersedia untuk memastikan bahwa build gambar Anda selalu mengambil versi terbaru komponen. Jika Anda perlu menggunakan versi komponen tertentu dalam resep Anda, Anda dapat memilih Tentukan versi komponen, dan masukkan versi di kotak Versi komponen yang muncul.
-
Parameter masukan — Menampilkan parameter input yang diterima komponen. Nilai sudah diisi sebelumnya dengan nilai dari versi resep sebelumnya. Jika Anda menggunakan komponen ini untuk pertama kalinya dalam resep ini, dan nilai default ditentukan untuk parameter input, nilai default muncul di kotak Nilai dengan teks berwarna abu-abu. Jika tidak ada nilai lain yang dimasukkan, Pembuat Gambar menggunakan nilai default.
Jika parameter input diperlukan, tetapi tidak memiliki nilai default yang ditentukan dalam komponen, Anda harus memberikan nilai. Pembuat Gambar tidak akan membuat versi resep jika ada parameter yang diperlukan yang hilang dan tidak memiliki nilai default yang ditentukan.
penting
Parameter komponen adalah nilai teks biasa, dan masuk AWS CloudTrail. Kami menyarankan Anda menggunakan AWS Secrets Manager atau AWS Systems Manager Parameter Store untuk menyimpan rahasia Anda. Untuk informasi selengkapnya tentang Manajer Rahasia, lihat Apa itu Manajer Rahasia? dalam Panduan AWS Secrets Manager Pengguna. Untuk informasi selengkapnya tentang AWS Systems Manager Penyimpanan Parameter, lihat Penyimpanan AWS Systems Manager Parameter di Panduan AWS Systems Manager Pengguna.
Untuk memperluas pengaturan untuk opsi Versioning atau parameter Input, Anda dapat memilih panah di sebelah nama pengaturan. Untuk memperluas semua pengaturan untuk semua komponen yang dipilih, Anda dapat mematikan dan menghi dupkan tombol Perluas semua.
-
Templat Dockerfile
-
Template Dockerfile — Pre-filled, tetapi dapat diedit. Anda dapat menentukan salah satu variabel kontekstual berikut yang diganti Image Builder dengan informasi build saat runtime.
- ParentImage (wajib)
-
Pada waktu pembuatan, variabel ini diselesaikan ke gambar dasar untuk resep Anda.
Contoh:
FROM {{{ imagebuilder:parentImage }}} - lingkungan (diperlukan jika komponen ditentukan)
-
Pada waktu pembuatan, variabel ini diselesaikan ke arahan Dockerfile yang menempatkan komponen Anda dalam konteks build. Arahan ini menyalin skrip komponen ke dalam gambar dan mengatur variabel lingkungan yang digunakan skrip tersebut. Ini mempersiapkan lingkungan tetapi tidak menjalankan komponen yang Anda tentukan. Tempatkan variabel ini sebelum
componentsvariabel.Contoh:
{{{ imagebuilder:environments }}} - komponen (opsional)
-
Pada waktu pembuatan, variabel ini diselesaikan ke perintah yang menjalankan skrip komponen build dan test untuk komponen yang disertakan resep kontainer, dan kemudian menghapus skrip tersebut dari gambar. Ini adalah variabel yang menjalankan komponen Anda. Tempatkan setelah
environmentsvariabel.Contoh:
{{{ imagebuilder:components }}}
Repositori target
-
Nama repositori target — Repositori Amazon ECR tempat gambar keluaran Anda disimpan jika tidak ada repositori lain yang ditentukan dalam konfigurasi distribusi pipeline Anda untuk Wilayah tempat pipeline berjalan (Wilayah 1).
Untuk membuat versi resep wadah baru:
-
Pada halaman detail resep wadah, pilih Buat versi baru di bagian atas halaman. Konsol membuka halaman Buat resep untuk resep kontainer.
-
Untuk membuat versi baru, buat perubahan, lalu pilih Buat resep.
Untuk informasi selengkapnya tentang membuat resep wadah saat Anda membuat pipeline gambar, lihat Langkah 2: Pilih resep di bagian Mem ulai dari panduan ini.
Buat resep wadah dengan AWS CLI
Untuk membuat resep wadah Pembuat Gambar dengan imagebuilder
create-container-recipe perintah di AWS CLI, ikuti langkah-langkah berikut:
Prasyarat
Sebelum Anda menjalankan perintah Pembuat Gambar di bagian ini untuk membuat resep wadah dengan AWS CLI, Anda harus membuat komponen yang akan digunakan resep. Contoh resep wadah pada langkah berikut mengacu pada contoh komponen yang dibuat di Buat komponen khusus dari AWS CLI bagian panduan ini.
Setelah Anda membuat komponen, atau jika Anda menggunakan komponen yang ada, perhatikan ARN yang ingin Anda sertakan dalam resep.
-
Buat file JSON input CLI
Anda dapat memberikan semua input untuk create-container-recipe perintah dengan parameter perintah inline. Namun, perintah yang dihasilkan bisa sangat panjang. Untuk merampingkan perintah, Anda dapat menyediakan file JSON yang berisi semua pengaturan resep wadah
catatan
Konvensi penamaan untuk nilai data dalam file JSON mengikuti pola yang ditentukan untuk parameter permintaan operasi API Image Builder. Untuk meninjau parameter permintaan operasi API, lihat CreateContainerRecipe perintah di Refer ensi API EC2 Image Builder.
Untuk memberikan nilai data sebagai parameter baris perintah, lihat nama parameter yang ditentukan dalam Referensi AWS CLI Perintah.
Berikut adalah ringkasan parameter dalam contoh ini:
-
komponen (array objek, opsional) - Berisi array
ComponentConfigurationobjek. Komponen bersifat opsional untuk resep wadah. Anda dapat menyesuaikan gambar output dengan komponen BUILD, dengan instruksi di template Dockerfile Anda (misalnya,RUNatauCOPYpernyataan), atau keduanya. Komponen TEST memvalidasi gambar tetapi tidak memodifikasinya.catatan
Image Builder menginstal komponen sesuai urutan yang Anda tentukan dalam resep. Namun, komponen pengerasan CIS selalu berjalan terakhir untuk memastikan bahwa pengujian benchmark berjalan terhadap gambar keluaran Anda.
-
componentArn (string, wajib) — Komponen ARN.
Tip
Untuk menggunakan contoh untuk membuat resep wadah Anda sendiri, ganti contoh ARN dengan ARN untuk komponen yang Anda gunakan untuk resep Anda,. Ini termasuk Wilayah AWS, nama, dan nomor versi untuk masing-masing.
parameter (array objek) - Berisi array
ComponentParameterobjek. Jika parameter input diperlukan, tetapi tidak memiliki nilai default yang ditentukan dalam komponen, Anda harus memberikan nilai. Pembuat Gambar tidak akan membuat versi resep jika ada parameter yang diperlukan yang hilang dan tidak memiliki nilai default yang ditentukan.penting
Parameter komponen adalah nilai teks biasa, dan masuk AWS CloudTrail. Kami menyarankan Anda menggunakan AWS Secrets Manager atau AWS Systems Manager Parameter Store untuk menyimpan rahasia Anda. Untuk informasi selengkapnya tentang Manajer Rahasia, lihat Apa itu Manajer Rahasia? dalam Panduan AWS Secrets Manager Pengguna. Untuk informasi selengkapnya tentang AWS Systems Manager Penyimpanan Parameter, lihat Penyimpanan AWS Systems Manager Parameter di Panduan AWS Systems Manager Pengguna.
-
name (string, required) — Nama parameter komponen yang akan disetel.
-
value (array of strings, required) — Berisi array string untuk mengatur nilai parameter komponen bernama. Jika ada nilai default yang ditentukan untuk komponen, dan tidak ada nilai lain yang disediakan, AWSTOE menggunakan nilai default.
-
-
-
ContainerType (string, required) — Jenis wadah yang akan dibuat. Nilai yang valid termasuk
DOCKER. -
dockerfile TemplateData (string) - Template Dockerfile inline untuk membangun gambar Anda. Data inline dibatasi hingga 16.000 karakter. Anda dapat menentukan
dockerfileTemplateDataataudockerfileTemplateUri, tetapi bukan keduanya.Template Dockerfile Anda dapat menyertakan variabel kontekstual (placeholder yang diganti Image Builder dengan informasi build saat runtime). Sertakan setidaknya
parentImagevariabel. Jika resep Anda termasuk komponen, sertakan jugaenvironmentsvariabel dancomponentsvariabel.- ParentImage (wajib)
-
Pada waktu pembuatan, variabel ini diselesaikan ke gambar dasar untuk resep Anda.
Contoh:
FROM {{{ imagebuilder:parentImage }}} - lingkungan (diperlukan jika komponen ditentukan)
-
Pada waktu pembuatan, variabel ini diselesaikan ke arahan Dockerfile yang menempatkan komponen Anda dalam konteks build. Arahan ini menyalin skrip komponen ke dalam gambar dan mengatur variabel lingkungan yang digunakan skrip tersebut. Ini mempersiapkan lingkungan tetapi tidak menjalankan komponen yang Anda tentukan. Tempatkan variabel ini sebelum
componentsvariabel.Contoh:
{{{ imagebuilder:environments }}} - komponen (opsional)
-
Pada waktu pembuatan, variabel ini diselesaikan ke perintah yang menjalankan skrip komponen build dan test untuk komponen yang disertakan resep kontainer, dan kemudian menghapus skrip tersebut dari gambar. Ini adalah variabel yang menjalankan komponen Anda. Tempatkan setelah
environmentsvariabel.Contoh:
{{{ imagebuilder:components }}}
Untuk menyimpan template di Amazon S3 sebagai gantinya, gunakan TemplateUri parameter dockerfile dengan URI Amazon S3 yang valid (misalnya,
s3://).my-bucket/templates/Dockerfile -
name (string, required) — Nama resep wadah.
-
description (string) — Deskripsi resep wadah.
-
ParentImage (string, required) — Gambar Docker wadah yang akan digunakan dalam resep wadah sebagai garis dasar untuk gambar yang disesuaikan.
-
Gambar publik dihosting di DockerHub
-
Gambar kontainer yang ada di Amazon ECR
-
Amazon-managed gambar kontainer
-
-
platformOverride (string) — Menentukan platform sistem operasi saat Anda menggunakan image dasar kustom. Kami menyarankan Anda menetapkan nilai ini saat Anda menggunakan gambar ECR Docker Hub atau Amazon. Jika Anda menghilangkannya, Image Builder mencoba mendeteksi platform dari manifes kontainer, yang mungkin tidak selalu tersedia. Anda tidak dapat menentukan
platformOverridekapan gambar induk Anda adalah gambar Pembuat Gambar ARN. Nilai yang valid adalahLinuxdanWindows. Resep kontainer tidak mendukung platform macOS. -
<major>SemanticVersion (string, wajib) — Versi semantik dari resep wadah ditentukan dalam format berikut, dengan nilai numerik di setiap posisi untuk menunjukkan versi tertentu:. <minor>. <patch>. Sebuah contoh akan
1.0.0. Untuk mempelajari selengkapnya tentang pembuatan versi semantik untuk sumber daya Pembuat Gambar, lihatPembuatan versi semantik di Image Builder. -
tag (string map) — Tag yang dilampirkan pada resep wadah.
-
instanceConfiguration (object) — Sekelompok opsi yang dapat digunakan untuk mengkonfigurasi instance untuk membangun dan menguji gambar kontainer.
-
image (string) — Gambar dasar untuk instance build dan test container. Ini dapat berisi ID AMI atau dapat menentukan parameter Penyimpanan Parameter AWS Systems Manager (SSM), diawali dengan
ssm:, diikuti oleh nama parameter atau ARN. Jika Anda menggunakan parameter SSM, nilai parameter harus berisi ID AMI. Jika Anda tidak menentukan gambar dasar, Pembuat Gambar menggunakan AMI yang dioptimalkan Amazon ECS yang sesuai sebagai gambar dasar. -
blok DeviceMappings (array objek) - Mendefinisikan perangkat blok yang akan dilampirkan untuk membangun instance dari AMI Pembuat Gambar yang ditentukan dalam image parameter.
-
DeviceName (string) — Perangkat yang diterapkan pemetaan ini.
-
ebs (objek) - Digunakan untuk mengelola konfigurasi khusus Amazon EBS untuk pemetaan ini.
-
delete OnTermination (Boolean) — Digunakan untuk mengkonfigurasi hapus pada penghentian perangkat terkait.
-
terenkripsi (Boolean) - Digunakan untuk mengkonfigurasi enkripsi perangkat.
-
VolumeSize (integer) - Digunakan untuk mengganti ukuran volume perangkat.
-
VolumeType (string) — Digunakan untuk mengganti jenis volume perangkat.
-
-
-
-
targetRepository (objek, wajib) — Repositori tujuan untuk image kontainer jika tidak ada repositori lain yang ditentukan dalam konfigurasi distribusi pipeline Anda untuk Wilayah tempat pipeline berjalan (Wilayah 1).
-
RepositoryName (string, required) — Nama repositori wadah tempat gambar kontainer keluaran disimpan. Nama ini diawali dengan lokasi repositori.
-
service (string, required) — Menentukan layanan repositori yang menyimpan gambar output. Nilai yang valid adalah
ECR. Repositori target harus sudah ada.
-
-
WorkingDirectory (string) — Direktori kerja untuk digunakan selama alur kerja build dan pengujian.
Contoh berikut menunjukkan file input resep kontainer lengkap yang mendefinisikan Docker wadah Linux dengan komponen build. Simpan sebagai
create-container-recipe.json, dan gunakan dalam create-container-recipe perintah.{ "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:111122223333:component/helloworldal2/x.x.x" } ], "containerType": "DOCKER", "description": "My Linux Docker container image", "dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}", "name": "amazonlinux-container-recipe", "parentImage": "amazonlinux:latest", "platformOverride": "Linux", "semanticVersion": "1.0.2", "tags": { "sometag" : "Tag detail" }, "instanceConfiguration": { "image": "ami-1234567890abcdef1", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" } -
-
Buat resepnya
Gunakan perintah berikut untuk membuat resep. Berikan nama file JSON yang Anda buat pada langkah sebelumnya dalam
--cli-input-jsonparameter:aws imagebuilder create-container-recipe --cli-input-json file://create-container-recipe.jsoncatatan
-
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, sementara Linux dan macOS menggunakan garis miring maju (/).
Contoh output berikut menunjukkan ARN resep kontainer yang baru dibuat, bersama dengan ID permintaan dan token klien untuk permintaan tersebut.
{ "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "clientToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "containerRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-container-recipe/1.0.2" } -
Kendala resep kontainer
Tinjau batasan berikut sebelum Anda membuat resep kontainer:
-
Anda harus menentukan repositori Amazon ECR target yang sudah ada.
-
AWS Marketplace komponen tidak didukung dalam resep wadah.
-
Komponen bersifat opsional. Anda dapat menyesuaikan gambar output dengan komponen BUILD, dengan instruksi di template Dockerfile Anda (misalnya,
RUNatauCOPYpernyataan), atau keduanya. Komponen TEST memvalidasi gambar tetapi tidak memodifikasinya. -
Resep kontainer tidak mendukung platform macOS.
-
Untuk template Dockerfile, berikan data sebaris (hingga 16.000 karakter) atau URI Amazon S3. Anda tidak dapat menentukan keduanya.
-
Ukuran resep kumulatif tidak boleh melebihi 25 KB. Jika Anda menerima kesalahan ukuran, kurangi jumlah parameter komponen atau persingkat nilai parameter. Batas ini terpisah dari batas ukuran template Dockerfile.
-
Ketika Anda mengatur
platformOverridekeWindows, Anda juga harus menentukanimageOsVersionOverride. Ini berlaku untuk gambar induk non-Image Builder, seperti gambar Amazon ECR atau Docker Hub gambar.
Kesalahan umum dan pemecahan masalah
Tabel berikut mencantumkan kesalahan umum yang mungkin Anda temui saat membuat resep kontainer, bersama dengan cara mengatasinya.
| Kesalahan | Penyebab | Resolusi |
|---|---|---|
| “Resep Kontainer tidak boleh mengandung komponen pasar” | AWS Marketplace Komponen dalam resep wadah. | Gunakan hanya non-AWS Marketplace komponen. |
| “Resep kontainer saat ini tidak mendukung platform macOS” | platformOverridediatur ke MacOS. |
Gunakan Linux atauWindows. |
| “Anda harus menentukan dockerfile TemplateData atau dockerfile” TemplateUri | Anda menentukan keduanya atau tidak keduanya. | Berikan tepat satu. |
| “URI S3 tidak valid” | Jalur Amazon S3 yang salah format didockerfileTemplateUri. |
Gunakan format s3://. |
| “Anda tidak dapat menentukan penggantian platform saat menggunakan Image Builder Image sebagai induk Anda” | platformOverridedengan gambar Image Builder ARN. |
Hapus platformOverride. Image Builder mendeteksi platform dari metadata gambar induk. |
| “Anda harus menentukan penggantian gambar OsVersion saat menggunakan Repositori ECR sebagai gambar induk Anda untuk Platform Windows” | Windows platformOverride tanpa versi OS. |
Tambahkan imageOsVersionOverride bidang. |