View a markdown version of this page

Buat MicroVM Lambda 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 MicroVM Lambda 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 AWS Wilayah 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 juga ecr:GetAuthorizationToken dan ecr:BatchGetImage ke kebijakan izin.

Membuat gambar microVM pertama Anda

Gambar microVM menangkap aplikasi Anda dalam keadaan yang sepenuhnya diinisialisasi. 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 akan 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 kontainer untuk lapisan aplikasi Anda. Anda dapat menggunakan gambar kontainer yang kompatibel. Gambar dasar terkelola 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 untuk memastikan keunikan di seluruh microVM. Jika aplikasi Anda menggunakan OpenSSL, gunakan image container dasar Lambda yang menyertakan versi yang kompatibel dengan snapshot. Untuk detailnya, lihat bagian kompatibilitas snapshot diGambar MicroVM.

Langkah 2: Package dan upload ke Amazon S3

Package Anda app.js dan Dockerfile ke 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, menjalankanDockerfile, memulai aplikasi, dan menangkap snapshot Petasan dari status yang sepenuhnya diinisialisasi:

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 statusnyaCREATE_FAILED, periksa log build di CloudWatch bawah/aws/lambda/microvms/my-first-microvm-image.

Menjalankan MicroVM pertama Anda

Setelah gambar microVM Anda mencapai CREATED status, Anda dapat menjalankan microVMS darinya. Setiap gambar dapat meluncurkan banyak microVMS — 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— Memungkinkan akses internet keluar dari microVM Anda. Ini adalah Lambda-managed konektor.

  • --idle-policy— Mengonfigurasi perilaku resume ditangguhkan otomatis. Kebijakan ini menangguhkan microVM setelah 15 menit tidak aktif, membuatnya ditangguhkan hingga 5 menit, dan dilanjutkan secara otomatis ketika 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 sampai negara mencapaiRUNNING:

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

Menghubungkan ke MicroVM Anda

Semua permintaan ke endpoint 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":{}}]'

Respons 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 respons dari aplikasi Anda:

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

MicroVM Anda berjalan dan melayani lalu lintas. Aplikasi yang Anda tulis di Langkah 1 langsung di URL endpoint.

Bersihkan

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

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

Langkah selanjutnya

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

  • Jelajahi Gambar MicroVM untuk mempelajari tentang kait pembuatan gambar, pembuatan versi, dan kompatibilitas snapshot.

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