View a markdown version of this page

Buat Lambda MicroVM pertama Anda - AWS Lambda

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

Buat Lambda MicroVM pertama Anda

Tutorial ini memandu Anda melalui pembuatan gambar AWS Lambda microVM dan menjalankan microVM darinya. Pada akhirnya, Anda akan memiliki aplikasi yang berjalan yang dapat diakses melalui HTTPS.

Prasyarat

Anda membutuhkan dua hal sebelum memulai:

  1. Bucket Amazon S3 di Wil AWS ayah pilihan Anda untuk menyimpan artefak aplikasi Anda (file zip yang akan Anda buat di Langkah 2).

  2. Peran build IAM yang diasumsikan Lambda selama pembuatan gambar. Lambda menggunakan peran ini untuk mengunduh artefak kode Anda dari Amazon S3 dan menulis log build ke. CloudWatch

Buat peran IAM dengan kebijakan kepercayaan berikut. Ini memungkinkan layanan Lambda untuk mengambil peran:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": ["sts:AssumeRole", "sts:TagSession"] }] }

Lampirkan kebijakan izin berikut ke peran. Ganti <your-bucket-name> dengan nama bucket Amazon S3 Anda:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::<your-bucket-name>/*" }, { "Effect": "Allow", "Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"], "Resource": "arn:aws:logs:*:*:*" } ] }
catatan

Jika Anda Dockerfile menarik dari repositori AWS ECR pribadi, tambahkan ecr:GetAuthorizationToken juga ecr:BatchGetImage ke kebijakan izin.

Membuat Image MicroVM Pertama Anda

Gambar MicroVM menangkap aplikasi Anda dalam keadaan terinisialisasi sepenuhnya. Ketika Anda menjalankan microVM dari gambar ini, aplikasi Anda segera dimulai — tidak ada penundaan boot atau inisialisasi.

Langkah 1: Tulis aplikasi Anda dan Dockerfile

Buat server HTTP sederhana yang berjalan di dalam microVM Anda. Contoh ini menggunakan Node.js tanpa dependensi eksternal:

app.js

// Minimal HTTP server — listens on port 8080 const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ status: 'ok', path: req.url })); }); server.listen(8080, () => { console.log('Listening on port 8080'); });

Selanjutnya, buat paket Dockerfile itu dan mulai aplikasi Anda:

Dockerfile

# Use a lightweight Node.js runtime for your application layers FROM node:24-alpine # Set the working directory inside the container WORKDIR /app # Copy your application code COPY app.js . # Declare the port your app listens on EXPOSE 8080 # Start the application — Lambda snapshots the running state CMD ["node", "app.js"]
catatan

FROMInstruksi menetapkan gambar wadah untuk lapisan aplikasi Anda. Anda dapat menggunakan gambar kontainer yang kompatibel. Gambar dasar yang dikelola Lambda (yang menyediakan sistem operasi MicroVM dan komponen layanan) ditentukan secara terpisah dengan --base-image-arn pada Langkah 3.

Jika aplikasi Anda menghasilkan nilai unik (ID, rahasia, atau materi kriptografi), gunakan pustaka generator nomor pseudorandom (CSPRNG) standar bahasa Anda yang aman secara kriptografis untuk memastikan keunikan di seluruh microVM. Jika aplikasi Anda menggunakan OpenSSL, gunakan gambar wadah dasar Lambda yang menyertakan versi yang kompatibel dengan snapshot. Untuk detailnya, lihat bagian kompatibilitas snapshot diImage MicroVM.

Langkah 2: Kemas dan unggah ke Amazon S3

Kemas app.js dan Dockerfile ke dalam arsip zip, lalu unggah ke bucket Amazon S3 Anda. Jalankan perintah berikut di terminal Anda:

zip app.zip app.js Dockerfile aws s3 cp app.zip s3://your-bucket-name/app.zip

Langkah 3: Buat gambar microVM

Panggil create-microvm-image untuk memulai pembangunan. Lambda mengunduh zip Anda dari Amazon S3, menjalankan, memulai aplikasi AndaDockerfile, dan menangkap snapshot Firecracker dari status yang diinisialisasi sepenuhnya:

aws lambda-microvms create-microvm-image \ --name my-first-microvm-image \ --code-artifact uri=s3://your-bucket-name/app.zip \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole

Gambar dimulai dalam CREATING keadaan. Periksa status build dengan:

aws lambda-microvms get-microvm-image \ --image-identifier my-first-microvm-image

Saat build selesai, state bidang berubah menjadiCREATED:

{ "imageName": "my-first-microvm-image", "imageArn": "arn:aws:lambda:us-east-1:123456789012:microvm-image:my-first-microvm-image", "state": "CREATED", "imageVersion": "1.0", ... }

Jika statusnya adaCREATE_FAILED, periksa log build di CloudWatch bawah/aws/lambda/microvms/my-first-microvm-image.

Menjalankan MicroVM pertama Anda

Setelah image microVM Anda mencapai CREATED status, Anda dapat menjalankan microVMS darinya. Setiap gambar dapat meluncurkan banyak microVM — satu per penyewa, sesi pengguna, atau pekerjaan.

Jalankan microVM dengan perintah berikut:

aws lambda-microvms run-microvm \ --image-identifier my-first-microvm-image \ --ingress-network-connectors "arn:aws:lambda:us-east-1:aws:network-connector:aws-network-connector:ALL_INGRESS" \ --egress-network-connectors "arn:aws:lambda:us-east-1:aws:network-connector:aws-network-connector:INTERNET_EGRESS" \ --idle-policy '{"autoResumeEnabled":true,"maxIdleDurationSeconds":900,"suspendedDurationSeconds":300}'

Parameter dijelaskan:

  • --ingress-network-connectors- Mengaktifkan lalu lintas HTTPS masuk ke microVM Anda di semua port. Ini adalah Lambda-managed konektor.

  • --egress-network-connectors- Mengaktifkan akses internet keluar dari microVM Anda. Ini adalah Lambda-managed konektor.

  • --idle-policy— Mengkonfigurasi perilaku suspend-resume otomatis. Kebijakan ini menangguhkan microVM setelah 15 menit tidak aktif, tetap ditangguhkan hingga 5 menit, dan dilanjutkan secara otomatis saat lalu lintas tiba.

Responsnya mencakup ID microVM dan URL titik akhir:

{ "microvmId": "mvm-01234567-abcd-ef01-2345-6789abcdef01", "state": "PENDING", "endpoint": "mvm-01234567-abcd-ef01-2345-6789abcdef01.lambda-microvm.us-east-1.on.aws", ... }

Tunggu negara mencapaiRUNNING:

aws lambda-microvms get-microvm \ --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01

Menghubungkan ke MicroVM Anda

Semua permintaan ke titik akhir microVM memerlukan token otentikasi. Hasilkan satu dengan:

aws lambda-microvms create-microvm-auth-token \ --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01 \ --expiration-in-minutes 30 \ --allowed-ports '[{"allPorts":{}}]'

Tanggapan termasuk token di authToken lapangan. Gunakan untuk mengirim permintaan ke aplikasi Anda yang sedang berjalan:

curl https://mvm-01234567-abcd-ef01-2345-6789abcdef01.lambda-microvm.us-east-1.on.aws/ \ -H "X-aws-proxy-auth: <token-value>"

Anda akan melihat tanggapan dari aplikasi Anda:

{"status":"ok","path":"/"}

MicroVM Anda berjalan dan melayani lalu lintas. Aplikasi yang Anda tulis di Langkah 1 aktif di URL titik akhir.

Bersihkan

Untuk menghindari biaya yang sedang berlangsung, hentikan microVM setelah selesai:

aws lambda-microvms terminate-microvm \ --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01

Langkah selanjutnya

  • Pelajari tentang Konsep inti memahami proses snapshot, status siklus hidup, dan gambar dasar.

  • Jel Image MicroVM ajahi untuk mempelajari tentang kait pembuatan gambar, pembuatan versi, dan kompatibilitas snapshot.

  • Lihat Menjalankan MicroVMS contoh SDK, kait siklus hidup, dan strategi penskalaan.

  • Lihat Integrasi integrasi layanan yang didukung.