

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

# Menggunakan API Ekstensi Lambda untuk membuat ekstensi
<a name="runtimes-extensions-api"></a>

Penulis fungsi Lambda menggunakan ekstensi untuk mengintegrasikan Lambda Anda dengan alat pilihan mereka untuk pemantauan, pengamatan, keamanan, dan pengaturan. Penulis fungsi dapat menggunakan ekstensi dari AWS, [AWS Mitra](extensions-api-partners.md), dan proyek sumber terbuka. Untuk informasi selengkapnya tentang penggunaan ekstensi, lihat [Memperkenalkan AWS Lambda Ekstensi](https://aws.amazon.com/blogs/aws/getting-started-with-using-your-favorite-operational-tools-on-aws-lambda-extensions-are-now-generally-available/) di Blog AWS Komputasi. Bagian ini menjelaskan cara menggunakan API Ekstensi Lambda, siklus hidup lingkungan eksekusi Lambda, dan referensi API Ekstensi Lambda. 

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/telemetry-api-concept-diagram.png)


Sebagai penulis ekstensi, Anda dapat menggunakan API Ekstensi Lambda untuk mengintegrasikan secara mendalam ke [Lingkungan eksekusi](lambda-runtime-environment.md) Lambda. Ekstensi Anda dapat mendaftar untuk fungsi dan peristiwa siklus hidup lingkungan eksekusi. Menanggapi peristiwa ini, Anda dapat memulai proses baru, menjalankan logika, dan mengontrol serta berpartisipasi dalam semua fase siklus hidup Lambda: inisialisasi, invokasi, dan penonaktifan. Selain itu, Anda dapat menggunakan [API Log Runtime](runtimes-logs-api.md) untuk menerima aliran log.

Ekstensi berjalan sebagai proses independen di lingkungan eksekusi dan dapat terus berjalan setelah invokasi fungsi diproses sepenuhnya. Karena ekstensi berjalan sebagai proses, Anda dapat menulisnya dalam bahasa yang berbeda dari fungsi. Sebaiknya terapkan ekstensi eksternal menggunakan bahasa terkompilasi. Dalam hal ini, ekstensi adalah biner mandiri yang kompatibel dengan runtime yang didukung. Semua ekstensi [Runtime Lambda](lambda-runtimes.md) dukungan. Jika Anda menggunakan bahasa nonkompilasi, pastikan Anda memasukkan waktu pengoperasian yang kompatibel di ekstensi. 

Lambda juga mendukung *ekstensi internal*. Ekstensi internal berjalan sebagai thread terpisah dari proses runtime. Runtime memulai dan menghentikan ekstensi internal. Cara alternatif untuk berintegrasi dengan lingkungan Lambda adalah dengan menggunakan [variabel lingkungan dan skrip wrapper](runtimes-modify.md) khusus bahasa. Anda dapat menggunakan ini untuk mengonfigurasi lingkungan runtime dan memodifikasi perilaku startup proses runtime.

Anda dapat menambahkan ekstensi ke fungsi dengan dua cara. Untuk fungsi yang di-deploy sebagai[arsip file .zip](configuration-function-zip.md), Anda men-deploy ekstensi sebagai [lapisan](chapter-layers.md). Untuk fungsi yang didefinisikan sebagai gambar kontainer, Anda menambahkan [ekstensi](extensions-configuration.md#invocation-extensions-images) ke gambar kontainer Anda.

**catatan**  
Misalnya ekstensi dan skrip pembungkus, lihat [AWS Lambda Ekstensi](https://github.com/aws-samples/aws-lambda-extensions) pada repositori AWS Sampel GitHub .

**Topics**
+ [Siklus hidup lingkungan eksekusi Lambda](#runtimes-extensions-api-lifecycle)
+ [Referensi API ekstensi](#runtimes-extensions-registration-api)

## Siklus hidup lingkungan eksekusi Lambda
<a name="runtimes-extensions-api-lifecycle"></a>

Siklus hidup lingkungan eksekusi mencakup fase-fase berikut:
+ `Init`: Dalam fase ini, Lambda membuat atau membatalkan pembekuan lingkungan eksekusi dengan sumber daya terkonfigurasi, mengunduh kode untuk fungsi dan semua lapisan, menginisialisasi ekstensi apa pun, menginisialisasi runtime, lalu menjalankan kode inisialisasi fungsi (yaitu kode di luar handler utama). Fase `Init` terjadi saat invokasi pertama, atau sebelum invokasi fungsi jika Anda telah mengaktifkan [konkurensi terprovisi](provisioned-concurrency.md).

  Fase `Init` dibagi ke dalam tiga subfase: `Extension init`, `Runtime init`, dan `Function init`. Subfase ini memastikan semua ekstensi dan runtime menyelesaikan tugas penyiapam mereka sebelum kode fungsi berjalan.
+ `Invoke`Dalam fase ini, Lambda memicu handler fungsi. Setelah fungsi berjalan hingga selesai, Lambda bersiap untuk menangani invokasi fungsi lain.
+ `Shutdown`: Fase ini dipicu jika fungsi Lambda tidak menerima invokasi apa pun selama jangka waktu tertentu. Di fase `Shutdown`, Lambda menonaktifkan runtime, memberi tahu ekstensi agar mereka berhenti dengan bersih, lalu menghapus lingkungan. Lambda mengirim kejadian `Shutdown` ke setiap ekstensi, yang memberi tahu ekstensi bahwa lingkungan akan dimatikan.

Setiap fase dimulai dengan peristiwa dari Lambda ke runtime dan ke semua ekstensi terdaftar. Waktu pengoperasian dan setiap ekstensi memberi sinyal penyelesaian dengan mengirimkan permintaan API `Next`. Lambda membekukan lingkungan eksekusi saat waktu proses telah selesai dan tidak ada kejadian yang tertunda.

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/Overview-Full-Sequence.png)


 

**Topics**
+ [Fase inisialisasi](#runtimes-extensions-api-reg)
+ [Fase invokasi](#runtimes-lifecycle-extensions-invoke)
+ [Fase pematian](#runtimes-lifecycle-extensions-shutdown)
+ [Izin dan konfigurasi](#runtimes-extensions-registration-api-e)
+ [Penanganan kegagalan](#runtimes-extensions-api-failure)
+ [Pemecahan masalah ekstensi](#runtimes-extensions-api-trbl)

### Fase inisialisasi
<a name="runtimes-extensions-api-reg"></a>

Selama fase `Extension init`, setiap ekstensi perlu mendaftarkan dengan Lambda untuk menerima kejadian. Lambda menggunakan nama file ekstensi lengkap untuk memvalidasi bahwa ekstensi telah menyelesaikan sekuens bootstrap. Oleh karena itu, tiap panggilan API `Register` harus menyertakan header `Lambda-Extension-Name` dengan nama ekstensi file lengkap.

Anda dapat mendaftarkan hingga 10 ekstensi untuk satu fungsi. Batasan ini ditegakkan melalui panggilan API `Register`.

Setelah setiap ekstensi mendaftar, Lambda memulai fase `Runtime init`. Proses runtime memanggil `functionInit` untuk memulai fase `Function init`.

Fase `Init` selesai setelah waktu pengoperasian dan setiap ekstensi terdaftar menunjukkan penyelesaian dengan mengirim permintaan API `Next`.

**catatan**  
Ekstensi dapat menyelesaikan inisialisasinya dalam fase `Init` kapan pun.

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/Init-Phase.png)


### Fase invokasi
<a name="runtimes-lifecycle-extensions-invoke"></a>

Saat fungsi Lambda diinvokasi untuk menanggapi permintaan API `Next`, Lambda mengirim kejadian `Invoke` ke waktu pengoperasian dan tiap ekstensi yang terdaftar untuk kejadian `Invoke`.

**catatan**  
**Instans Terkelola Lambda: Ekstensi untuk fungsi Instans** Terkelola Lambda tidak dapat mendaftar untuk acara tersebut. `Invoke` Karena Instans Terkelola Lambda mendukung pemanggilan bersamaan dalam satu lingkungan eksekusi, acara tidak didukung. `Invoke` Ekstensi hanya dapat mendaftar untuk `Shutdown` acara tersebut. Jika Anda perlu melacak kapan pemanggilan dimulai dan selesai, gunakan acara `platform.report` platform melalui API [Telemetri](telemetry-api.md).

Selama invokasi, ekstensi eksternal berjalan secara paralel dengan fungsi. Ekstensi ini juga terus berjalan setelah fungsi selesai. Ini memungkinkan Anda menangkap informasi diagnostik atau mengirim log, metrik, dan jejak ke lokasi pilihan Anda.

Setelah menerima respon fungsi dari runtime, Lambda mengembalikan respon ke klien, bahkan jika ekstensi masih berjalan.

Fase `Invoke` berakhir ketika waktu pengoperasian dan semua ekstensi menandakan bahwa ekstensi selesai dengan mengirim permintaan API `Next`. 

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/Invoke-Phase.png)


**Muatan peristiwa**: Peristiwa yang dikirim ke runtime (dan fungsi Lambda) memuat seluruh permintaan, header (seperti `RequestId`), dan muatan. Kejadian yang dikirim ke setiap ekstensi berisi metadata yang menjelaskan konten kejadian. Peristiwa siklus hidup ini mencakup tipe peristiwa, waktu saat waktu fungsi habis (`deadlineMs`), `requestId`, Amazon Resource Name (ARN) yang dipanggil fungsi, dan header pelacakan.

Ekstensi yang ingin mengakses isi kejadian fungsi dapat menggunakan SDK yang berjalan dalam waktu pengoperasian dan berkomunikasi dengan ekstensi. Pengembang fungsi menggunakan SDK dalam waktu pengoperasian untuk mengirim muatan ke ekstensi saat fungsi diinvokasi.

Berikut adalah contoh muatan:

```
{
    "eventType": "INVOKE",
    "deadlineMs": 676051,
    "requestId": "3da1f2dc-3222-475e-9205-e2e6c6318895",
    "invokedFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:ExtensionTest",
    "tracing": {
        "type": "X-Amzn-Trace-Id",
        "value": "Root=1-5f35ae12-0c0fec141ab77a00bc047aa2;Parent=2be948a625588e32;Sampled=1"
    }
 }
```

**Batas durasi**: Pengaturan batas waktu fungsi membatasi durasi seluruh `Invoke` fase. Misalnya, jika Anda mengatur waktu fungsi habis sebagai 360 detik, fungsi dan semua ekstensi harus selesai dalam 360 detik. Perhatikan bahwa tidak ada fase pasca-invokasi yang independen. Durasi adalah total waktu yang dibutuhkan untuk runtime Anda dan semua pemanggilan ekstensi Anda selesai dan tidak dihitung sampai fungsi dan semua ekstensi selesai berjalan.

**Dampak performa dan pengeluaran tambahan ekstensi**: Ekstensi dapat memengaruhi performa fungsi. Sebagai penulis ekstensi, Anda memiliki kontrol atas dampak kinerja dari ekstensi Anda. Misalnya, jika ekstensi Anda melakukan operasi dengan banyak komputasi, durasi fungsi meningkat karena ekstensi dan kode fungsi berbagi sumber daya CPU yang sama. Selain itu, jika ekstensi Anda melakukan operasi ekstensif setelah invokasi fungsi selesai, durasi fungsi meningkat karena fase `Invoke` berlanjut hingga semua sinyal ekstensi selesai.

**catatan**  
Lambda mengalokasikan daya CPU sebanding dengan pengaturan memori fungsi. Anda mungkin melihat peningkatan eksekusi dan inisialisasi durasi pada pengaturan memori yang lebih rendah karena fungsi dan ekstensi proses bersaing untuk sumber daya CPU yang sama. Untuk mengurangi eksekusi dan inisialisasi durasi, coba tingkatkan pengaturan memori.

Untuk membantu mengidentifikasi dampak performa yang muncul karena ekstensi di fase `Invoke`, Lambda mengeluarkan metrik `PostRuntimeExtensionsDuration`. Metrik ini mengukur waktu kumulatif yang dihabiskan antara waktu pengoperasian permintaan API `Next` dan ekstensi permintaan API `Next` terakhir. Untuk mengukur peningkatan memori yang digunakan, gunakan metrik `MaxMemoryUsed`. Untuk informasi selengkapnya tentang fungsi metrik, lihat [Menggunakan CloudWatch metrik dengan Lambda](monitoring-metrics.md).

Pengembang fungsi dapat menjalankan versi fungsi yang berbeda secara berdampingan untuk memahami dampak ekstensi tertentu. Kami merekomendasikan agar penulis ekstensi memublikasikan konsumsi sumber daya yang diharapkan untuk mempermudah pengembang fungsi dalam memilih ekstensi yang sesuai.

### Fase pematian
<a name="runtimes-lifecycle-extensions-shutdown"></a>

Ketika Lambda akan mematikan runtime, Lambda mengirimkan `Shutdown` ke setiap ekstensi eksternal terdaftar. Ekstensi dapat menggunakan waktu ini untuk tugas pembersihan akhir. Kejadian `Shutdown` dikirim untuk menanggapi permintaan API `Next`.

**Batas durasi**: Durasi maksimum fase `Shutdown` bergantung pada konfigurasi ekstensi terdaftar:
+ 0 ms - Fungsi tanpa ekstensi terdaftar
+ 500 md – Fungsi dengan ekstensi internal terdaftar.
+ 2.000 md – Fungsi dengan satu atau beberapa ekstensi eksternal terdaftar.

Jika waktu pengoperasian atau ekstensi tidak merespons kejadian `Shutdown` dalam batasan, Lambda mengakhiri proses menggunakan sinyal `SIGKILL`.

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/Shutdown-Phase.png)


**Muatan peristiwa**: Peristiwa `Shutdown` tersebut berisi alasan penonaktifan dan waktu yang tersisa dalam milidetik.

 `shutdownReason` mencakup nilai-nilai berikut:
+ SPINDOWN – Pematian normal
+ TIMEOUT – Batas waktu durasi habis
+ FAILURE – Kondisi kesalahan, seperti kejadian `out-of-memory`

```
{ 
  "eventType": "SHUTDOWN", 
  "shutdownReason": "reason for shutdown", 
  "deadlineMs": "the time and date that the function times out in Unix time milliseconds" 
}
```

### Izin dan konfigurasi
<a name="runtimes-extensions-registration-api-e"></a>

Ekstensi berjalan di lingkungan eksekusi yang sama dengan fungsi Lambda. Ekstensi juga berbagi sumber daya dengan fungsi, seperti CPU, memori, dan penyimpanan disk `/tmp`. Selain itu, ekstensi menggunakan peran AWS Identity and Access Management (IAM) dan konteks keamanan yang sama dengan fungsinya.

**Sistem file dan izin akses jaringan**: Ekstensi berjalan di namespace sistem file dan jaringan yang sama dengan runtime fungsi. Ini berarti ekstensi harus kompatibel dengan sistem operasi terkait. Jika ekstensi memerlukan aturan lalu lintas jaringan keluar, Anda harus menerapkan aturan ini ke konfigurasi fungsi.

**catatan**  
Karena direktori kode fungsi diatur ke baca-saja, ekstensi tidak dapat mengubah kode fungsi.

**Variabel lingkungan**: Ekstensi dapat mengakses [variabel lingkungan](configuration-envvars.md) fungsi, kecuali untuk variabel berikut yang spesifik untuk proses runtime:
+ `AWS_EXECUTION_ENV`
+ `AWS_LAMBDA_LOG_GROUP_NAME`
+ `AWS_LAMBDA_LOG_STREAM_NAME`
+ `AWS_XRAY_CONTEXT_MISSING`
+ `AWS_XRAY_DAEMON_ADDRESS`
+ `LAMBDA_RUNTIME_DIR`
+ `LAMBDA_TASK_ROOT`
+ `_AWS_XRAY_DAEMON_ADDRESS`
+ `_AWS_XRAY_DAEMON_PORT`
+ `_HANDLER`

**catatan**  
**Mendeteksi Instans Terkelola Lambda**: Ekstensi dapat memeriksa `AWS_LAMBDA_INITIALIZATION_TYPE` variabel lingkungan untuk menentukan apakah mereka berjalan pada Instans Terkelola Lambda versus fungsi Lambda (default). Ini adalah metode yang direkomendasikan untuk ekstensi untuk menyesuaikan perilakunya berdasarkan jenis lingkungan eksekusi.

### Penanganan kegagalan
<a name="runtimes-extensions-api-failure"></a>

**Kegagalan insialisasi**: Jika ekstensi gagal, Lambda memulai ulang lingkungan eksekusi untuk memberlakukan perilaku yang konsisten dan mendorong kegagalan cepat untuk ekstensi. Selain itu, untuk beberapa pelanggan, ekstensi tersebut harus memenuhi kebutuhan kritis misi, seperti pencatatan log, keamanan, tata kelola, dan pengumpulan telemetri.

**Memanggil kegagalan** (seperti kehabisan memori, waktu habis fungsi): Karena ekstensi berbagi sumber daya dengan runtime, kehabisan dapat memengaruhi keduanya. Saat waktu pengoperasian gagal, semua ekstensi dan waktu pengoperasian sendiri ikut serta dalam fase `Shutdown`. Selain itu, waktu pengoperasian dimulai ulang—baik otomatis sebagai bagian dari invokasi saat ini, atau melalui mekanisme inisialisasi ulang yang ditangguhkan.

Jika ada kegagalan (seperti waktu fungsi habis atau kesalahan waktu pengoperasian) selama `Invoke`, layanan Lambda akan melakukan reset. Reset berperilaku seperti kejadian `Shutdown`. Pertama, Lambda mematikan waktu pengoperasian, lalu ia mengirim kejadian `Shutdown` untuk setiap ekstensi eksternal terdaftar. Kejadian ini mencakup alasan untuk pematian. Jika lingkungan ini digunakan untuk invokasi baru, ekstensi dan waktu pengoperasian diinisialisasi ulang sebagai bagian dari invokasi berikutnya.

![\[Contoh lingkungan eksekusi: Init, Invoke, Invoke with Error, Invoke, Shutdown\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/Overview-Invoke-with-Error.png)


Untuk penjelasan lebih rinci tentang diagram sebelumnya, lihat[Kegagalan selama fase pemanggilan](lambda-runtime-environment.md#runtimes-lifecycle-invoke-with-errors).

**Log ekstensi**: Lambda mengirimkan keluaran log ekstensi ke CloudWatch Log. Lambda juga menghasilkan log acara tambahan untuk setiap ekstensi selama `Init`. Log acara mencatat preferensi nama dan registrasi (peristiwa, konfigurasi) saat berhasil, atau alasan kegagalan saat gagal.

### Pemecahan masalah ekstensi
<a name="runtimes-extensions-api-trbl"></a>
+ Jika permintaan `Register` gagal, pastikan header `Lambda-Extension-Name` di panggilan API `Register` berisi nama file lengkap ekstensi.
+ Jika permintaan `Register` gagal untuk ekstensi internal, pastikan permintaan tersebut tidak terdaftar untuk kejadian `Shutdown`.

## Referensi API ekstensi
<a name="runtimes-extensions-registration-api"></a>

Spesifikasi OpenAPI untuk versi API ekstensi **2020-01-01** tersedia di sini: [extensions-api.zip](samples/extensions-api.zip)

Anda dapat mengambil nilai titik akhir API dari variabel lingkungan `AWS_LAMBDA_RUNTIME_API`. Untuk mengirim permintaan `Register`, gunakan prefiks `2020-01-01/` sebelum setiap jalur API. Sebagai contoh:

```
http://${AWS_LAMBDA_RUNTIME_API}/2020-01-01/extension/register 
```

**Topics**
+ [Pendaftaran](#extensions-registration-api-a)
+ [Selanjutnya](#extensions-api-next)
+ [Kesalahan init](#runtimes-extensions-init-error)
+ [Kesalahan keluar](#runtimes-extensions-exit-error)

### Pendaftaran
<a name="extensions-registration-api-a"></a>

Selama `Extension init`, semua ekstensi perlu mendaftar dengan Lambda untuk menerima kejadian. Lambda menggunakan nama file ekstensi lengkap untuk memvalidasi bahwa ekstensi telah menyelesaikan sekuens bootstrap. Oleh karena itu, tiap panggilan API `Register` harus menyertakan header `Lambda-Extension-Name` dengan nama ekstensi file lengkap.

Ekstensi internal dimulai dan dihentikan oleh proses waktu pengoperasian sehingga tidak diizinkan untuk terdaftar untuk kejadian `Shutdown`.

**Jalur** – `/extension/register`

**Metode** – **POST**

**Minta header**
+ `Lambda-Extension-Name` – Nama file lengkap ekstensi. Wajib: ya. Jenis: string.
+ `Lambda-Extension-Accept-Feature`— Gunakan ini untuk menentukan fitur Ekstensi opsional selama pendaftaran. Wajib: tidak. Jenis: string dipisahkan koma. Fitur yang tersedia untuk ditentukan menggunakan pengaturan ini:
  + `accountId`— Jika ditentukan, respons pendaftaran Ekstensi akan berisi ID akun yang terkait dengan fungsi Lambda tempat Anda mendaftarkan Ekstensi.

**Minta parameter tubuh**
+ `events` – Array kejadian yang akan didaftarkan. Wajib: tidak. Jenis: array string. String yang valid: `INVOKE`, `SHUTDOWN`.
**catatan**  
**Instans Terkelola Lambda: Ekstensi untuk fungsi Instans** Terkelola Lambda hanya dapat mendaftar untuk acara tersebut. `SHUTDOWN` Mencoba mendaftar untuk `INVOKE` acara tersebut akan mengakibatkan kesalahan. Ini karena Instans Terkelola Lambda mendukung pemanggilan bersamaan dalam satu lingkungan eksekusi.

**Header respons**
+ `Lambda-Extension-Identifier` – Menghasilkan pengidentifikasi agen unik (string UUID) yang diperlukan untuk semua permintaan berikutnya.

**Kode respons**
+ 200 – Isi respons berisi nama fungsi, versi fungsi, dan nama penangan.
+ 400 – Permintaan Buruk
+ 403 – Dilarang
+ 500 – Kesalahan penampung. Keadaan yang tidak dapat dipulihkan. Ekstensi harus segera keluar.

**Example Contoh isi permintaan**  

```
{
    'events': [ 'INVOKE', 'SHUTDOWN']
}
```

**Example Contoh isi respons**  

```
{
    "functionName": "helloWorld",
    "functionVersion": "$LATEST",
    "handler": "lambda_function.lambda_handler"
}
```

**Example Contoh badan respons dengan fitur AccountID opsional**  

```
{
    "functionName": "helloWorld",
    "functionVersion": "$LATEST",
    "handler": "lambda_function.lambda_handler",
    "accountId": "123456789012"
}
```

### Selanjutnya
<a name="extensions-api-next"></a>

Ekstensi mengirim permintaan API `Next` untuk menerima kejadian berikutnya, yang dapat menjadi kejadian `Invoke` atau kejadian `Shutdown`. Isi respons berisi muatan, yang merupakan dokumen JSON yang berisi data kejadian.

Ekstensi mengirimkan permintaan API `Next` untuk menandakan bahwa ia siap menerima kejadian baru. Ini adalah panggilan blokir.

Jangan mengatur batas waktu pada panggilan GET karena ekstensi dapat ditangguhkan selama jangka waktu tertentu hingga ada kejadian yang akan dikembalikan.

**Jalur** – `/extension/event/next`

**Metode** – **GET**

**Minta header**
+ `Lambda-Extension-Identifier` – Pengidentifikasi untuk ekstensi (string UUID). Wajib: ya. Tipe: String UID.

**Header respons**
+ `Lambda-Extension-Event-Identifier`— Pengidentifikasi unik untuk acara (string UUID).

**Kode respons**
+ 200 – Respons berisi informasi tentang kejadian berikutnya (`EventInvoke` atau `EventShutdown`).
+ 403 – Dilarang
+ 500 – Kesalahan penampung. Keadaan yang tidak dapat dipulihkan. Ekstensi harus segera keluar.

### Kesalahan init
<a name="runtimes-extensions-init-error"></a>

Ekstensi menggunakan metode ini untuk melaporkan kesalahan inisialisasi ke Lambda. Panggil ini saat ekstensi gagal menginisialisasi setelah ia terdaftar. Setelah Lambda menerima kesalahan, tidak ada panggilan API lebih lanjut yang berhasil. Ekstensi harus keluar setelah menerima respon dari Lambda.

**Jalur** – `/extension/init/error`

**Metode** – **POST**

**Minta header**
+ `Lambda-Extension-Identifier` – Pengidentifikasi unik untuk ekstensi. Wajib: ya. Tipe: String UID.
+ `Lambda-Extension-Function-Error-Type` – Tipe kesalahan yang ekstensi ditemui. Wajib: ya. Header ini terdiri dari nilai string. Lambda menerima string apa pun, tetapi kami merekomendasikan format <category.reason>. Contoh:
  + Perpanjangan. NoSuchHandler
  + Perpanjangan. APIKeyNotFound
  + Perpanjangan. ConfigInvalid
  + Perpanjangan. UnknownReason

**Minta parameter tubuh**
+ `ErrorRequest` – Informasi tentang kesalahan. Wajib: tidak. 

Bidang ini adalah objek JSON dengan struktur berikut:

```
{
      errorMessage: string (text description of the error),
      errorType: string,
      stackTrace: array of strings
}
```

Perhatikan bahwa Lambda menerima nilai apa pun untuk `errorType`.

Contoh berikut menunjukkan pesan kesalahan fungsi Lambda ketika fungsi tidak dapat mengurai data peristiwa yang disediakan dalam invokasi.

**Example Kesalahan fungsi**  

```
{
      "errorMessage" : "Error parsing event data.",
      "errorType" : "InvalidEventDataException",
      "stackTrace": [ ]
}
```

**Kode respons**
+ 202 – Diterima
+ 400 – Permintaan Buruk
+ 403 – Dilarang
+ 500 – Kesalahan penampung. Keadaan yang tidak dapat dipulihkan. Ekstensi harus segera keluar.

### Kesalahan keluar
<a name="runtimes-extensions-exit-error"></a>

Ekstensi menggunakan metode ini untuk melaporkan kesalahan ke Lambda sebelum keluar. Panggil ini saat Anda mengalami kegagalan tak terduga. Setelah Lambda menerima kesalahan, tidak ada panggilan API lebih lanjut yang berhasil. Ekstensi harus keluar setelah menerima respon dari Lambda.

**Jalur** – `/extension/exit/error`

**Metode** – **POST**

**Minta header**
+ `Lambda-Extension-Identifier` – Pengidentifikasi unik untuk ekstensi. Wajib: ya. Tipe: String UID.
+ `Lambda-Extension-Function-Error-Type` – Tipe kesalahan yang ekstensi ditemui. Wajib: ya. Header ini terdiri dari nilai string. Lambda menerima string apa pun, tetapi kami merekomendasikan format <category.reason>. Contoh:
  + Perpanjangan. NoSuchHandler
  + Perpanjangan. APIKeyNotFound
  + Perpanjangan. ConfigInvalid
  + Perpanjangan. UnknownReason

**Minta parameter tubuh**
+ `ErrorRequest` – Informasi tentang kesalahan. Wajib: tidak.

Bidang ini adalah objek JSON dengan struktur berikut:

```
{
      errorMessage: string (text description of the error),
      errorType: string,
      stackTrace: array of strings
}
```

Perhatikan bahwa Lambda menerima nilai apa pun untuk `errorType`.

Contoh berikut menunjukkan pesan kesalahan fungsi Lambda ketika fungsi tidak dapat mengurai data peristiwa yang disediakan dalam invokasi.

**Example Kesalahan fungsi**  

```
{
      "errorMessage" : "Error parsing event data.",
      "errorType" : "InvalidEventDataException",
      "stackTrace": [ ]
}
```

**Kode respons**
+ 202 – Diterima
+ 400 – Permintaan Buruk
+ 403 – Dilarang
+ 500 – Kesalahan penampung. Keadaan yang tidak dapat dipulihkan. Ekstensi harus segera keluar.

 