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 sudah ada. Resep kontainer mendefinisikan tiga elemen kunci: image dasar, komponen build, dan repositori target. Gunakan resep ini untuk menghasilkan gambar Docker kontainer 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 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 sudah ada.
Detail 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, Image Builder 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 dihostingDockerHub, 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) — Identifikasi AMI kustom 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 menetapkan AMI dasar yang dibagikan dengan Anda dari akun lain, snapshot untuk volume sekunder apa pun yang ditentukan juga harus dibagikan dengan akun Anda.
Direktori kerja
-
Jalur direktori kerja — Pre-filled, tetapi dapat diedit.
Komponen
Komponen — Komponen yang sudah disertakan 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 Image Builder. Komponen pengerasan CIS selalu berjalan terakhir untuk memastikan bahwa tes benchmark berjalan terhadap gambar keluaran Anda.
catatan
Daftar komponen build dan test menampilkan komponen yang tersedia berdasarkan tipe 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 managedAnda dapat mengonfigurasi pengaturan berikut untuk komponen yang Anda pilih:
-
Opsi pembuatan versi — Pre-selected, tetapi Anda dapat mengubahnya. Kami menyarankan Anda memilih opsi Gunakan versi komponen terbaru yang tersedia untuk memastikan bahwa build gambar Anda selalu mengambil versi terbaru dari komponen tersebut. Jika Anda perlu menggunakan versi komponen tertentu dalam resep Anda, Anda dapat memilih Tentukan versi komponen, dan masukkan versi dalam kotak Versi komponen yang muncul.
-
Parameter input - 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, Image Builder menggunakan nilai default.
Jika parameter input diperlukan, tetapi tidak memiliki nilai default yang ditentukan dalam komponen, Anda harus memberikan nilai. Image Builder 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 Secrets Manager, lihat Apa itu Secrets Manager? dalam AWS Secrets Manager User Guide. Untuk informasi selengkapnya tentang AWS Systems Manager Parameter Store, lihat AWS Systems Manager Parameter Menyimpan di Panduan AWS Systems Manager Pengguna.
Untuk memperluas pengaturan untuk opsi Pembuatan versi atau Parameter input, Anda dapat memilih panah di sebelah nama pengaturan. Untuk memperluas semua pengaturan untuk semua komponen yang dipilih, Anda dapat mengaktifkan tombol Expand all off and on.
-
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 menyelesaikan gambar dasar untuk resep Anda.
Contoh:
FROM {{{ imagebuilder:parentImage }}} - lingkungan (diperlukan jika komponen ditentukan)
-
Pada waktu pembuatan, variabel ini menyelesaikan arahan Dockerfile yang mementaskan 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 menyelesaikan perintah yang menjalankan skrip komponen build dan test untuk komponen yang disertakan dalam resep container, lalu menghapus skrip tersebut dari image. Ini adalah variabel yang menjalankan komponen Anda. Tempatkan setelah
environmentsvariabel.Contoh:
{{{ imagebuilder:components }}}
Repositori target
-
Nama repositori target - Repositori Amazon ECR tempat image keluaran Anda disimpan jika tidak ada repositori lain yang ditentukan dalam konfigurasi distribusi pipeline untuk Wilayah tempat pipeline berjalan (Wilayah 1).
Untuk membuat versi resep kontainer baru:
-
Pada halaman detail resep kontainer, pilih Buat versi baru di bagian atas halaman. Konsol membuka halaman Buat resep untuk resep wadah.
-
Untuk membuat versi baru, buat perubahan, lalu pilih Buat resep.
Untuk informasi selengkapnya tentang membuat resep kontainer saat Anda membuat pipeline gambar, lihat Langkah 2: Pilih resep di bagian Memulai panduan ini.
Buat resep wadah dengan AWS CLI
Untuk membuat resep kontainer Image Builder dengan imagebuilder
create-container-recipe perintah di AWS CLI, ikuti langkah-langkah berikut:
Prasyarat
Sebelum Anda menjalankan perintah Image Builder di bagian ini untuk membuat resep kontainer 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 Anda, 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 Image Builder API. Untuk meninjau parameter permintaan operasi API, lihat CreateContainerRecipeperintah di Referensi 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 adalah opsional untuk resep wadah. Anda dapat menyesuaikan gambar keluaran 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 dalam urutan yang Anda tentukan dalam resep. Namun, komponen pengerasan CIS selalu berjalan terakhir untuk memastikan bahwa tes benchmark berjalan terhadap gambar keluaran Anda.
-
ComponentARN (string, diperlukan) — 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. Image Builder 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 Secrets Manager, lihat Apa itu Secrets Manager? dalam AWS Secrets Manager User Guide. Untuk informasi selengkapnya tentang AWS Systems Manager Parameter Store, lihat AWS Systems Manager Parameter Menyimpan di Panduan AWS Systems Manager Pengguna.
-
name (string, required) — Nama parameter komponen yang akan ditetapkan.
-
value (array string, required) — Berisi array string untuk mengatur nilai untuk parameter komponen bernama. Jika ada nilai default yang ditentukan untuk komponen, dan tidak ada nilai lain yang disediakan, AWSTOE gunakan nilai default.
-
-
-
ContainerType (string, required) - Jenis wadah untuk membuat. 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 menyertakan komponen, sertakan jugaenvironmentsvariabel dancomponentsvariabelnya.- ParentImage (wajib)
-
Pada waktu pembuatan, variabel ini menyelesaikan gambar dasar untuk resep Anda.
Contoh:
FROM {{{ imagebuilder:parentImage }}} - lingkungan (diperlukan jika komponen ditentukan)
-
Pada waktu pembuatan, variabel ini menyelesaikan arahan Dockerfile yang mementaskan 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 menyelesaikan perintah yang menjalankan skrip komponen build dan test untuk komponen yang disertakan dalam resep container, lalu menghapus skrip tersebut dari image. 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 -
nama (string, wajib) — Nama resep wadah.
-
deskripsi (string) — Deskripsi resep wadah.
-
ParentImage (string, required) - Gambar Docker kontainer yang akan digunakan dalam resep wadah sebagai dasar untuk gambar khusus Anda.
-
Gambar publik dihosting di DockerHub
-
Gambar kontainer yang ada di Amazon ECR
-
Amazon-managed gambar kontainer
-
-
PlatforMoverride (string) - Menentukan platform sistem operasi ketika Anda menggunakan gambar 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 container, yang mungkin tidak selalu tersedia. Anda tidak dapat menentukan
platformOverridekapan gambar induk Anda adalah ARN image Builder Image Builder. Nilai yang valid adalahLinuxdanWindows. Resep kontainer tidak mendukung platform macOS. -
SemanticVersion <major>(string, required) - Versi semantik dari resep kontainer yang ditentukan dalam format berikut, dengan nilai numerik di setiap posisi untuk menunjukkan versi tertentu:. <minor>. <patch>. Sebuah contoh akan
1.0.0. Untuk mempelajari lebih lanjut tentang pembuatan versi semantik untuk sumber daya Image Builder, lihat. Pembuatan versi semantik di Image Builder -
tag (peta string) — Tag yang dilampirkan pada resep wadah.
-
InstanceConfiguration (object) - Sekelompok opsi yang dapat digunakan untuk mengonfigurasi instance untuk membangun dan menguji gambar kontainer.
-
image (string) - Gambar dasar untuk container build dan test instance. Ini dapat berisi ID AMI atau dapat menentukan parameter Parameter Store AWS Systems Manager (SSM), diawali oleh
ssm:, diikuti oleh nama parameter atau ARN. Jika Anda menggunakan parameter SSM, nilai parameter harus berisi ID AMI. Jika Anda tidak menentukan gambar dasar, Image Builder menggunakan AMI yang dioptimalkan Amazon ECS yang sesuai sebagai gambar dasar. -
block DeviceMappings (array of objects) — Mendefinisikan perangkat blok yang akan dilampirkan untuk membangun instance dari Image Builder AMI yang ditentukan dalam image parameter.
-
DeviceName (string) - Perangkat yang diterapkan pemetaan ini.
-
ebs (object) - Digunakan untuk mengelola konfigurasi khusus Amazon EBS untuk pemetaan ini.
-
delete OnTermination (Boolean) - Digunakan untuk mengkonfigurasi penghapusan pada penghentian perangkat terkait.
-
dienkripsi (Boolean) - Digunakan untuk mengkonfigurasi enkripsi perangkat.
-
VolumeSize (integer) - Digunakan untuk mengganti ukuran volume perangkat.
-
VolumeType (string) - Digunakan untuk mengganti jenis volume perangkat.
-
-
-
-
TargetRepository (object, required) - Repositori tujuan untuk image container jika tidak ada repositori lain yang ditentukan dalam konfigurasi distribusi pipeline Anda untuk Wilayah tempat pipeline berjalan (Wilayah 1).
-
RepositoryName (string, required) - Nama repositori kontainer tempat gambar kontainer output 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, sedangkan Linux dan macOS menggunakan garis miring maju (/).
Contoh output berikut menunjukkan ARN dari 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 wadah
Tinjau kendala berikut sebelum Anda membuat resep wadah:
-
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 keluaran 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 semua gambar induk Non-Image Builder, seperti gambar Amazon ECR atau gambar. Docker Hub
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 AWS Marketplace non-komponen. |
| “Resep wadah 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. | Berikan tepat satu. |
| “URI S3 tidak valid” | Jalur Amazon S3 yang cacat di. dockerfileTemplateUri |
Gunakan format s3://. |
| “Anda tidak dapat menentukan penggantian platform saat menggunakan Image Builder Image sebagai orang tua Anda” | platformOverridedengan gambar Image Builder ARN. |
Hapus platformOverride. Image Builder mendeteksi platform dari metadata gambar induk. |
| “Anda harus menentukan OsVersion penggantian gambar saat menggunakan Repositori ECR sebagai gambar induk Anda untuk Windows Platform” | Windows platformOverride tanpa versi OS. |
Tambahkan imageOsVersionOverride bidang. |