

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

# Gambar MicroVM
<a name="microvms-images"></a>

Bagian ini menjelaskan cara membuat, mengonfigurasi, memperbarui, dan mengelola gambar microVM.

Gambar microVM adalah sumber daya yang mendefinisikan sistem file dan lingkungan aplikasi microVM. Gambar microVM mencakup lingkungan runtime Anda, kode aplikasi, dan program pendukung seperti proses latar belakang dan agen observabilitas. Untuk membuat gambar microVM, Anda menyediakan paket zip yang berisi artefak `Dockerfile` dan aplikasi Anda, yang Anda unggah ke Amazon S3. Anda `Dockerfile` menentukan bagaimana aplikasi Anda dikemas. Lambda membangun image container aplikasi Anda dengan menjalankan `Dockerfile` di atas lingkungan sistem operasi yang disediakan oleh image dasar Lambda-managed microVM. Gambar dasar MicroVM dijelaskan di bawah ini, di bagian berjudul —. [Gambar dasar MicroVM](#microvms-images-base-images)

Anda dapat memperbarui gambar dasar microVM Anda untuk memperbarui kode aplikasi atau konfigurasi untuk microVMS Anda. Setiap pembaruan yang Anda picu membuat versi gambar microVM baru.

## Bagaimana Lambda membangun gambar microVM
<a name="microvms-images-creating"></a>

Saat Anda membuat gambar MicroVM, Lambda:
+ Mengambil artefak paket Anda dari Amazon S3.
+ Memulai microVM baru dari gambar Lambda-managed dasar.
+ Jalankan instruksi di Anda`Dockerfile`.
+ Meluncurkan aplikasi Anda menggunakan `CMD` instruksi `ENTRYPOINT` atau.
+ Menunggu inisialisasi selesai, ditandai oleh kait siklus hidup Anda.
+ Menangkap snapshot dari disk dan status memori.

Setelah proses snapshot selesai, gambar microVM Anda memasuki status. `CREATED` Anda sekarang dapat menggunakan gambar microVM ini untuk membuat microVM, dan setiap gambar microVM dapat digunakan untuk membuat beberapa microVM independen. MicroVM yang dijalankan dari gambar microVM dilanjutkan langsung dari status snapshotted, memberikan waktu startup yang cepat. Setiap gambar microVM dapat digunakan untuk menjalankan beberapa microVM, hingga batas yang tersedia untuk akun Anda.

Untuk panduan langkah demi langkah dalam mengemas kode Anda dan membuat gambar microVM pertama Anda, lihat. [Buat microVM pertama Anda](microvms-getting-started.md)

## Ukuran MicroVM
<a name="microvms-images-sizing"></a>

MicroVMS Lambda menggunakan model puncak dasar yang menghilangkan kebutuhan untuk mengukur dengan tepat setiap lingkungan komputasi untuk aktivitas puncak. Anda mengonfigurasi sumber daya komputasi dasar untuk microVM Anda. Selama aktivitas puncak, microVM Anda dapat secara otomatis menskalakan secara vertikal hingga 4x baseline. Anda membayar tarif dasar saat microVM Anda berjalan dan hanya membayar untuk apa yang Anda gunakan secara aktif di atas baseline, ditagih per detik.

Anda mengatur baseline melalui `memory` parameter saat membuat gambar microVM Anda. skala vCPU proporsional dengan memori (2 GB = 1 vCPU). Garis dasar default adalah 2 GB/1 vCPU.

Tabel berikut mencantumkan ukuran yang tersedia:


| Baseline | Puncak | Ruang Disk Maks | 
| --- | --- | --- | 
| Memori 0,5 GB, 0,25 vCPU | Memori 2 GB, 1 vCPU | 8 GB | 
| Memori 1 GB, 0,5 vCPU | Memori 4 GB, 2 vCPU | 8 GB | 
| Memori 2 GB, 1 vCPU (default) | Memori 8 GB, 4 vCPU | 8 GB | 
| Memori 4 GB, 2 vCPU | Memori 16 GB, 8 vCPU | 16 GB | 
| Memori 8 GB, 4 vCPU | Memori 32 GB, 16 vCPU | 32 GB | 

## Gambar dasar MicroVM
<a name="microvms-images-base-images"></a>

Gambar dasar microVM berfungsi sebagai dasar untuk gambar microVM Anda. Lambda menerbitkan gambar dasar microVM yang menyediakan sistem operasi Amazon Linux 2023 dan komponen layanan yang diperlukan untuk menjalankan microVMS. Saat Anda membuat atau memperbarui gambar microVM, Lambda memulai microVM baru dari gambar dasar ini dan menjalankan `Dockerfile` instruksi Anda dalam lingkungan sistem operasi ini.

Lambda secara berkala merilis versi baru gambar dasar microVM yang dikelola layanan, seperti saat menerapkan patch keamanan, untuk memperbarui sistem operasi atau komponen layanan. Secara default, versi terbaru dari gambar dasar yang dikelola layanan berlaku ketika Anda adalah gambar microVM creating/updating Anda sendiri. Untuk pemecahan masalah atau debugging, Anda dapat mengganti versi gambar berbasis yang dikelola layanan secara opsional saat membuat gambar microVM Anda sendiri menggunakan parameter. `base-image-version`

Versi gambar dasar mengikuti siklus hidup penghentian:
+ **`AVAILABLE`**- Saat ini, direkomendasikan untuk digunakan.
+ **`DEPRECATED`**(60 hari) - Versi yang lebih baru ada. Anda masih bisa membangun dan menjalankan.
+ **`EXPIRING`**(30 hari) - Tidak dapat membuat gambar baru. Gambar yang ada masih bisa berjalan.
+ **`EXPIRED`**— Tidak dapat membangun atau menjalankan. Bangun kembali gambar Anda pada versi yang didukung.
+ **`RECALLED`**— Segera tidak tersedia karena masalah keamanan kritis (jarang).

Agar tetap terkini, pantau notifikasi penghentian dan buat kembali gambar microVM Anda saat versi gambar dasar baru dirilis.

Perhatikan bahwa gambar dasar microVM berbeda dari gambar dasar wadah yang Anda tentukan di Dockerfiles Anda. Sementara yang pertama mendefinisikan lingkungan sistem operasi untuk microVMS Anda, yang terakhir mendefinisikan image container dasar mana yang akan digunakan saat mengemas aplikasi Anda untuk digunakan dengan Lambda MicroVMS. Lihat bagian di [Gambar dasar kontainer](#microvms-images-container-base) untuk lebih detailnya.

Gunakan API berikut untuk menemukan gambar dasar microVM terkelola yang tersedia dan versinya:

```
# List all managed MicroVM base images
aws lambda-microvms list-managed-microvm-images

# List the versions of a specific managed MicroVM base image
aws lambda-microvms list-managed-microvm-image-versions \
  --image-identifier arn:aws:lambda:{{us-east-1}}:aws:microvm-image:al2023-1
```

## Kait pembuatan gambar MicroVM
<a name="microvms-images-build-hooks"></a>

Lambda menyediakan kait pembuatan gambar microVM yang memungkinkan Anda memverifikasi kebenaran aplikasi dan mengoptimalkan kinerja selama pembuatan gambar MicroVM. Hooks berjalan sebelum Lambda mengambil snapshot yang digunakan untuk menginisialisasi setiap microVM. Setiap hook adalah titik akhir HTTP yang diekspos aplikasi Anda dan yang dipanggil Lambda selama pembuatan. Dengan menanggapi permintaan ini, Anda mengontrol dan memvalidasi proses pembuatan image microVM. Lambda menggunakan kode Status HTTP untuk menentukan apakah kait berhasil diselesaikan.

**penting**  
Jika Anda mengonfigurasi kait apa pun, Anda harus menentukan port yang didengarkan aplikasi Anda untuk permintaan kait.


| Kait | Jalan | Detail | Kode Status HTTP | Waktu habis | 
| --- | --- | --- | --- | --- | 
| /Siap | /aws/lambda-microvms/runtime/v1/ready | Dipanggil selama pembuatan image microVM, setelah aplikasi Anda dimulai melalui ENTRYPOINT atau. CMD Sinyal bahwa aplikasi Anda siap untuk di-snapshot. | HTTP 503: Belum siap; Lambda mencoba lagi hingga batas waktu. HTTP 200: Inisialisasi selesai; Lambda mengambil snapshot. | 1—3600 detik () readyTimeoutInSeconds | 
| /memvalidasi | /aws/lambda-microvms/runtime/v1/validate | Dipanggil setelah build selesai, pada microVM baru dimulai dari gambar yang dibuat. Mengonfirmasi aplikasi berfungsi dengan benar saat dilanjutkan. | HTTP 503: Validasi membutuhkan lebih banyak waktu untuk diselesaikan; Lambda mencoba lagi hingga batas waktu. HTTP 200: Validasi berlalu. | 1—3600 detik () validateTimeoutInSeconds | 

**penting**  
Saat mengembalikan HTTP 503, kembalikan segera daripada menahan permintaan terbuka saat Anda menunggu. Jika batas waktu berlalu saat permintaan dibuka, Lambda mengakhiri build.

**catatan**  
Anda juga dapat menggunakan hook /validate untuk mengoptimalkan waktu startup. Untuk melakukannya, jalankan muatan tiruan selama validasi. Hal ini memungkinkan Lambda untuk melacak wilayah yang diakses dari snapshot Anda dan mengoptimalkan pengambilannya selama startup microVM.

## Memperbarui gambar microVM
<a name="microvms-images-updating"></a>

Anda dapat memperbarui gambar microVM yang ada dengan memanggil API. `update-microvm-image` Setiap pembaruan memicu pembuatan versi gambar microVM baru. Anda biasanya memperbarui gambar microVM ke:
+ **Menyebarkan kode aplikasi baru** — Arahkan ke artefak kode baru (zip baru yang diunggah ke Amazon S3) untuk mengirimkan versi baru aplikasi Anda.
+ **Pindah ke gambar dasar microVM yang lebih baru — Ubah ARN gambar dasar** microVM untuk meningkatkan ke versi yang lebih baru dari gambar dasar MicroVM Lambda. Untuk informasi lebih lanjut, lihat [Penambalan gambar MicroVM](#microvms-images-patching) dan[Gambar dasar MicroVM](#microvms-images-base-images).
+ **Ubah peran build — Perbarui** ARN peran build saat izin yang dibutuhkan Lambda selama perubahan build, seperti saat artefak kode dipindahkan ke bucket Amazon S3 yang berbeda atau Anda mulai menarik dari repositori ECR pribadi.
+ **Sesuaikan konfigurasi runtime** — Ubah kait, variabel lingkungan, atau kemampuan untuk mengonfigurasi ulang cara image microVM Anda dibuat dan dijalankan.
+ **Perbarui deskripsi** - Ubah deskripsi gambar microVM untuk merekam apa yang berubah dalam versi ini.

Perintah CLI berikut menunjukkan bagaimana Anda dapat memperbarui gambar microVM. `--build-role-arn`Parameter `--base-image-arn` dan diperlukan pada setiap `update-microvm-image` panggilan yang memicu build baru, bahkan ketika Anda hanya mengubah artefak kode — menghilangkannya menghasilkan: `ValidationException`

```
aws lambda-microvms update-microvm-image \
  --image-identifier {{arn:aws:lambda:us-east-1:123456789012:microvm-image:my-microvm-image}} \
  --code-artifact uri=s3://my-bucket/deployments/app-v2.zip \
  --base-image-arn arn:aws:lambda:{{us-east-1}}:aws:microvm-image:al2023-1 \
  --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole \
  --description "Updated with v2 application code"
```

## Status gambar dan status bangunan
<a name="microvms-images-states"></a>

Setiap kali Anda membuat atau memperbarui gambar microVM, Lambda menghasilkan **versi** baru yang dibuat dari artefak kode dan gambar dasar Anda. Gambar microVM dapat memiliki banyak versi dari waktu ke waktu, dan Anda menjalankan microVMS dari versi tertentu.

Tiga negara independen melacak berbagai aspek siklus hidup:
+ **Status gambar** — siklus hidup keseluruhan sumber daya gambar microVM (sedang dibuat, siap digunakan, diperbarui, gagal, atau dihapus).
+ **Status versi** — kemajuan pembuatan versi tertentu (tertunda, membangun, berhasil, atau gagal). Periksa `stateReason` atau CloudWatch log (`/aws/lambda/microvms/<image-name>`) untuk rincian kegagalan.
+ **Aktivasi versi** — apakah versi yang berhasil dibangun diizinkan untuk menjalankan microVMS. Lambda menetapkan versi baru secara `ACTIVE` otomatis; Anda dapat mengatur versi `INACTIVE` untuk menonaktifkannya tanpa menghapusnya.


| Status | Kemungkinan nilai | Transisi dikendalikan oleh | 
| --- | --- | --- | 
| Status gambar | CREATING, CREATED, CREATION\_FAILED, UPDATING, UPDATED, UPDATE\_FAILED, DELETING, DELETED, DELETION\_FAILED | Lambda (otomatis) | 
| Status versi | PENDING, IN\_PROGRESS, SUCCESSFUL, FAILED | Lambda (otomatis) | 
| Aktivasi versi | ACTIVE, INACTIVE | Anda (update-microvm-image-version --state) | 

Untuk menjalankan microVM dari versi, status gambar harus `CREATED` atau`UPDATED`, status versi harus`SUCCESSFUL`, dan versi harus. `ACTIVE`

**catatan**  
Negara-negara ini independen. Gambar di `CREATED` negara bagian dapat berisi versi yang statusnya`FAILED`.

```
# De-activate a version
aws lambda-microvms update-microvm-image-version \
  --image-identifier my-image \
  --image-version 1.0 \
  --state INACTIVE
```

## Variabel-variabel lingkungan
<a name="microvms-images-env-vars"></a>

Variabel lingkungan diatur pada waktu pembuatan gambar microVM melalui `environmentVariables` bidang (maksimum 50 variabel). Ini disuntikkan ke dalam wadah selama proses pembuatan snapshot. Anda dapat meneruskan muatan yang disetel secara dinamis saat menjalankan microVM baru. Lihat bagian tentang menjalankan microVM Anda untuk mempelajari lebih lanjut.

## Penambalan gambar MicroVM
<a name="microvms-images-patching"></a>

Ketika ada gambar dasar microVM baru yang tersedia, Anda dapat mengeluarkan `update-microvm-image` panggilan untuk memicu pembuatan gambar microVM dengan tambalan terbaru — baik menghilangkan `base-image-version` argumen (untuk yang terbaru) atau menentukan argumen dengan versi terbaru.

## Gambar dasar kontainer
<a name="microvms-images-container-base"></a>

Lambda MicroVMS menjalankan aplikasi Anda sebagai wadah dalam lingkungan sistem operasi microVM. Anda mendefinisikan kontainer itu dengan `Dockerfile` milik Anda, dan `FROM` instruksi dalam Anda `Dockerfile` menetapkan *gambar dasar kontainer* untuk aplikasi Anda.

Anda dapat memulai dengan gambar wadah dasar Lambda untuk Amazon Linux 2023 (`public.ecr.aws/lambda/microvms:al2023-minimal`) dan menambahkan `Dockerfile` instruksi Anda di atasnya, atau menggunakan gambar wadah dasar Anda sendiri. Saat menggunakan gambar kontainer Anda sendiri, validasi persyaratan berikut:

### Persyaratan
<a name="microvms-images-container-base-requirements"></a>
+ Gambar dasar kontainer harus kompatibel dengan arsitektur CPU target.
+ Gambar dasar kontainer dari repositori AWS ECR pribadi memerlukan peran build dan izin. `ecr:GetAuthorizationToken` `ecr:BatchGetImage`
+ Gambar dasar kontainer harus didasarkan pada sistem operasi Linux.
+ Gambar dasar kontainer harus dapat diakses dari infrastruktur build Lambda (internet publik atau repositori ECR di akun yang sama). AWS 
+ Gambar dasar kontainer harus kompatibel dengan snapshot, lihat instruksi di bawah ini.

### Snapshot-compatible gambar dasar
<a name="microvms-images-container-base-snapshot-compat"></a>

Saat Lambda MicroVMS memulai setiap microVM dari snapshot yang telah diinisialisasi sebelumnya, gambar dasar harus kompatibel dengan snapshot. Kami merekomendasikan untuk meninjau bagian [Pertimbangan kompatibilitas](microvms-images-snapshots.md#microvms-images-snapshots-compatibility) saat menggunakan gambar dasar Anda sendiri dengan MicroVMS Lambda.

### Menggunakan gambar ECR pribadi
<a name="microvms-images-container-base-private"></a>

Referensikan gambar dasar wadah ECR pribadi Anda dalam `FROM` instruksi Anda`Dockerfile`:

```
FROM 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-base:latest
WORKDIR /app
COPY . .
CMD ["./my-app"]
```

Tambahkan izin berikut ke peran build Anda:

```
{
  "Effect": "Allow",
  "Action": [
    "ecr:GetAuthorizationToken",
    "ecr:BatchCheckLayerAvailability",
    "ecr:GetDownloadUrlForLayer",
    "ecr:BatchGetImage"
  ],
  "Resource": "*"
}
```

## Kemampuan sistem operasi
<a name="microvms-images-os-capabilities"></a>

Secara default, Lambda MicroVMS berjalan dengan seperangkat standar kemampuan Linux. Anda dapat memberikan kemampuan Linux yang ditingkatkan menggunakan `additionalOsCapabilities` bidang saat membuat atau memperbarui gambar microVM. Satu-satunya nilai yang di-support adalah `["ALL"]`. Kemampuan yang ditingkatkan memungkinkan operasi seperti memasang sistem file, membuat ruang nama jaringan, atau menjalankan program eBPF. Kemampuan diterapkan dalam batas isolasi VM dan tidak mempengaruhi host atau microVM lainnya.

```
aws lambda-microvms create-microvm-image \
  --name my-network-tool \
  --code-artifact uri=s3://my-bucket/app.zip \
  --base-image-arn arn:aws:lambda:{{us-east-1}}:aws:microvm-image:al2023-1 \
  --build-role-arn arn:aws:iam::123456789012:role/BuildRole \
  --additional-os-capabilities '["ALL"]'
```