

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>

Lambda Event Function penulis menggunakan ekstensi untuk mengintegrasikan Lambda dengan alat pilihan mereka untuk pemantauan, observabilitas, keamanan, dan tata kelola. Penulis Fungsi Acara 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. 

![API Ekstensi dan API Telemetri menghubungkan Lambda dan ekstensi eksternal.](https://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 acara siklus hidup Event Function dan 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 pemanggilan Fungsi Acara diproses sepenuhnya. Karena ekstensi berjalan sebagai proses, Anda dapat menulisnya dalam bahasa yang berbeda dari Fungsi Acara. Sebaiknya terapkan ekstensi eksternal menggunakan bahasa terkompilasi.

Dalam hal ini, ekstensi adalah biner mandiri yang kompatibel dengan runtime yang didukung. Semua ekstensi [Runtime Fungsi Acara 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 Acara dengan dua cara. [Untuk Fungsi Peristiwa yang digunakan sebagai [arsip file.zip](configuration-function-zip.md), Anda menerapkan ekstensi Anda sebagai lapisan.](chapter-layers.md) Untuk Fungsi Peristiwa 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`: Pada fase ini, Lambda membuat atau tidak membekukan lingkungan eksekusi dengan sumber daya yang dikonfigurasi, mengunduh kode untuk Fungsi Acara dan semua lapisan, menginisialisasi ekstensi apa pun, menginisialisasi runtime, dan kemudian menjalankan kode inisialisasi Fungsi Acara (kode di luar pengendali utama). `Init`[Fase terjadi baik selama pemanggilan pertama, atau sebelum pemanggilan Fungsi Acara jika Anda telah mengaktifkan konkurensi yang disediakan.](provisioned-concurrency.md)

  Fase `Init` dibagi ke dalam tiga subfase: `Extension init`, `Runtime init`, dan `Function init`. Sub-fase ini memastikan bahwa semua ekstensi dan runtime menyelesaikan tugas penyiapannya sebelum kode Fungsi Acara berjalan.
+ `Invoke`: Pada fase ini, Lambda memanggil handler Event Function. Setelah Fungsi Acara berjalan hingga selesai, Lambda bersiap untuk menangani pemanggilan Fungsi Acara lainnya.
+ `Shutdown`: Fase ini dipicu jika Fungsi Peristiwa Lambda tidak menerima pemanggilan apa pun untuk 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.

![Siklus hidup lingkungan eksekusi Lambda untuk ekstensi.](https://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 Fungsi Acara. 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.

![Urutan peristiwa dalam fase Lambda Init.](https://docs.aws.amazon.com/id_id/lambda/latest/dg/images/Init-Phase.png)


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

Saat Fungsi Peristiwa Lambda dipanggil sebagai respons terhadap permintaan `Next` API, Lambda mengirimkan `Invoke` peristiwa ke runtime dan ke setiap ekstensi yang terdaftar untuk acara tersebut. `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 pemanggilan, ekstensi eksternal berjalan secara paralel dengan Fungsi Acara. Mereka juga terus berjalan setelah Fungsi Acara selesai. Anda dapat menggunakan ini untuk menangkap informasi diagnostik atau mengirim log, metrik, dan jejak ke lokasi pilihan Anda.

Setelah menerima respons Fungsi Peristiwa dari runtime, Lambda mengembalikan respons ke klien, meskipun ekstensi masih berjalan.

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

![Urutan peristiwa dalam fase Lambda Invoke.](https://docs.aws.amazon.com/id_id/lambda/latest/dg/images/Invoke-Phase.png)


**Payload peristiwa**: Acara yang dikirim ke runtime (dan Fungsi Peristiwa Lambda) membawa seluruh permintaan, header (seperti`RequestId`), dan payload. Kejadian yang dikirim ke setiap ekstensi berisi metadata yang menjelaskan konten kejadian. Peristiwa siklus hidup ini mencakup jenis peristiwa, waktu waktu fungsi peristiwa habis (`deadlineMs`), Nama Sumber Daya Amazon (ARN) Fungsi Peristiwa yang dipanggil`requestId`, dan header penelusuran.

Ekstensi yang ingin mengakses badan peristiwa Fungsi Acara dapat menggunakan SDK dalam proses yang berkomunikasi dengan ekstensi. Pengembang Fungsi Acara menggunakan SDK dalam proses untuk mengirim payload ke ekstensi saat Fungsi Peristiwa dipanggil.

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 Acara membatasi durasi seluruh `Invoke` fase. Misalnya, jika Anda mengatur batas waktu Fungsi Acara sebagai 360 detik, Fungsi Acara dan semua ekstensi harus diselesaikan 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 Acara dan semua ekstensi selesai berjalan.

**Dampak kinerja dan overhead** ekstensi: Ekstensi dapat memengaruhi kinerja Fungsi Acara. Sebagai penulis ekstensi, Anda memiliki kontrol atas dampak kinerja dari ekstensi Anda. Misalnya, jika ekstensi Anda melakukan operasi komputasi intensif, durasi Event Function akan meningkat karena ekstensi dan kode Event Function berbagi sumber daya CPU yang sama. Selain itu, jika ekstensi Anda melakukan operasi ekstensif setelah pemanggilan Fungsi Acara selesai, durasi Fungsi Peristiwa meningkat karena `Invoke` fase berlanjut hingga semua ekstensi memberi sinyal bahwa ekstensi selesai.

**catatan**  
Lambda mengalokasikan daya CPU secara proporsional dengan pengaturan memori Event Function. Anda mungkin melihat peningkatan durasi eksekusi dan inisialisasi pada pengaturan memori yang lebih rendah karena Fungsi Acara dan proses ekstensi 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 metrik Fungsi Peristiwa, lihat[Menggunakan CloudWatch metrik dengan Lambda](monitoring-metrics.md).

Pengembang Fungsi Acara dapat menjalankan berbagai versi Fungsi Acara mereka secara berdampingan untuk memahami dampak ekstensi tertentu. Kami menyarankan agar pembuat ekstensi mempublikasikan konsumsi sumber daya yang diharapkan untuk memudahkan pengembang Fungsi Acara 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`.

![Urutan peristiwa dalam fase Shutdown Lambda.](https://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 Peristiwa Lambda. Ekstensi juga berbagi sumber daya dengan Fungsi Acara, seperti CPU, memori, dan penyimpanan `/tmp` disk. Selain itu, ekstensi menggunakan peran AWS Identity and Access Management (IAM) dan konteks keamanan yang sama dengan Fungsi Acara.

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

**catatan**  
Karena direktori kode Event Function hanya-baca, ekstensi tidak dapat mengubah kode Fungsi Acara.

**Variabel lingkungan**: Ekstensi dapat mengakses [variabel lingkungan](configuration-envvars.md) Fungsi Acara, 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.

**Kegagalan** pemanggilan (seperti kehabisan memori, batas waktu Fungsi Acara): Karena ekstensi berbagi sumber daya dengan runtime, kelelahan memori memengaruhi mereka. Saat waktu pengoperasian gagal, semua ekstensi dan waktu pengoperasian sendiri ikut serta dalam fase `Shutdown`. Selain itu, runtime dimulai ulang—baik secara otomatis sebagai bagian dari pemanggilan saat ini, atau melalui mekanisme inisialisasi ulang yang ditangguhkan.

Jika terjadi kegagalan (seperti batas waktu Fungsi Peristiwa atau kesalahan runtime) 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.](https://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 berisi ID akun yang terkait dengan Fungsi Peristiwa 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 menghasilkan 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 kontainer. Non-recoverable negara. 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 kontainer. Non-recoverable negara. 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:
  + Extension.NoSuchHandler
  + Extension.APIKeyNotFound
  + Extension.ConfigInvalid
  + Extension.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 kontainer. Non-recoverable negara. 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:
  + Extension.NoSuchHandler
  + Extension.APIKeyNotFound
  + Extension.ConfigInvalid
  + Extension.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 kontainer. Non-recoverable negara. Ekstensi harus segera keluar.

 