

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
<a name="microvms-getting-started"></a>

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
<a name="microvms-getting-started-prereqs"></a>

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).

1. **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
<a name="microvms-getting-started-first-image"></a>

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
<a name="microvms-getting-started-step1"></a>

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**  
`FROM`Instruksi 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 di[Gambar MicroVM](microvms-images.md).

### Langkah 2: Package dan upload ke Amazon S3
<a name="microvms-getting-started-step2"></a>

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
<a name="microvms-getting-started-step3"></a>

Panggil `create-microvm-image` untuk memulai pembangunan. Lambda mengunduh zip Anda dari Amazon S3, menjalankan`Dockerfile`, 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 menjadi`CREATED`:

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

## Menjalankan MicroVM pertama Anda
<a name="microvms-getting-started-run"></a>

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 mencapai`RUNNING`:

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

## Menghubungkan ke MicroVM Anda
<a name="microvms-getting-started-connect"></a>

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
<a name="microvms-getting-started-cleanup"></a>

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
<a name="microvms-getting-started-next"></a>
+ Pelajari cara [Konsep inti](microvms-how-it-works.md) memahami proses snapshot, status siklus hidup, dan gambar dasar.
+ Jelajahi [Gambar MicroVM](microvms-images.md) untuk mempelajari tentang kait pembuatan gambar, pembuatan versi, dan kompatibilitas snapshot.
+ Lihat [Menjalankan MicroVMS](microvms-launching.md) contoh SDK, kait siklus hidup, dan strategi penskalaan.