

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

# Memecahkan masalah di Lambda
<a name="lambda-troubleshooting"></a>

Topik berikut memberikan saran pemecahan masalah untuk kesalahan dan masalah yang mungkin Anda temui saat menggunakan API, konsol, dan peralatan Lambda. Jika Anda menemukan masalah yang tidak tercantum di sini, Anda dapat menggunakan tombol **Umpan Balik** di halaman ini untuk melaporkannya.

Untuk saran pemecahan masalah selengkapnya dan jawaban atas pertanyaan dukungan umum, kunjungi [Pusat Pengetahuan AWS](https://aws.amazon.com/premiumsupport/knowledge-center/#AWS_Lambda).

Untuk informasi selengkapnya tentang debugging dan pemecahan masalah aplikasi Lambda, [lihat](https://serverlessland.com/content/service/lambda/guides/aws-lambda-operator-guide/debugging-ops) Debugging di Tanah Tanpa Server.

**Topics**
+ [Memecahkan masalah konfigurasi di Lambda](troubleshooting-configuration.md)
+ [Menyelesaikan masalah deployment di Lambda](troubleshooting-deployment.md)
+ [Menyelesaikan masalah invokasi di Lambda](troubleshooting-invocation.md)
+ [Menyelesaikan masalah eksekusi di Lambda](troubleshooting-execution.md)
+ [Memecahkan masalah pemetaan sumber acara di Lambda](troubleshooting-event-source-mapping.md)
+ [Menyelesaikan masalah jaringan di Lambda](troubleshooting-networking.md)

# Memecahkan masalah konfigurasi di Lambda
<a name="troubleshooting-configuration"></a>

Pengaturan konfigurasi fungsi Anda dapat berdampak pada kinerja dan perilaku fungsi Lambda secara keseluruhan. Ini mungkin tidak menyebabkan kesalahan fungsi yang sebenarnya, tetapi dapat menyebabkan batas waktu dan hasil yang tidak terduga.

Topik berikut memberikan saran pemecahan masalah untuk masalah umum yang mungkin Anda temui terkait dengan pengaturan konfigurasi fungsi Lambda.

**Topics**
+ [Konfigurasi memori](#memory-config)
+ [Konfigurasi terikat CPU](#cpu-bound-config)
+ [Timeout](#timeouts)
+ [Kebocoran memori di antara pemanggilan](#memory-leakage)
+ [Hasil asinkron dikembalikan ke pemanggilan selanjutnya](#asynchronous-results)

## Konfigurasi memori
<a name="memory-config"></a>

Anda dapat mengonfigurasi fungsi Lambda untuk menggunakan antara 128 MB dan 10.240 MB memori. Secara default, fungsi apa pun yang dibuat di konsol diberi jumlah memori terkecil. Banyak fungsi Lambda berkinerja pada pengaturan terendah ini. Namun, jika Anda mengimpor pustaka kode besar atau menyelesaikan tugas intensif memori, 128 MB tidak cukup.

Jika fungsi Anda berjalan jauh lebih lambat dari yang diharapkan, langkah pertama adalah meningkatkan pengaturan memori. Untuk fungsi terikat memori, ini akan menyelesaikan kemacetan dan dapat meningkatkan kinerja fungsi Anda.

## Konfigurasi terikat CPU
<a name="cpu-bound-config"></a>

Untuk operasi komputasi intensif, jika fungsi Anda mengalami slower-than-expected kinerja, ini mungkin karena fungsi Anda terikat CPU. Dalam hal ini, kapasitas komputasi fungsi tidak dapat mengimbangi pekerjaan.

Meskipun Lambda tidak memungkinkan Anda untuk memodifikasi konfigurasi CPU secara langsung, CPU secara tidak langsung dikontrol melalui pengaturan memori. Layanan Lambda secara proporsional mengalokasikan lebih banyak CPU virtual saat Anda mengalokasikan lebih banyak memori. Pada memori 1, 8 GB, fungsi Lambda memiliki seluruh vCPU yang dialokasikan, dan di atas level ini ia memiliki akses ke lebih dari satu inti vCPU. Pada 10.240 MB, ia memiliki 6 v yang tersedia. CPUs Dengan kata lain, Anda dapat meningkatkan kinerja dengan meningkatkan alokasi memori, bahkan jika fungsi tersebut tidak menggunakan semua memori.

## Timeout
<a name="timeouts"></a>

 [Timeout](https://docs.aws.amazon.com/lambda/latest/dg/configuration-console.html) untuk fungsi Lambda dapat diatur antara 1 dan 900 detik (15 menit). Secara default, konsol Lambda menyetel ini menjadi 3 detik. Nilai batas waktu adalah katup pengaman yang memastikan fungsi tidak berjalan tanpa batas waktu. Setelah nilai batas waktu tercapai, Lambda menghentikan pemanggilan fungsi.

Jika nilai batas waktu ditetapkan mendekati durasi rata-rata suatu fungsi, ini meningkatkan risiko bahwa fungsi tersebut akan habis secara tak terduga. Durasi suatu fungsi dapat bervariasi berdasarkan jumlah transfer dan pemrosesan data, dan latensi layanan apa pun yang berinteraksi dengan fungsi tersebut. Penyebab umum batas waktu meliputi:
+ Saat mengunduh data dari bucket S3 atau penyimpanan data lainnya, unduhan lebih besar atau membutuhkan waktu lebih lama dari rata-rata.
+ Fungsi membuat permintaan ke layanan lain, yang membutuhkan waktu lebih lama untuk merespons.
+ Parameter yang disediakan untuk suatu fungsi membutuhkan lebih banyak kompleksitas komputasi dalam fungsi, yang menyebabkan pemanggilan memakan waktu lebih lama.

Saat menguji aplikasi Anda, pastikan pengujian Anda secara akurat mencerminkan ukuran dan kuantitas data, serta nilai parameter yang realistis. Yang penting, gunakan kumpulan data di batas atas dari apa yang diharapkan secara wajar untuk beban kerja Anda.

Selain itu, terapkan batas batas atas dalam beban kerja Anda di mana pun praktis. Dalam contoh ini, aplikasi dapat menggunakan batas ukuran maksimum untuk setiap jenis file. Anda kemudian dapat menguji kinerja aplikasi Anda untuk berbagai ukuran file yang diharapkan, hingga dan termasuk batas maksimum.

## Kebocoran memori di antara pemanggilan
<a name="memory-leakage"></a>

Variabel global dan objek yang disimpan dalam fase INIT dari pemanggilan Lambda mempertahankan statusnya di antara pemanggilan hangat. Mereka sepenuhnya diatur ulang hanya ketika lingkungan eksekusi dijalankan untuk pertama kalinya (juga dikenal sebagai “start dingin”). Setiap variabel yang disimpan dalam handler dihancurkan ketika handler keluar. Praktik terbaik adalah menggunakan fase INIT untuk mengatur koneksi database, memuat pustaka, membuat cache, dan memuat aset yang tidak dapat diubah.

Saat Anda menggunakan pustaka pihak ketiga di beberapa pemanggilan di lingkungan eksekusi yang sama, periksa dokumentasi mereka untuk penggunaan di lingkungan komputasi tanpa server. Beberapa koneksi database dan pustaka logging dapat menyimpan hasil pemanggilan menengah dan data lainnya. Hal ini menyebabkan penggunaan memori perpustakaan ini tumbuh dengan pemanggilan hangat berikutnya. Jika ini masalahnya, Anda mungkin menemukan fungsi Lambda kehabisan memori, bahkan jika kode kustom Anda membuang variabel dengan benar.

Masalah ini memengaruhi pemanggilan yang terjadi di lingkungan eksekusi yang hangat. Misalnya, kode berikut membuat kebocoran memori antara pemanggilan. Fungsi Lambda mengkonsumsi memori tambahan dengan setiap pemanggilan dengan meningkatkan ukuran array global:

```
let a = []

exports.handler = async (event) => {
    a.push(Array(100000).fill(1))
}
```

Dikonfigurasi dengan memori 128 MB, setelah menjalankan fungsi ini 1000 kali, tab **Pemantauan** fungsi Lambda menunjukkan perubahan khas dalam pemanggilan, durasi, dan jumlah kesalahan saat kebocoran memori terjadi:

![\[operasi debugging gambar 4\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-4.png)


1.  **Doa** — Tingkat transaksi yang stabil terganggu secara berkala karena pemanggilan membutuhkan waktu lebih lama untuk diselesaikan. Selama kondisi tunak, kebocoran memori tidak menghabiskan semua memori yang dialokasikan fungsi. Ketika kinerja menurun, sistem operasi melakukan paging penyimpanan lokal untuk mengakomodasi memori yang tumbuh yang dibutuhkan oleh fungsi, yang menghasilkan lebih sedikit transaksi yang diselesaikan.

1.  **Durasi** — Sebelum fungsi kehabisan memori, ia menyelesaikan pemanggilan dengan kecepatan milidetik dua digit yang stabil. Saat paging terjadi, durasinya membutuhkan urutan besarnya lebih lama.

1.  **Jumlah kesalahan** — Karena kebocoran memori melebihi memori yang dialokasikan, akhirnya kesalahan fungsi karena perhitungan melebihi batas waktu, atau lingkungan eksekusi menghentikan fungsi.

Setelah kesalahan, Lambda memulai ulang lingkungan eksekusi, yang menjelaskan mengapa ketiga grafik menunjukkan pengembalian ke keadaan semula. Memperluas CloudWatch metrik untuk durasi memberikan detail lebih lanjut untuk statistik durasi minimum, maksimum, dan rata-rata:

![\[operasi debugging gambar 5\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-5.png)


Untuk menemukan kesalahan yang dihasilkan di 1000 pemanggilan, Anda dapat menggunakan bahasa kueri CloudWatch Insights. Kueri berikut mengecualikan log informasi untuk melaporkan hanya kesalahan:

```
fields @timestamp, @message
| sort @timestamp desc
| filter @message not like 'EXTENSION'
| filter @message not like 'Lambda Insights'
| filter @message not like 'INFO' 
| filter @message not like 'REPORT'
| filter @message not like 'END'
| filter @message not like 'START'
```

Ketika dijalankan terhadap grup log untuk fungsi ini, ini menunjukkan bahwa batas waktu bertanggung jawab atas kesalahan periodik:

![\[operasi debugging gambar 6\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-6.png)


## Hasil asinkron dikembalikan ke pemanggilan selanjutnya
<a name="asynchronous-results"></a>

Untuk kode fungsi yang menggunakan pola asinkron, hasil callback dari satu pemanggilan dapat dikembalikan dalam pemanggilan future. Contoh ini menggunakan Node.js, tetapi logika yang sama dapat diterapkan ke runtime lain menggunakan pola asinkron. Fungsi ini menggunakan sintaks callback tradisional di. JavaScript Ini memanggil fungsi asinkron dengan penghitung tambahan yang melacak jumlah pemanggilan:

```
let seqId = 0

exports.handler = async (event, context) => {
    console.log(`Starting: sequence Id=${++seqId}`)
    doWork(seqId, function(id) {
        console.log(`Work done: sequence Id=${id}`)
    })
}

function doWork(id, callback) {
    setTimeout(() => callback(id), 3000)
}
```

Ketika dipanggil beberapa kali berturut-turut, hasil callback terjadi dalam pemanggilan berikutnya:

![\[operasi debugging gambar 7\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-7.png)


1. Kode memanggil `doWork` fungsi, menyediakan fungsi callback sebagai parameter terakhir.

1. `doWork`Fungsi ini membutuhkan beberapa periode waktu untuk diselesaikan sebelum memanggil panggilan balik.

1. Pencatatan fungsi menunjukkan bahwa pemanggilan berakhir sebelum `doWork` fungsi selesai dieksekusi. Selain itu, setelah memulai iterasi, callback dari iterasi sebelumnya sedang diproses, seperti yang ditunjukkan dalam log.

[Dalam JavaScript, panggilan balik asinkron ditangani dengan loop peristiwa.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop) Runtime lain menggunakan mekanisme yang berbeda untuk menangani konkurensi. Ketika lingkungan eksekusi fungsi berakhir, Lambda membekukan lingkungan hingga pemanggilan berikutnya. Setelah dilanjutkan, JavaScript lanjutkan pemrosesan loop peristiwa, yang dalam hal ini menyertakan panggilan balik asinkron dari pemanggilan sebelumnya. Tanpa konteks ini, dapat muncul bahwa fungsi menjalankan kode tanpa alasan, dan mengembalikan data arbitrer. Faktanya, ini benar-benar artefak tentang bagaimana konkurensi runtime dan lingkungan eksekusi berinteraksi.

Ini menciptakan potensi data pribadi dari pemanggilan sebelumnya untuk muncul dalam pemanggilan berikutnya. Ada dua cara untuk mencegah atau mendeteksi perilaku ini. Pertama, JavaScript sediakan [kata kunci async dan await](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) untuk menyederhanakan pengembangan asinkron dan juga memaksa eksekusi kode untuk menunggu panggilan asinkron selesai. Fungsi di atas dapat ditulis ulang menggunakan pendekatan ini sebagai berikut:

```
let seqId = 0
exports.handler = async (event) => {
    console.log(`Starting: sequence Id=${++seqId}`)
    const result = await doWork(seqId)
    console.log(`Work done: sequence Id=${result}`)
}

function doWork(id) {
  return new Promise(resolve => {
    setTimeout(() => resolve(id), 4000)
  })
}
```

Menggunakan sintaks ini mencegah handler keluar sebelum fungsi asinkron selesai. Dalam kasus ini, jika callback membutuhkan waktu lebih lama dari batas waktu fungsi Lambda, fungsi akan memunculkan kesalahan, alih-alih mengembalikan hasil callback dalam pemanggilan selanjutnya:

![\[operasi debugging gambar 8\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-8.png)


1. Kode memanggil `doWork` fungsi asinkron menggunakan kata kunci await di handler.

1. `doWork`Fungsi ini membutuhkan beberapa periode waktu untuk menyelesaikan sebelum menyelesaikan janji.

1. Fungsi waktu habis karena `doWork` membutuhkan waktu lebih lama dari batas waktu yang diizinkan dan hasil panggilan balik tidak dikembalikan dalam pemanggilan selanjutnya.

Umumnya, Anda harus memastikan setiap proses latar belakang atau callback dalam kode selesai sebelum kode keluar. Jika hal ini tidak memungkinkan dalam kasus penggunaan Anda, Anda dapat menggunakan pengenal untuk memastikan bahwa callback milik pemanggilan saat ini. Untuk melakukan ini, Anda dapat menggunakan yang *awsRequestId*disediakan oleh objek konteks. Dengan meneruskan nilai ini ke callback asinkron, Anda dapat membandingkan nilai yang diteruskan dengan nilai saat ini untuk mendeteksi apakah panggilan balik berasal dari pemanggilan lain:

```
let currentContext

exports.handler = async (event, context) => {
    console.log(`Starting: request id=$\{context.awsRequestId}`)
    currentContext = context

    doWork(context.awsRequestId, function(id) {
        if (id != currentContext.awsRequestId) {
            console.info(`This callback is from another invocation.`)
        }
    })

}

function doWork(id, callback) {
    setTimeout(() => callback(id), 3000)

}
```

![\[operasi debugging gambar 9\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-9.png)


1. Penangan fungsi Lambda mengambil parameter konteks, yang menyediakan akses ke ID permintaan pemanggilan unik.

1. `awsRequestId`Ini diteruskan ke fungsi DoWork. Dalam callback, ID dibandingkan dengan `awsRequestId` pemanggilan saat ini. Jika nilai-nilai ini berbeda, kode dapat mengambil tindakan yang sesuai.

# Menyelesaikan masalah deployment di Lambda
<a name="troubleshooting-deployment"></a>

Saat Anda memperbarui fungsi Anda, Lambda menerapkan perubahan dengan meluncurkan instans baru dari fungsi dengan kode atau pengaturan yang diperbarui. Kesalahan deployment menghambat penggunaan versi baru dan dapat disebabkan oleh masalah dengan paket deployment, kode, izin, atau alat Anda.

Saat Anda menerapkan pembaruan ke fungsi Anda secara langsung dengan API Lambda atau dengan klien seperti, Anda dapat melihat AWS CLI kesalahan dari Lambda secara langsung di output. Jika Anda menggunakan layanan seperti AWS CloudFormation, AWS CodeDeploy, atau AWS CodePipeline, cari respons dari Lambda di log atau aliran peristiwa untuk layanan tersebut.

Topik berikut memberikan saran pemecahan masalah untuk kesalahan dan masalah yang mungkin Anda temui saat menggunakan API, konsol, dan peralatan Lambda. Jika Anda menemukan masalah yang tidak tercantum di sini, Anda dapat menggunakan tombol **Umpan Balik** di halaman ini untuk melaporkannya.

Untuk saran pemecahan masalah selengkapnya dan jawaban atas pertanyaan dukungan umum, kunjungi [Pusat Pengetahuan AWS](https://aws.amazon.com/premiumsupport/knowledge-center/#AWS_Lambda).

Untuk informasi selengkapnya tentang debugging dan pemecahan masalah aplikasi Lambda, [lihat](https://serverlessland.com/content/service/lambda/guides/aws-lambda-operator-guide/debugging-ops) Debugging di Tanah Tanpa Server.

**Topics**
+ [Umum: Izin ditolak/Tidak dapat memuat file tersebut](#troubleshooting-deployment-denied)
+ [Umum: Terjadi kesalahan saat memanggil UpdateFunctionCode](#troubleshooting-deployment-updatefunctioncode)
+ [Amazon S3: Kode Kesalahan. PermanentRedirect](#troubleshooting-deployment-PermanentRedirect)
+ [Umum: Tidak dapat menemukan, tidak dapat memuat, tidak dapat mengimpor, kelas tidak ditemukan, tidak ada file atau direktori tersebut](#troubleshooting-deployment-functionHandler1)
+ [Umum: Metode handler tidak didefinisikan](#troubleshooting-deployment-functionHandler2)
+ [Umum: Batas penyimpanan kode Lambda terlampaui](#troubleshooting-deployment-CodeStorageExceeded)
+ [Lambda: Konversi lapisan gagal](#troubleshooting-deployment-LayerConversionFailed)
+ [Lambda: atau InvalidParameterValueException RequestEntityTooLargeException](#troubleshooting-deployment-InvalidParameterValueException1)
+ [Lambda: InvalidParameterValueException](#troubleshooting-deployment-InvalidParameterValueException2)
+ [Lambda: Konkurensi dan kuota memori](#troubleshooting-deployment-quotas)
+ [Lambda: Konfigurasi alias tidak valid untuk konkurensi yang disediakan](#troubleshooting-deployment-provisioned-concurrency)

## Umum: Izin ditolak/Tidak dapat memuat file tersebut
<a name="troubleshooting-deployment-denied"></a>

**Kesalahan:** *EACCES: izin ditolak, buka* '/ .js' var/task/index

**Kesalahan:** *tidak dapat memuat file tersebut -- fungsi*

**Kesalahan:** *[Errno 13] Izin ditolak: var/task/function '/* .py'

Runtime Lambda membutuhkan izin untuk membaca file dalam paket deployment Anda. Dalam notasi oktal izin Linux, Lambda membutuhkan 644 izin untuk file yang tidak dapat dieksekusi (rw-r - r--) dan 755 izin () untuk direktori dan file yang dapat dieksekusi. rwxr-xr-x

Di Linux dan macOS, gunakan `chmod` perintah untuk mengubah izin file pada file dan direktori dalam paket penyebaran Anda. Misalnya, untuk memberikan file yang tidak dapat dieksekusi izin yang benar, jalankan perintah berikut.

```
chmod 644 <filepath>
```

Untuk mengubah izin file di Windows, lihat [Mengatur, Melihat, Mengubah, atau Menghapus Izin pada Objek](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731667(v=ws.10)) dalam dokumentasi Microsoft Windows.

**catatan**  
Jika Anda tidak memberikan Lambda izin yang diperlukan untuk mengakses direktori dalam paket penerapan Anda, Lambda menetapkan izin untuk direktori tersebut ke 755 (). rwxr-xr-x

## Umum: Terjadi kesalahan saat memanggil UpdateFunctionCode
<a name="troubleshooting-deployment-updatefunctioncode"></a>

**Kesalahan:** *Terjadi kesalahan (RequestEntityTooLargeException) saat memanggil UpdateFunctionCode operasi*

Ketika Anda mengunggah paket deployment atau arsip lapisan secara langsung ke Lambda, ukuran file ZIP dibatasi ke 50 MB. Untuk mengunggah file yang lebih besar, simpan file di Amazon S3 dan gunakan parameter S3Bucket dan S3Key.

**catatan**  
Saat Anda mengunggah file secara langsung dengan AWS CLI, AWS SDK, atau lainnya, file ZIP biner dikonversi ke base64, yang meningkatkan ukurannya sekitar 30%. Untuk memungkinkan hal ini, serta ukuran parameter lain dalam permintaan, batas ukuran permintaan aktual yang digunakan Lambda menjadi lebih besar. Oleh karena itu, batas sebesar 50 MB adalah perkiraan.

## Amazon S3: Kode Kesalahan. PermanentRedirect
<a name="troubleshooting-deployment-PermanentRedirect"></a>

**Kesalahan:** *Terjadi kesalahan saat GetObject. Kode Kesalahan S3: PermanentRedirect. Pesan Kesalahan S3: Bucket berada di wilayah: us-east-2. Harap gunakan wilayah ini untuk mencoba kembali permintaan ini*

Saat Anda mengunggah paket deployment fungsi dari bucket Amazon S3, bucket harus berada di Wilayah yang sama dengan fungsi tersebut. Masalah ini dapat terjadi saat Anda menentukan objek Amazon S3 dalam panggilan ke [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html), atau menggunakan paket dan menyebarkan perintah di atau AWS CLI CLI. AWS SAM Buat bucket artefak deployment untuk setiap Wilayah tempat Anda mengembangkan aplikasi.

## Umum: Tidak dapat menemukan, tidak dapat memuat, tidak dapat mengimpor, kelas tidak ditemukan, tidak ada file atau direktori tersebut
<a name="troubleshooting-deployment-functionHandler1"></a>

**Kesalahan:** *Tidak dapat menemukan modul 'function'*

**Kesalahan:** *tidak dapat memuat file tersebut -- fungsi*

**Kesalahan:** *Tidak dapat mengimpor modul 'function'*

**Kesalahan:** *Kelas tidak ditemukan: function.Handler*

**Kesalahan:fork/exec /var/task/function:** *tidak ada file atau direktori seperti itu*

**Kesalahan**: *Tidak dapat memuat jenis 'Function.Handler' dari susunan 'Function'.*

Nama file atau kelas dalam konfigurasi handler fungsi tidak cocok dengan kode. Lihat bagian berikut untuk informasi selengkapnya.

## Umum: Metode handler tidak didefinisikan
<a name="troubleshooting-deployment-functionHandler2"></a>

**Kesalahan:** *index.handler tidak ditentukan atau tidak terekspor*

**Kesalahan**: *Handler 'handler' hilang di modul 'function'*

**Kesalahan:** *metode `handler' yang tidak ditentukan untuk \$1<LambdaHandler:0x000055b76ccebf98>*

**Kesalahan:** *Tidak ada metode publik yang bernama handleRequest dengan tanda tangan metode yang sesuai yang ditemukan di kelas function.Handler*

**Kesalahan:** *Tidak dapat menemukan metode 'handleRequest' dalam jenis 'Function.Handler' dari susunan 'Function'*

Nama metode handler dalam konfigurasi handler fungsi tidak cocok dengan kode. Setiap runtime mendefinisikan konvensi penamaan untuk penangan, seperti. *filename* *methodname*. Handler adalah metode dalam kode fungsi Anda yang dijalankan oleh runtime saat fungsi Anda dipanggil.

Untuk beberapa bahasa, Lambda menyediakan pustaka dengan antarmuka yang mengharapkan metode handler memiliki nama tertentu. Untuk perincian tentang penamaan handler untuk setiap bahasa, lihat topik berikut.
+ [Membangun fungsi Lambda dengan Node.js](lambda-nodejs.md)
+ [Membangun fungsi Lambda dengan Python](lambda-python.md)
+ [Membangun fungsi Lambda dengan Ruby](lambda-ruby.md)
+ [Membangun fungsi Lambda dengan Java](lambda-java.md)
+ [Membangun fungsi Lambda dengan Go](lambda-golang.md)
+ [Membangun fungsi Lambda dengan C\$1](lambda-csharp.md)
+ [Membangun fungsi Lambda dengan PowerShell](lambda-powershell.md)

## Umum: Batas penyimpanan kode Lambda terlampaui
<a name="troubleshooting-deployment-CodeStorageExceeded"></a>

**Kesalahan: Batas** *penyimpanan kode terlampaui.*

Lambda menyimpan kode fungsi Anda dalam bucket S3 internal yang bersifat pribadi ke akun Anda. Setiap AWS akun dialokasikan 75 GB penyimpanan di setiap Wilayah. Penyimpanan kode mencakup total penyimpanan yang digunakan oleh fungsi dan lapisan Lambda. Jika Anda mencapai kuota, Anda menerima *CodeStorageExceededException*ketika Anda mencoba untuk menerapkan fungsi baru.

Kelola ruang penyimpanan yang tersedia dengan membersihkan versi fungsi lama, menghapus kode yang tidak digunakan, atau menggunakan lapisan Lambda. Selain itu, praktik yang baik untuk [menggunakan AWS akun terpisah untuk beban kerja terpisah untuk](concepts-application-design.md#multiple-accounts) membantu mengelola kuota penyimpanan.

Anda dapat melihat total penggunaan penyimpanan Anda di konsol Lambda, di bawah submenu **Dasbor**:

![\[pemantauan observabilitas gambar 26\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/monitoring-observability-figure-26.png)




## Lambda: Konversi lapisan gagal
<a name="troubleshooting-deployment-LayerConversionFailed"></a>

**Kesalahan:** *Konversi lapisan Lambda gagal. Untuk saran tentang menyelesaikan masalah ini, lihat halaman Memecahkan masalah penerapan di Lambda di Panduan Pengguna Lambda.*

Ketika Anda mengkonfigurasi fungsi Lambda dengan lapisan, Lambda menggabungkan layer dengan kode fungsi Anda. Jika proses ini gagal diselesaikan, Lambda mengembalikan kesalahan ini. Jika Anda mengalami kesalahan ini, lakukan langkah-langkah berikut: 
+ Hapus file yang tidak digunakan dari lapisan Anda
+ Hapus tautan simbolis apa pun di lapisan Anda
+ Ganti nama file yang memiliki nama yang sama dengan direktori di salah satu lapisan fungsi Anda

## Lambda: atau InvalidParameterValueException RequestEntityTooLargeException
<a name="troubleshooting-deployment-InvalidParameterValueException1"></a>

**Kesalahan: InvalidParameterValueException***: Lambda tidak dapat mengonfigurasi variabel lingkungan Anda karena variabel lingkungan yang Anda berikan melebihi batas 4KB. String diukur: \$1"A1":" u SFe Y5 cyPiPn 7AtNx5Bsm...*

**Kesalahan: RequestEntityTooLargeException***: Permintaan harus lebih kecil dari 5120 byte untuk operasi UpdateFunctionConfiguration *

Ukuran maksimum objek variabel yang disimpan dalam konfigurasi fungsi tidak boleh melebihi 4096 byte. Ini termasuk nama kunci, nilai, tanda kutip, koma, dan tanda kurung. Ukuran total badan permintaan HTTP juga terbatas.

```
{
    "FunctionName": "my-function",
    "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
    "Runtime": "nodejs24.x",
    "Role": "arn:aws:iam::123456789012:role/lambda-role",
    "Environment": {
        "Variables": {
            "BUCKET": "amzn-s3-demo-bucket",
            "KEY": "file.txt"
        }
    },
    ...
}
```

Dalam contoh ini, objek adalah 39 karakter dan menggunakan 39 byte ketika disimpan (tanpa spasi) sebagai string `{"BUCKET":"amzn-s3-demo-bucket","KEY":"file.txt"}`. Karakter ASCII standar dalam nilai variabel lingkungan menggunakan satu byte masing-masing. Karakter ASCII dan Unicode yang diperluas dapat menggunakan antara 2 byte sampai 4 byte per karakter.

## Lambda: InvalidParameterValueException
<a name="troubleshooting-deployment-InvalidParameterValueException2"></a>

**Kesalahan: InvalidParameterValueException***: Lambda tidak dapat mengonfigurasi variabel lingkungan Anda karena variabel lingkungan yang Anda berikan berisi kunci cadangan yang saat ini tidak didukung untuk modifikasi*.

Lambda mencadangkan beberapa kunci variabel lingkungan untuk penggunaan internal. Misalnya, `AWS_REGION` digunakan oleh runtime untuk menentukan Wilayah saat ini dan tidak dapat dibatalkan. Variabel lainnya, seperti `PATH`, digunakan oleh runtime, tetapi dapat diperluas dalam konfigurasi fungsi Anda. Untuk daftar lengkap, lihat [Variabel lingkungan runtime yang ditetapkan](configuration-envvars.md#configuration-envvars-runtime).

## Lambda: Konkurensi dan kuota memori
<a name="troubleshooting-deployment-quotas"></a>

**Kesalahan:** *Ditentukan ConcurrentExecutions untuk fungsi mengurangi akun UnreservedConcurrentExecution di bawah nilai minimumnya*

**Kesalahan:** *Nilai MemorySize '' gagal memenuhi kendala: Anggota harus memiliki nilai kurang dari atau sama dengan 3008*

Kesalahan ini terjadi ketika Anda melebihi [kuota konkurensi atau memori untuk akun](gettingstarted-limits.md) Anda. AWS Akun baru telah mengurangi kuota konkurensi dan memori. Untuk mengatasi kesalahan yang terkait dengan konkurensi, Anda dapat [meminta peningkatan kuota](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html). Anda tidak dapat meminta peningkatan kuota memori.
+ **Konkurensi:** Anda mungkin mendapatkan kesalahan jika mencoba membuat fungsi menggunakan konkurensi cadangan atau ketentuan, atau jika permintaan konkurensi per fungsi ([PutFunctionConcurrency](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionConcurrency.html)) melebihi kuota konkurensi akun Anda.
+ **Memori:** Kesalahan terjadi jika jumlah memori yang dialokasikan ke fungsi melebihi kuota memori akun Anda.

## Lambda: Konfigurasi alias tidak valid untuk konkurensi yang disediakan
<a name="troubleshooting-deployment-provisioned-concurrency"></a>

**Kesalahan:** *Konfigurasi alias tidak valid untuk konkurensi* yang disediakan

Kesalahan ini terjadi ketika Anda mencoba memperbarui kode atau konfigurasi fungsi Lambda sementara alias dengan konkurensi yang disediakan menunjuk ke versi yang memiliki masalah. Lambda melakukan pra-inisialisasi lingkungan eksekusi untuk konkurensi yang disediakan, dan jika lingkungan ini tidak dapat diinisialisasi dengan benar karena kesalahan kode, kendala sumber daya, atau tumpukan dan alias yang terpengaruh, penerapan gagal. Jika Anda mengalami masalah ini, lakukan langkah-langkah berikut:

1. **Kembalikan alias:** Perbarui sementara alias untuk menunjuk ke versi yang sebelumnya berfungsi.

   ```
    aws lambda update-alias \
     --function-name <function-name> \
     --name <alias-name> \
     --function-version <known-good-version>
   ```

1. **Perbaiki kode inisialisasi Lambda: Pastikan kode** inisialisasi yang berjalan di luar handler tidak memiliki pengecualian yang tidak tertangkap dan menginisialisasi klien dan koneksi.

1. **Menerapkan ulang keamanan:** Menyebarkan kode tetap dan menerbitkan versi baru. Kemudian, perbarui alias untuk menunjuk ke versi tetap. Secara opsional, aktifkan kembali [konkurensi yang disediakan, jika perlu](provisioned-concurrency.md).

Jika menggunakan AWS CloudFormation, perbarui definisi tumpukan `FunctionVersion:!GetAtt version.Version` sehingga alias menunjuk ke versi yang berfungsi:

```
alias:
 Type: AWS::Lambda::Alias
 Properties:
 FunctionName: !Ref function
FunctionVersion: !GetAtt version.Version
 Name: BLUE
 ProvisionedConcurrencyConfig:
 ProvisionedConcurrentExecutions: 1
```

# Menyelesaikan masalah invokasi di Lambda
<a name="troubleshooting-invocation"></a>

Saat Anda memanggil fungsi Lambda, Lambda memvalidasi permintaan dan memeriksa kapasitas penskalaan sebelum mengirim kejadian ke fungsi Anda atau, untuk invokasi asinkron, ke antrean kejadian. Kesalahan invokasi dapat disebabkan oleh masalah parameter permintaan, struktur kejadian, pengaturan fungsi, izin pengguna, izin sumber daya, atau batas.

Jika Anda memanggil fungsi secara langsung, Anda melihat kesalahan invokasi apa pun dalam respons dari Lambda. Jika Anda memanggil fungsi secara asinkron dengan pemetaan sumber kejadian atau melalui layanan lain, Anda mungkin menemukan kesalahan di log, antrean surat gagal, atau tujuan kejadian-gagal. Opsi penanganan kesalahan dan perilaku percobaan ulang berbeda-beda tergantung pada cara Anda memanggil fungsi dan jenis kesalahan.

Untuk daftar tipe kesalahan yang dapat dikembalikan oleh operasi `Invoke`, lihat [Panggil](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html).

**Topics**
+ [Lambda: Waktu fungsi habis selama fase Init (Sandbox.Timedout)](#troubleshooting-timeouts)
+ [IAM: lambda: InvokeFunction tidak diizinkan](#troubleshooting-invocation-noauth)
+ [Lambda: Tidak dapat menemukan bootstrap yang valid (Runtime. InvalidEntrypoint)](#troubleshooting-invocation-bootstrap)
+ [Lambda: Operasi tidak dapat dilakukan ResourceConflictException](#troubleshooting-invocation-ResourceConflictException)
+ [Lambda: Fungsi tertahan dalam Tertunda](#troubleshooting-invocation-pending)
+ [Lambda: Salah satu fungsi menggunakan semua konkurensi](#troubleshooting-invocation-allconcurrency)
+ [Umum: Tidak dapat memanggil fungsi dengan akun atau layanan lain](#troubleshooting-invocation-cannotinvoke)
+ [Umum: Invokasi fungsi adalah perulangan](#troubleshooting-invocation-loop)
+ [Lambda: Perutean alias dengan konkurensi terprovisi](#troubleshooting-invocation-alias)
+ [Lambda: Mulai awal dengan konkurensi terprovisi](#troubleshooting-invocation-coldstart)
+ [Lambda: Mulai awal dengan versi baru](#troubleshooting-invocation-newversion)
+ [Lambda: Keluar Node.js yang tidak terduga saat runtime (Runtime. NodejsExit)](#troubleshooting-invocation-nodejs-exit)
+ [EFS: Fungsi tidak dapat memasang sistem file EFS](#troubleshooting-invocation-efsmount)
+ [EFS: Fungsi tidak dapat terhubung ke sistem file EFS](#troubleshooting-invocation-efsconnect)
+ [EFS: Fungsi tidak dapat memasang sistem file EFS karena waktu habis.](#troubleshooting-invocation-efstimeout)
+ [Lambda: Lambda mendeteksi proses IO yang memakan waktu terlalu lama](#troubleshooting-invocation-ioprocess)
+ [Wadah: CodeArtifactUserException kesalahan](#troubleshooting-deployment-container-artifact)
+ [Wadah: InvalidEntrypoint kesalahan](#troubleshooting-deployment-container-entrypoint)

## Lambda: Waktu fungsi habis selama fase Init (Sandbox.Timedout)
<a name="troubleshooting-timeouts"></a>

 **Kesalahan:** *Tugas habis setelah 3,00 detik* 

Saat fase [Init](lambda-runtime-environment.md#runtimes-lifecycle-ib) habis, Lambda menginisialisasi lingkungan eksekusi lagi dengan menjalankan kembali `Init` fase saat permintaan pemanggilan berikutnya tiba. Ini disebut [init yang ditekan](lambda-runtime-environment.md#suppressed-init). Namun, jika fungsi Anda dikonfigurasi dengan [durasi waktu tunggu](configuration-timeout.md) yang singkat (umumnya sekitar 3 detik), init yang ditekan mungkin tidak selesai selama durasi batas waktu yang dialokasikan, menyebabkan `Init` fase habis lagi. Atau, init yang ditekan selesai tetapi tidak menyisakan cukup waktu untuk menyelesaikan fase [Invoke](lambda-runtime-environment.md#runtimes-lifecycle-invoke), menyebabkan `Invoke` fase habis.

Untuk mengurangi kesalahan batas waktu, gunakan satu atau beberapa strategi berikut:
+ **Tingkatkan durasi batas waktu fungsi**: Perpanjang [batas waktu untuk memberikan waktu `Init` dan `Invoke` fase agar berhasil](configuration-timeout.md) diselesaikan.
+ **Tingkatkan alokasi memori fungsi**: Lebih banyak [memori](configuration-memory.md) juga berarti alokasi CPU yang lebih proporsional, yang dapat mempercepat fase dan fase. `Init` `Invoke`
+ **Optimalkan kode inisialisasi fungsi**: Kurangi waktu yang diperlukan untuk inisialisasi untuk memastikan bahwa `Invoke` fase `Init` dan dapat selesai dalam batas waktu yang dikonfigurasi.

## IAM: lambda: InvokeFunction tidak diizinkan
<a name="troubleshooting-invocation-noauth"></a>

 **Kesalahan: Pengguna:** *arn:aws:iam: :123456789012: pengguna/pengembang* tidak berwenang untuk melakukan: lambda: on resource: my-function InvokeFunction 

Pengguna Anda, atau peran yang Anda asumsikan, harus memiliki izin untuk menjalankan fungsi. Persyaratan ini juga berlaku untuk fungsi Lambda dan sumber daya komputasi lainnya yang memanggil fungsi. Tambahkan **AWSLambdaPeran** kebijakan AWS terkelola ke pengguna Anda, atau tambahkan kebijakan khusus yang memungkinkan `lambda:InvokeFunction` tindakan pada fungsi target.

**catatan**  
Nama tindakan IAM (`lambda:InvokeFunction`) mengacu pada operasi API `Invoke` Lambda.

Untuk informasi selengkapnya, lihat [Mengelola izin di AWS Lambda](lambda-permissions.md).

## Lambda: Tidak dapat menemukan bootstrap yang valid (Runtime. InvalidEntrypoint)
<a name="troubleshooting-invocation-bootstrap"></a>

 **Kesalahan:** *Tidak dapat menemukan bootstrap yang valid: [/var/task/bootstrap /opt/bootstrap]* 

Kesalahan ini biasanya terjadi ketika root paket penyebaran Anda tidak berisi file yang dapat dieksekusi bernama. `bootstrap` Misalnya, jika Anda menerapkan `provided.al2023` fungsi dengan file.zip, `bootstrap` file harus berada di root file.zip, bukan di direktori.

## Lambda: Operasi tidak dapat dilakukan ResourceConflictException
<a name="troubleshooting-invocation-ResourceConflictException"></a>

 **KesalahanResourceConflictException:***: Operasi tidak dapat dilakukan saat ini. Fungsi saat sedang dalam status: Tertunda* 

Saat Anda menghubungkan fungsi ke virtual private cloud (VPC) pada saat pembuatan, fungsi memasukkan status `Pending` sewaktu Lambda membuat antarmuka jaringan elastis. Selama waktu ini, Anda tidak dapat memanggil atau memodifikasi fungsi Anda. Jika Anda menghubungkan fungsi Anda ke VPC setelah pembuatan, Anda dapat memanggilnya saat pembaruan tertunda, tetapi Anda tidak dapat memodifikasi kode atau konfigurasinya.

Untuk informasi selengkapnya, lihat [Status fungsi Lambda](functions-states.md).

## Lambda: Fungsi tertahan dalam Tertunda
<a name="troubleshooting-invocation-pending"></a>

 **Kesalahan**: *Fungsi tertahan dalam status `Pending` selama beberapa menit.* 

Jika suatu fungsi tertahan di status `Pending` selama lebih dari enam menit, panggil salah satu operasi API berikut untuk membukanya:
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)
+ [PublishVersion](https://docs.aws.amazon.com/lambda/latest/api/API_PublishVersion.html)

Lambda membatalkan operasi yang tertunda dan menempatkan fungsi ke keadaan `Failed`. Anda kemudian dapat mencoba pembaruan lain.

## Lambda: Salah satu fungsi menggunakan semua konkurensi
<a name="troubleshooting-invocation-allconcurrency"></a>

 **Masalah:** *Satu fungsi sedang menggunakan semua konkurensi yang tersedia, yang menyebabkan fungsi lain dibatasi.* 

Untuk membagi konkurensi AWS akun Anda yang tersedia di AWS Wilayah menjadi kumpulan, gunakan [konkurensi cadangan](configuration-concurrency.md). Konkurensi cadangan memastikan fungsi dapat selalu menskalakan ke konkurensi yang ditetapkan, dan fungsi tidak menskalakan melebihi konkurensi yang ditetapkan.

## Umum: Tidak dapat memanggil fungsi dengan akun atau layanan lain
<a name="troubleshooting-invocation-cannotinvoke"></a>

 **Masalah:** *Anda dapat memanggil fungsi secara langsung, tetapi tidak dijalankan ketika layanan atau akun lain memanggilnya.* 

Anda memberikan izin kepada akun dan [layanan lain](lambda-services.md) untuk memanggil fungsi dalam [kebijakan berbasis sumber daya](access-control-resource-based.md) milik fungsi. Jika pemanggil ada di akun lain, pengguna tersebut juga harus memiliki [izin untuk memanggil fungsi](access-control-identity-based.md). 

## Umum: Invokasi fungsi adalah perulangan
<a name="troubleshooting-invocation-loop"></a>

 **Masalah:** *Fungsi dipanggil secara berulang terus-menerus.* 

Ini biasanya terjadi ketika fungsi Anda mengelola sumber daya dalam AWS layanan yang sama yang memicunya. Misalnya, ini memungkinkan untuk membuat fungsi yang menyimpan objek dalam bucket Amazon Simple Storage Service (Amazon S3) yang dikonfigurasi dengan [notifikasi yang kembali memanggil fungsi](with-s3.md). Untuk menghentikan fungsi agar tidak berjalan, kurangi [konkurensi](lambda-concurrency.md) yang tersedia menjadi nol, yang membatasi semua pemanggilan future. Selanjutnya, identifikasi jalur kode atau kesalahan konfigurasi yang menyebabkan invokasi berulang. Lambda secara otomatis mendeteksi dan menghentikan loop rekursif untuk beberapa layanan dan. AWS SDKs Untuk informasi selengkapnya, lihat [Gunakan deteksi loop rekursif Lambda untuk mencegah loop tak terbatas](invocation-recursion.md).

## Lambda: Perutean alias dengan konkurensi terprovisi
<a name="troubleshooting-invocation-alias"></a>

 **Masalah:** *Konkurensi terprovisi melimpahkan invokasi selama perutean alias.* 

Lambda menggunakan model probabilistik sederhana untuk mendistribusikan lalu lintas di antara dua versi fungsi. Pada tingkat lalu lintas rendah, Anda mungkin melihat varians tinggi di antara persentase lalu lintas yang dikonfigurasi dan aktual di setiap versi. Jika fungsi Anda menggunakan konkurensi terprovisi, Anda dapat menghindari [invokasi limpahan](monitoring-metrics-types.md#invocation-metrics) dengan mengonfigurasi jumlah yang lebih tinggi dari instans konkurensi terprovisi selama perutean alias aktif. 

## Lambda: Mulai awal dengan konkurensi terprovisi
<a name="troubleshooting-invocation-coldstart"></a>

 **Masalah:** *Anda melihat mulai awal setelah mengaktifkan konkurensi terprovisi.* 

Ketika jumlah eksekusi bersamaan pada fungsi kurang dari atau sama dengan [tingkat konkurensi terprovisi yang dikonfigurasi](provisioned-concurrency.md), mulai awal seharusnya tidak ada. Untuk membantu Anda mengonfirmasi jika konkurensi terprovisi beroperasi secara normal, lakukan hal berikut:
+  [Periksa apakah concurrency terprovisi diaktifkan](provisioned-concurrency.md) pada versi fungsi atau alias.
**catatan**  
Konkurensi yang disediakan tidak dapat dikonfigurasi pada [versi fungsi yang tidak dipublikasikan (\$1LATEST).](configuration-versions.md)
+ Pastikan pemicu Anda memanggil versi fungsi atau alias yang benar. Misalnya, jika Anda menggunakan Amazon API Gateway, periksa API Gateway memanggil versi fungsi atau alias dengan konkurensi terprovisi, bukan \$1LATEST. [Untuk mengonfirmasi bahwa konkurensi yang disediakan sedang digunakan, Anda dapat memeriksa metrik AmazonProvisionedConcurrencyInvocations . CloudWatch ](monitoring-concurrency.md#provisioned-concurrency-metrics) Nilai bukan nol menunjukkan fungsi ini memproses invokasi pada lingkungan eksekusi yang diinisialisasi.
+ [Tentukan apakah konkurensi fungsi Anda melebihi tingkat konkurensi yang disediakan yang dikonfigurasi dengan memeriksa metrik. ProvisionedConcurrencySpilloverInvocations CloudWatch](monitoring-concurrency.md#provisioned-concurrency-metrics) Nilai bukan nol menunjukkan semua konkurensi terprovisi sedang digunakan dan beberapa invokasi terjadi dengan mulai awal.
+ Periksa [frekuensi invokasi](gettingstarted-limits.md#api-requests) (permintaan per detik). Fungsi dengan konkurensi terprovisi memiliki tingkat maksimum 10 permintaan per detik per konkurensi terprovisi. Misalnya, fungsi yang dikonfigurasi dengan 100 konkurensi terprovisi dapat menangani 1.000 permintaan per detik. Jika tingkat invokasi melebihi 1.000 permintaan per detik, beberapa mulai awal dapat terjadi.

## Lambda: Mulai awal dengan versi baru
<a name="troubleshooting-invocation-newversion"></a>

 **Masalah:** *Anda melihat mulai awal saat men-deploy versi baru dari fungsi Anda.* 

Ketika Anda memperbarui alias fungsi, Lambda secara otomatis menggeser konkurensi terprovisi ke versi baru berdasarkan bobot yang dikonfigurasi di alias.

 **Kesalahan: KMSDisabled** *Pengecualian: Lambda tidak dapat mendekripsi variabel lingkungan karena kunci KMS yang digunakan dinonaktifkan. Silakan periksa pengaturan kunci KMS fungsi.* 

Kesalahan ini dapat terjadi jika kunci AWS Key Management Service (AWS KMS) Anda dinonaktifkan, atau jika hibah yang memungkinkan Lambda menggunakan kunci dicabut. Jika pemberian izin tidak ada, konfigurasikan fungsi agar menggunakan kunci yang berbeda. Selanjutnya, atur ulang kunci kustom untuk membuat ulang pemberian izin.

## Lambda: Keluar Node.js yang tidak terduga saat runtime (Runtime. NodejsExit)
<a name="troubleshooting-invocation-nodejs-exit"></a>

**Masalah:** *Klien runtime Lambda mendeteksi kode keluar Node.js yang tidak terduga*.

Kesalahan ini terjadi ketika fungsi Anda keluar sebelum semua Promises diselesaikan, misalnya karena bug kode. Hal ini juga dapat terjadi ketika Node.js mendeteksi kebuntuan yang mencegah Promises diselesaikan. Kesalahan ini hanya memengaruhi penangan gaya asinkron, bukan penangan gaya panggilan balik.

**Runtime yang terpengaruh:** Node.js 18 dan yang lebih baru.

**Untuk mengatasi masalah ini:**

1. Periksa kode fungsi Anda untuk janji yang belum diselesaikan di penangan asinkron.

1. Pastikan semua janji diselesaikan dengan benar (diselesaikan atau ditolak) sebelum fungsi selesai.

1. Tinjau kode Anda untuk kondisi balapan potensial dalam operasi asinkron.

Untuk informasi selengkapnya tentang kode keluar Node.js dan penghentian proses, lihat [dokumentasi Node.js](https://nodejs.org/docs/latest/api/process.html#exit-codes).

## EFS: Fungsi tidak dapat memasang sistem file EFS
<a name="troubleshooting-invocation-efsmount"></a>

 **Kesalahan: EFSMountFailureException:** *Fungsi tidak dapat me-mount sistem file EFS dengan titik akses arn:aws:elasticfilesystem:us-east- 2:123456789012: access-point/fsap-015cxmplb72b405fd*. 

Permintaan pemasangan untuk [sistem file](configuration-filesystem.md) fungsi ditolak. Periksa izin fungsi, dan konfirmasikan bahwa sistem file dan titik aksesnya sudah ada dan siap digunakan.

## EFS: Fungsi tidak dapat terhubung ke sistem file EFS
<a name="troubleshooting-invocation-efsconnect"></a>

 **Kesalahan: EFSMountConnectivityException:** *Fungsi tidak dapat terhubung ke sistem file Amazon EFS dengan titik akses arn:aws:elasticfilesystem:us-east- 2:123456789012: access-point/fsap-015cxmplb72b405fd. Periksa konfigurasi jaringan Anda dan coba kembali.* 

Fungsi tidak dapat membuat koneksi ke [sistem file](configuration-filesystem.md) fungsi dengan protokol NFS (TCP port 2049). Periksa [grup keamanan dan konfigurasi perutean](https://docs.aws.amazon.com/efs/latest/ug/network-access.html) untuk subnet VPC.

Jika Anda mendapatkan kesalahan ini setelah memperbarui pengaturan konfigurasi VPC fungsi Anda, coba lepaskan dan pasang kembali sistem file.

## EFS: Fungsi tidak dapat memasang sistem file EFS karena waktu habis.
<a name="troubleshooting-invocation-efstimeout"></a>

 **Kesalahan: EFSMountTimeoutException:** *Fungsi tidak dapat me-mount sistem file EFS dengan titik akses \$1arn:aws:elasticfilesystem:us-east- 2:123456789012:access-point/fsap-015cxmplb72b405fd*\$1 karena waktu pemasangan habis. 

Fungsi dapat terhubung ke [sistem file](configuration-filesystem.md) fungsi, tetapi waktu operasi pemasangan habis. Coba lagi setelah beberapa saat dan pertimbangkan untuk membatasi [konkurensi](configuration-concurrency.md) fungsi guna mengurangi beban sistem file.

## Lambda: Lambda mendeteksi proses IO yang memakan waktu terlalu lama
<a name="troubleshooting-invocation-ioprocess"></a>

 *EFSIOException: Instance fungsi ini dihentikan karena Lambda mendeteksi proses IO yang memakan waktu terlalu lama.* 

Waktu invokasi sebelumnya habis dan Lambda tidak dapat menghentikan handler fungsi. Masalah ini dapat terjadi ketika sistem file yang dilampirkan kehabisan kredit lonjakan dan throughput awal tidak cukup. Untuk meningkatkan throughput, Anda dapat meningkatkan ukuran sistem file atau menggunakan throughput terprovisi.

## Wadah: CodeArtifactUserException kesalahan
<a name="troubleshooting-deployment-container-artifact"></a>

**Kesalahan:** *pesan CodeArtifactUserPendingException kesalahan*

Optimasi CodeArtifact sedang menunggu. Fungsi transisi ke [status Aktif](functions-states.md) saat Lambda menyelesaikan pengoptimalan. Kode respons HTTP 409.

**Kesalahan:** *pesan CodeArtifactUserDeletedException kesalahan*

 CodeArtifact Itu dijadwalkan akan dihapus. Kode respons HTTP 409.

**Kesalahan:** *pesan CodeArtifactUserFailedException kesalahan*

Lambda gagal mengoptimalkan kode. Anda perlu memperbaiki kode dan mengunggahnya lagi. Kode respons HTTP 409.

## Wadah: InvalidEntrypoint kesalahan
<a name="troubleshooting-deployment-container-entrypoint"></a>

**Kesalahan:** *Runtime. ExitError atau “ErrorType”: “Runtime. InvalidEntrypoint*”

Verifikasi bahwa ENTRYPOINT untuk gambar kontainer Anda mencakup jalur absolut sebagai lokasi. Selain itu, verifikasi bahwa gambar tidak berisi symlink sebagai ENTRYPOINT.

**Kesalahan:** *Anda menggunakan CloudFormation template, dan wadah ENTRYPOINT Anda sedang diganti dengan nilai nol atau* kosong.

Tinjau [ImageConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-lambda-function-imageconfig.html)sumber daya dalam CloudFormation template. Jika Anda menyatakan sumber daya `ImageConfig` di templat Anda, Anda harus menyediakan nilai non-kosong untuk ketiga properti.

# Menyelesaikan masalah eksekusi di Lambda
<a name="troubleshooting-execution"></a>

Ketika runtime Lambda menjalankan kode fungsi Anda, kejadian mungkin diproses pada instans fungsi yang sedang memproses kejadian selama beberapa saat, atau mungkin memerlukan instans baru untuk diinisialisasi. Kesalahan dapat terjadi selama inisialisasi fungsi, ketika kode handler Anda memproses kejadian, atau ketika fungsi Anda mengembalikan (atau gagal mengembalikan) respons.

Kesalahan eksekusi fungsi dapat disebabkan oleh masalah dengan kode, konfigurasi fungsi, sumber daya hilir, atau izin Anda. Jika Anda memanggil fungsi secara langsung, Anda melihat kesalahan fungsi dalam respons dari Lambda. Jika Anda memanggil fungsi Anda secara asinkron, dengan pemetaan sumber kejadian, atau melalui layanan lain, Anda mungkin menemukan kesalahan di log, antrean surat gagal, atau tujuan saat terjadi kegagalan. Opsi penanganan kesalahan dan perilaku percobaan ulang berbeda-beda tergantung pada cara Anda memanggil fungsi dan jenis kesalahan.

Saat kode fungsi atau runtime Lambda Anda memunculkan kesalahan, kode status di respons dari Lambda adalah 200 OK. Adanya kesalahan dalam respons ditunjukkan dengan header bernama `X-Amz-Function-Error`. Kode status seri 400 dan 500 dicadangkan untuk [kesalahan invokasi](troubleshooting-invocation.md).

**Topics**
+ [Lambda: Debugging jarak jauh dengan Kode Visual Studio](#troubleshooting-execution-remote-debugging)
+ [Lambda: Eksekusi memerlukan waktu yang lama](#troubleshooting-execution-toolong)
+ [Lambda: Payload acara tak terduga](#troubleshooting-execution-unexpected-payload)
+ [Lambda: Ukuran muatan besar yang tak terduga](#troubleshooting-execution-large-payload)
+ [Lambda: Kesalahan pengkodean dan decoding JSON](#troubleshooting-execution-json-encoding)
+ [Lambda: Log atau jejak tidak muncul](#troubleshooting-execution-logstraces)
+ [Lambda: Tidak semua log fungsi saya muncul](#troubleshooting-execution-missinglogs)
+ [Lambda: Fungsi kembali sebelum eksekusi selesai](#troubleshooting-execution-unfinished)
+ [Lambda: Menjalankan versi atau alias fungsi yang tidak diinginkan](#unintended-function)
+ [Lambda: Mendeteksi loop tak terbatas](#infinite-loops)
+ [Umum: Ketidaktersediaan layanan hilir](#downstream-unavailability)
+ [AWS SDK: Versi dan pembaruan](#troubleshooting-execution-versions)
+ [Python: Pustaka memuat dengan tidak benar](#troubleshooting-execution-libraries)
+ [Java: Fungsi Anda membutuhkan waktu lebih lama untuk memproses peristiwa setelah memperbarui ke Java 17 dari Java 11](#troubleshooting-execution-java-perf)
+ [Kafka: Penanganan kesalahan dan coba lagi masalah konfigurasi](#troubleshooting-kafka-error-handling)

## Lambda: Debugging jarak jauh dengan Kode Visual Studio
<a name="troubleshooting-execution-remote-debugging"></a>

**Masalah:** *Kesulitan memecahkan masalah perilaku fungsi Lambda* yang kompleks di lingkungan aktual AWS 

Lambda menyediakan fitur debugging jarak jauh melalui file. AWS Toolkit for Visual Studio Code Untuk pengaturan dan instruksi umum, lihat[Debug fungsi Lambda dari jarak jauh dengan Visual Studio Code](debugging.md).

Untuk petunjuk mendetail tentang pemecahan masalah, kasus penggunaan lanjutan, dan ketersediaan wilayah, lihat Fungsi [Lambda debugging jarak jauh](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/lambda-remote-debug.html) di Panduan Pengguna. AWS Toolkit for Visual Studio Code 

## Lambda: Eksekusi memerlukan waktu yang lama
<a name="troubleshooting-execution-toolong"></a>

**Masalah:** *Eksekusi fungsi membutuhkan waktu terlalu lama.*

Jika kode Anda membutuhkan waktu lebih lama untuk dijalankan di Lambda daripada di mesin lokal Anda, kode mungkin dibatasi oleh memori atau daya pemrosesan yang tersedia untuk fungsi. [Konfigurasikan fungsi dengan memori tambahan](configuration-memory.md) untuk meningkatkan memori dan CPU.

## Lambda: Payload acara tak terduga
<a name="troubleshooting-execution-unexpected-payload"></a>

**Masalah:** *Kesalahan fungsi terkait dengan JSON yang salah bentuk atau validasi data yang tidak memadai*.

Semua fungsi Lambda menerima payload peristiwa di parameter pertama handler. Payload acara adalah struktur JSON yang mungkin berisi array dan elemen bersarang.

JSON yang salah dapat terjadi ketika disediakan oleh layanan hulu yang tidak menggunakan proses yang kuat untuk memeriksa struktur JSON. Hal ini terjadi ketika layanan menggabungkan string teks atau menanamkan input pengguna yang belum dibersihkan. JSON juga sering diserialisasikan untuk lewat antar layanan. Selalu mengurai struktur JSON baik sebagai produsen maupun konsumen JSON untuk memastikan bahwa strukturnya valid.

Demikian pula, gagal memeriksa rentang nilai dalam muatan acara dapat mengakibatkan kesalahan. Contoh ini menunjukkan fungsi yang menghitung pemotongan pajak:

```
exports.handler = async (event) => {
    let pct = event.taxPct
    let salary = event.salary

    // Calculate % of paycheck for taxes
    return (salary * pct)
}
```

Fungsi ini menggunakan gaji dan tarif pajak dari muatan acara untuk melakukan perhitungan. Namun, kode gagal untuk memeriksa apakah atribut ada. Ini juga gagal untuk memeriksa tipe data, atau memastikan batasan, seperti memastikan bahwa persentase pajak antara 0 dan 1. Akibatnya, nilai di luar batas-batas ini menghasilkan hasil yang tidak masuk akal. Jenis yang salah atau atribut yang hilang menyebabkan kesalahan runtime.

Buat pengujian untuk memastikan bahwa fungsi Anda menangani ukuran muatan yang lebih besar. Ukuran maksimum untuk muatan acara Lambda adalah 1 MB. Bergantung pada kontennya, muatan yang lebih besar dapat berarti lebih banyak item yang diteruskan ke fungsi atau lebih banyak data biner yang disematkan dalam atribut JSON. Dalam kedua kasus, ini dapat menghasilkan lebih banyak pemrosesan untuk fungsi Lambda.

Muatan yang lebih besar juga dapat menyebabkan batas waktu. Misalnya, fungsi Lambda memproses satu catatan per 100 ms dan memiliki batas waktu 3 detik. Pemrosesan berhasil untuk 0-29 item dalam muatan. Namun, setelah payload berisi lebih dari 30 item, fungsi akan habis dan menimbulkan kesalahan. Untuk menghindari hal ini, pastikan batas waktu diatur untuk menangani waktu pemrosesan tambahan untuk jumlah maksimum item yang diharapkan.

## Lambda: Ukuran muatan besar yang tak terduga
<a name="troubleshooting-execution-large-payload"></a>

**Masalah:** *Fungsi habis waktu atau menyebabkan kesalahan karena muatan besar*.

Muatan yang lebih besar dapat menyebabkan batas waktu dan kesalahan. Sebaiknya buat pengujian untuk memastikan bahwa fungsi Anda menangani muatan terbesar yang diharapkan, dan memastikan batas waktu fungsi disetel dengan benar.

Selain itu, muatan peristiwa tertentu dapat berisi petunjuk ke sumber daya lain. Misalnya, fungsi Lambda dengan memori 128 MB dapat melakukan pemrosesan gambar pada file JPG yang disimpan sebagai objek di S3. Fungsi ini berfungsi seperti yang diharapkan dengan file gambar yang lebih kecil. Namun, ketika file JPG yang lebih besar disediakan sebagai input, fungsi Lambda memunculkan kesalahan karena kehabisan memori. Untuk menghindari hal ini, kasus uji harus menyertakan contoh dari batas atas ukuran data yang diharapkan. Kode juga harus memvalidasi ukuran payload.

## Lambda: Kesalahan pengkodean dan decoding JSON
<a name="troubleshooting-execution-json-encoding"></a>

**Masalah: NoSuchKey ** *pengecualian saat mengurai input JSON*.

Periksa untuk memastikan Anda memproses atribut JSON dengan benar. Misalnya, untuk peristiwa yang dihasilkan oleh S3, `s3.object.key` atribut berisi nama kunci objek yang dikodekan URL. Banyak fungsi memproses atribut ini sebagai teks untuk memuat objek S3 yang direferensikan:

**Example**  

```
const originalText = await s3.getObject({
  Bucket: event.Records[0].s3.bucket.name,
  Key: event.Records[0].s3.object.key
}).promise()
```

Kode ini bekerja dengan nama kunci `james.jpg` tetapi menimbulkan `NoSuchKey` kesalahan saat namanya. `james beswick.jpg` Karena pengkodean URL mengonversi spasi dan karakter lain dalam nama kunci, Anda harus memastikan bahwa fungsi memecahkan kode kunci sebelum menggunakan data ini:

**Example**  

```
const originalText = await s3.getObject({
  Bucket: event.Records[0].s3.bucket.name,
  Key: decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, " "))
}).promise()
```

## Lambda: Log atau jejak tidak muncul
<a name="troubleshooting-execution-logstraces"></a>

**Masalah:** *Log tidak muncul di CloudWatch Log.*

**Masalah:** *Jejak tidak muncul di AWS X-Ray.*

Fungsi Anda memerlukan izin untuk memanggil CloudWatch Log dan X-Ray. Perbarui [peran eksekusi](lambda-intro-execution-role.md) untuk memberikan izin. Tambahkan kebijakan terkelola berikut untuk mengaktifkan log dan pelacakan.
+ **AWSLambdaBasicExecutionRole**
+ **AWSXRayDaemonWriteAccess**

Saat Anda menambahkan izin ke fungsi Anda, lakukan pembaruan sepele ke kode atau konfigurasinya juga. Ini memaksa instance menjalankan fungsi Anda, yang memiliki kredensialnya yang sudah ketinggalan zaman, untuk berhenti dan diganti.

**catatan**  
Mungkin diperlukan 5 hingga 10 menit agar log muncul setelah pemanggilan fungsi.

## Lambda: Tidak semua log fungsi saya muncul
<a name="troubleshooting-execution-missinglogs"></a>

**Masalah:** *Log fungsi tidak ada di CloudWatch Log, meskipun izin saya benar*

Jika Anda Akun AWS mencapai [batas kuota CloudWatch Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html), fungsi CloudWatch throttles logging berfungsi. Ketika ini terjadi, beberapa log yang dihasilkan oleh fungsi Anda mungkin tidak muncul di CloudWatch Log.

Jika fungsi Anda mengeluarkan log pada tingkat yang terlalu tinggi bagi Lambda untuk memprosesnya, ini juga dapat menyebabkan keluaran log tidak muncul di Log. CloudWatch Ketika Lambda tidak dapat mengirim log CloudWatch pada tingkat yang dihasilkan oleh fungsi Anda, Lambda akan menjatuhkan log untuk mencegah eksekusi fungsi Anda melambat. Berharap untuk secara konsisten mengamati log yang dijatuhkan ketika throughput log Anda melebihi 2 MB/s untuk satu aliran log.

Jika fungsi Anda dikonfigurasi untuk menggunakan [log berformat JSON](monitoring-cloudwatchlogs-logformat.md), Lambda mencoba mengirim [`logsDropped`](telemetry-schema-reference.md#platform-logsDropped)peristiwa ke CloudWatch Log saat menjatuhkan log. Namun, saat CloudWatch membatasi logging fungsi Anda, peristiwa ini mungkin tidak mencapai CloudWatch Log, sehingga Anda tidak akan selalu melihat catatan saat Lambda menjatuhkan log. 

Untuk memeriksa apakah Anda Akun AWS telah mencapai batas kuota CloudWatch Log, lakukan hal berikut:

1. Buka [Konsol Service Quotas](https://console.aws.amazon.com/servicequotas).

1. Di panel navigasi, pilih **Layanan AWS **.

1. Dari daftar **AWS layanan**, cari Amazon CloudWatch Logs.

1. Dalam daftar **kuota Layanan**, pilih`CreateLogGroup throttle limit in transactions per second`, `CreateLogStream throttle limit in transactions per second` dan `PutLogEvents throttle limit in transactions per second` kuota untuk melihat penggunaan Anda.

Anda juga dapat mengatur CloudWatch alarm untuk mengingatkan Anda ketika penggunaan akun Anda melebihi batas yang Anda tentukan untuk kuota ini. Lihat [Membuat CloudWatch alarm berdasarkan ambang batas statis](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html) untuk mempelajari lebih lanjut.

Jika batas kuota default untuk CloudWatch Log tidak cukup untuk kasus penggunaan Anda, Anda dapat [meminta peningkatan kuota](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html).

## Lambda: Fungsi kembali sebelum eksekusi selesai
<a name="troubleshooting-execution-unfinished"></a>

**Masalah: (Node.js)** *Fungsi kembali sebelum kode menyelesaikan eksekusi*

Banyak pustaka, termasuk AWS SDK, beroperasi secara asinkron. Ketika Anda melakukan panggilan jaringan atau melakukan operasi lain yang perlu menunggu respons, pustaka mengembalikan objek yang disebut janji, yang melacak kemajuan operasi di latar belakang.

Untuk menunggu janji selesai menjadi respons, gunakan kata kunci `await`. Ini menghalangi kode handler Anda beroperasi hingga janji diselesaikan menjadi objek yang berisi respons. Jika Anda tidak perlu menggunakan data dari respons dalam kode, Anda dapat mengembalikan janji secara langsung ke runtime.

Beberapa pustaka tidak mengembalikan janji, tetapi dapat dirangkum dalam kode yang mengembalikan janji. Untuk informasi selengkapnya, lihat [Tentukan penangan fungsi Lambda di Node.js](nodejs-handler.md).

## Lambda: Menjalankan versi atau alias fungsi yang tidak diinginkan
<a name="unintended-function"></a>

**Masalah:** *Versi fungsi atau alias tidak dipanggil*

Saat Anda mempublikasikan fungsi Lambda baru di konsol atau menggunakan AWS SAM, versi kode terbaru diwakili oleh. `$LATEST` Secara default, pemanggilan yang tidak menentukan versi atau alias secara otomatis menargetkan `$LATEST` versi kode fungsi Anda.

Jika Anda menggunakan versi fungsi atau alias tertentu, ini adalah versi fungsi yang diterbitkan yang tidak dapat diubah sebagai tambahan. `$LATEST` Saat memecahkan masalah fungsi ini, pertama-tama tentukan bahwa pemanggil telah memanggil versi atau alias yang dimaksud. Anda dapat melakukan ini dengan memeriksa log fungsi Anda. Versi fungsi yang dipanggil selalu ditampilkan di baris log START:

![\[debugging ops gambar 1\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-1.png)


## Lambda: Mendeteksi loop tak terbatas
<a name="infinite-loops"></a>

**Masalah:** *Pola loop tak terbatas terkait dengan fungsi Lambda*

Ada dua jenis loop tak terbatas dalam fungsi Lambda. Yang pertama ada di dalam fungsi itu sendiri, disebabkan oleh loop yang tidak pernah keluar. Pemanggilan berakhir hanya ketika fungsi habis waktu. Anda dapat mengidentifikasi ini dengan memantau batas waktu, dan kemudian memperbaiki perilaku perulangan.

Jenis loop kedua adalah antara fungsi Lambda dan sumber daya lainnya AWS . Ini terjadi ketika peristiwa dari sumber daya seperti bucket S3 memanggil fungsi Lambda, yang kemudian berinteraksi dengan sumber daya sumber yang sama untuk memicu peristiwa lain. Ini memanggil fungsi lagi, yang menciptakan interaksi lain dengan bucket S3 yang sama, dan seterusnya. Jenis loop ini dapat disebabkan oleh sejumlah sumber AWS peristiwa yang berbeda, termasuk antrian Amazon SQS dan tabel DynamoDB. Anda dapat menggunakan [deteksi loop rekursif](invocation-recursion.md) untuk mengidentifikasi pola-pola ini.

![\[operasi debugging gambar 2\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-2.png)


Anda dapat menghindari loop ini dengan memastikan bahwa fungsi Lambda menulis ke sumber daya yang tidak sama dengan sumber daya yang dikonsumsi. Jika Anda harus mempublikasikan data kembali ke sumber daya konsumsi, pastikan bahwa data baru tidak memicu peristiwa yang sama. Atau, gunakan [pemfilteran acara](invocation-eventfiltering.md). Misalnya, berikut adalah dua solusi yang diusulkan untuk loop tak terbatas dengan sumber daya S3 dan DynamoDB:
+ Jika Anda menulis kembali ke bucket S3 yang sama, gunakan awalan atau akhiran yang berbeda dari pemicu peristiwa.
+ Jika Anda menulis item ke tabel DynamoDB yang sama, sertakan atribut yang dapat difilter oleh fungsi Lambda yang memakan. Jika Lambda menemukan atribut, itu tidak akan menghasilkan pemanggilan lain.

## Umum: Ketidaktersediaan layanan hilir
<a name="downstream-unavailability"></a>

**Masalah:** *Layanan hilir yang diandalkan fungsi Lambda Anda* tidak tersedia

Untuk fungsi Lambda yang memanggil titik akhir pihak ketiga atau sumber daya hilir lainnya, pastikan bahwa mereka dapat menangani kesalahan layanan dan batas waktu. Sumber daya hilir ini dapat memiliki waktu respons yang bervariasi, atau menjadi tidak tersedia karena gangguan layanan. Bergantung pada implementasinya, kesalahan hilir ini dapat muncul sebagai batas waktu atau pengecualian Lambda jika respons kesalahan layanan tidak ditangani dalam kode fungsi.

Kapan saja suatu fungsi bergantung pada layanan hilir, seperti panggilan API, menerapkan penanganan kesalahan yang sesuai, dan coba lagi logika. Untuk layanan penting, fungsi Lambda harus mempublikasikan metrik atau log ke. CloudWatch Misalnya, jika API pembayaran pihak ketiga tidak tersedia, fungsi Lambda Anda dapat mencatat informasi ini. Anda kemudian dapat mengatur CloudWatch alarm untuk mengirim pemberitahuan yang terkait dengan kesalahan ini.

Karena Lambda dapat menskalakan dengan cepat, layanan hilir non-server mungkin kesulitan menangani lonjakan lalu lintas. Ada tiga pendekatan umum untuk menangani ini:
+  **Caching** — Pertimbangkan untuk menyimpan hasil dari nilai yang dikembalikan oleh layanan pihak ketiga jika tidak sering berubah. Anda dapat menyimpan nilai-nilai ini dalam variabel global dalam fungsi Anda, atau layanan lain. Misalnya, hasil untuk kueri daftar produk dari instans Amazon RDS dapat disimpan untuk jangka waktu tertentu dalam fungsi untuk mencegah kueri yang berlebihan.
+  **Antrian** — Saat menyimpan atau memperbarui data, tambahkan antrean Amazon SQS antara fungsi Lambda dan sumber daya. Antrian tahan lama mempertahankan data sementara layanan hilir memproses pesan.
+  **Proxy** — Di mana koneksi berumur panjang biasanya digunakan, seperti untuk instans Amazon RDS, gunakan lapisan proxy untuk mengumpulkan dan menggunakan kembali koneksi tersebut. Untuk database relasional, [Amazon RDS Proxy](https://github.com/aws-samples/s3-to-lambda-patterns/tree/master/docrepository) adalah layanan yang dirancang untuk membantu meningkatkan skalabilitas dan ketahanan dalam aplikasi berbasis Lambda.

## AWS SDK: Versi dan pembaruan
<a name="troubleshooting-execution-versions"></a>

**Masalah: AWS ** *SDK yang disertakan pada runtime bukanlah versi terbaru*

**Masalah: AWS ** *SDK yang disertakan pada runtime diperbarui secara* otomatis

Runtime untuk bahasa yang ditafsirkan menyertakan versi SDK AWS . Lambda memperbarui runtime ini secara berkala untuk menggunakan versi SDK terbaru. Untuk menemukan versi SDK yang disertakan dalam runtime Anda, lihat bagian berikut:
+ [Runtime termasuk versi SDK (Node.js)](lambda-nodejs.md#nodejs-sdk-included)
+ [Runtime termasuk versi SDK (Python)](lambda-python.md#python-sdk-included)
+ [Runtime termasuk versi SDK (Ruby)](lambda-ruby.md#ruby-sdk-included)

Untuk menggunakan versi AWS SDK yang lebih baru, atau untuk mengunci fungsi Anda ke versi tertentu, Anda dapat menggabungkan pustaka dengan kode fungsi Anda, atau [membuat lapisan Lambda](chapter-layers.md). Untuk perincian tentang pembuatan paket deployment dengan dependensi, lihat topik berikut:

------
#### [ Node.js ]

[Deploy fungsi Lambda Node.js dengan arsip file .zip](nodejs-package.md) 

------
#### [ Python ]

 [Bekerja dengan arsip file.zip untuk fungsi Python Lambda](python-package.md) 

------
#### [ Ruby ]

 [Deploy fungsi Lambda Ruby dengan arsip file .zip](ruby-package.md) 

------
#### [ Java ]

 [Deploy fungsi Java Lambda dengan arsip file .zip atau JAR](java-package.md) 

------
#### [ Go ]

 [Deploy fungsi Go Lambda dengan arsip file .zip](golang-package.md) 

------
#### [ C\$1 ]

 [Bangun dan terapkan fungsi C\$1 Lambda dengan arsip file.zip](csharp-package.md) 

------
#### [ PowerShell ]

 [Menyebarkan fungsi PowerShell Lambda dengan arsip file.zip](powershell-package.md) 

------

## Python: Pustaka memuat dengan tidak benar
<a name="troubleshooting-execution-libraries"></a>

**Masalah:** (Python) *Beberapa pustaka tidak memuat dengan benar dari paket deployment*

Pustaka dengan modul ekstensi yang tertulis dalam C atau C\$1\$1 harus disusun dalam lingkungan dengan arsitektur prosesor yang sama dengan Lambda (Amazon Linux). Untuk informasi selengkapnya, lihat [Bekerja dengan arsip file.zip untuk fungsi Python Lambda](python-package.md).

## Java: Fungsi Anda membutuhkan waktu lebih lama untuk memproses peristiwa setelah memperbarui ke Java 17 dari Java 11
<a name="troubleshooting-execution-java-perf"></a>

**Masalah:** (Java) *Fungsi Anda membutuhkan waktu lebih lama untuk memproses peristiwa setelah memperbarui ke Java 17 dari Java 11*

Tune compiler Anda menggunakan `JAVA_TOOL_OPTIONS` parameter. Runtime Lambda untuk Java 17 dan versi Java yang lebih baru mengubah opsi kompiler default. Perubahan ini meningkatkan waktu mulai dingin untuk fungsi berumur pendek, tetapi perilaku sebelumnya lebih cocok untuk fungsi komputasi yang intensif dan berjalan lebih lama. Setel `JAVA_TOOL_OPTIONS` `-XX:-TieredCompilation` untuk kembali ke perilaku Java 11. Untuk informasi tentang parameter `JAVA_TOOL_OPTIONS`, lihat [Memahami variabel `JAVA_TOOL_OPTIONS` lingkungan](java-customization.md#java-tool-options).

## Kafka: Penanganan kesalahan dan coba lagi masalah konfigurasi
<a name="troubleshooting-kafka-error-handling"></a>

**Masalah:** *Pemetaan sumber acara Kafka gagal mengonfigurasi pengaturan coba lagi* atau tujuan yang gagal

Konfigurasi coba ulang Kafka dan tujuan saat gagal hanya tersedia untuk pemetaan sumber peristiwa dengan mode yang disediakan diaktifkan. Pastikan Anda telah mengonfigurasi `MinimumPollers` `ProvisionedPollerConfig` sebelum mencoba mengatur konfigurasi coba lagi.

Kesalahan konfigurasi umum:
+ **Percobaan ulang tak terbatas dengan batch bisect** — Anda tidak dapat mengaktifkan `BisectBatchOnFunctionError` kapan `MaximumRetryAttempts` disetel ke -1 (tak terbatas). Tetapkan batas coba lagi yang terbatas atau nonaktifkan batch bisect.
+ **Rekursi topik yang sama** — Topik tujuan kegagalan Kafka tidak bisa sama dengan topik sumber Anda. Pilih nama topik yang berbeda untuk topik surat mati Anda.
+ **Format tujuan Kafka tidak valid - Gunakan `kafka://<topic-name>` format** saat menentukan topik Kafka sebagai tujuan gagal.
+ **kafka: masalah WriteData izin** — Pastikan peran eksekusi Anda memiliki `kafka-cluster:WriteData` izin untuk topik tujuan. Topik tidak ada pengecualian batas waktu atau masalah pembatasan API penulisan mungkin memerlukan peningkatan batas akun.

# Memecahkan masalah pemetaan sumber acara di Lambda
<a name="troubleshooting-event-source-mapping"></a>

Masalah di Lambda yang berhubungan dengan [pemetaan sumber peristiwa](invocation-eventsourcemapping.md) bisa lebih kompleks karena melibatkan debugging di beberapa layanan. Selain itu, perilaku sumber peristiwa dapat berbeda berdasarkan sumber peristiwa yang tepat yang digunakan. Bagian ini mencantumkan masalah umum yang melibatkan pemetaan sumber peristiwa, dan memberikan panduan tentang cara mengidentifikasi dan memecahkan masalah mereka.

**catatan**  
Bagian ini menggunakan sumber peristiwa Amazon SQS untuk ilustrasi, tetapi prinsipnya berlaku untuk pemetaan sumber peristiwa lain yang mengantrekan pesan untuk fungsi Lambda.

## Mengidentifikasi dan mengelola throttling
<a name="esm-throttling"></a>

Di Lambda, pelambatan terjadi ketika Anda mencapai batas konkurensi fungsi atau akun Anda. Perhatikan contoh berikut, di mana ada fungsi Lambda yang membaca pesan dari antrian Amazon SQS. Fungsi Lambda ini mensimulasikan pemanggilan 30 detik, dan memiliki ukuran batch 1. Ini berarti bahwa fungsi hanya memproses 1 pesan setiap 30 detik:

```
const doWork = (ms) => new Promise(resolve => setTimeout(resolve, ms))

exports.handler = async (event) => {
    await doWork(30000)

}
```

Dengan waktu doa yang begitu lama, pesan mulai tiba dalam antrian lebih cepat daripada yang diproses. Jika konkurensi tanpa syarat akun Anda adalah 100, Lambda menskalakan hingga 100 eksekusi bersamaan, dan kemudian terjadi pembatasan. Anda dapat melihat pola ini di CloudWatch metrik untuk fungsi:

![\[operasi debugging angka 10\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-10.png)


CloudWatch metrik untuk fungsi tidak menunjukkan kesalahan, tetapi bagan **eksekusi bersamaan** menunjukkan bahwa konkurensi maksimum 100 tercapai. Akibatnya, bagan **Throttles menunjukkan throttling** di tempatnya.

Anda dapat mendeteksi pelambatan dengan CloudWatch alarm, dan mengatur alarm kapan saja metrik pelambatan untuk suatu fungsi lebih besar dari 0. Setelah mengidentifikasi masalah pelambatan, Anda memiliki beberapa opsi untuk resolusi:
+ Minta peningkatan konkurensi dari AWS Support di Wilayah ini.
+ Identifikasi masalah kinerja dalam fungsi untuk meningkatkan kecepatan pemrosesan dan karenanya meningkatkan throughput.
+ Tingkatkan ukuran batch fungsi, sehingga lebih banyak pesan diproses oleh setiap pemanggilan.

## Kesalahan dalam fungsi pemrosesan
<a name="esm-processing-function"></a>

Jika fungsi pemrosesan melempar kesalahan, Lambda mengembalikan pesan ke antrian SQS. Lambda mencegah fungsi Anda dari penskalaan untuk mencegah kesalahan pada skala. Metrik SQS berikut CloudWatch menunjukkan masalah dengan pemrosesan antrian:

![\[operasi debugging gambar 11\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-11.png)


Secara khusus, usia pesan tertua dan jumlah pesan yang terlihat meningkat, sementara tidak ada pesan yang dihapus. Antrian terus bertambah tetapi pesan tidak diproses. CloudWatch Metrik untuk pemrosesan fungsi Lambda juga menunjukkan bahwa ada masalah:

![\[operasi debugging gambar 12\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-12.png)


Metrik **jumlah kesalahan** tidak nol dan berkembang, sementara **eksekusi bersamaan** telah berkurang dan pelambatan telah berhenti. Ini menunjukkan bahwa Lambda telah berhenti meningkatkan fungsi Anda karena kesalahan. CloudWatch Log untuk fungsi memberikan rincian jenis kesalahan.

Anda dapat mengatasi masalah ini dengan mengidentifikasi fungsi yang menyebabkan kesalahan, lalu menemukan dan menyelesaikan kesalahan. Setelah Anda memperbaiki kesalahan dan menerapkan kode fungsi baru, CloudWatch metrik akan menunjukkan pemulihan pemrosesan:

![\[operasi debugging gambar 13\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/debugging-ops-figure-13.png)


Di sini, metrik **jumlah kesalahan** turun menjadi nol dan metrik **tingkat Sukses** kembali ke 100%. Lambda mulai meningkatkan fungsi lagi, seperti yang ditunjukkan dalam grafik eksekusi **bersamaan**.

## Mengidentifikasi dan menangani tekanan balik
<a name="esm-backpressure"></a>

Jika produser acara secara konsisten menghasilkan pesan untuk antrian SQS lebih cepat daripada fungsi Lambda yang dapat memprosesnya, tekanan balik terjadi. Dalam hal ini, pemantauan SQS harus menunjukkan usia pesan tertua yang tumbuh secara linier, bersama dengan perkiraan jumlah pesan yang terlihat. Anda dapat mendeteksi tekanan balik dalam antrian menggunakan alarm. CloudWatch 

Langkah-langkah untuk mengatasi tekanan balik tergantung pada beban kerja Anda. Jika tujuan utamanya adalah untuk meningkatkan kemampuan pemrosesan dan throughput oleh fungsi Lambda, Anda memiliki beberapa opsi:
+ Minta peningkatan konkurensi di Wilayah tertentu dari AWS Support.
+ Tingkatkan ukuran batch fungsi, sehingga lebih banyak pesan diproses oleh setiap pemanggilan.

# Menyelesaikan masalah jaringan di Lambda
<a name="troubleshooting-networking"></a>

Secara default, Lambda menjalankan fungsi Anda di virtual private cloud (VPC) dengan konektivitas ke layanan AWS dan internet. Untuk mengakses sumber daya jaringan lokal, Anda dapat [mengonfigurasi fungsi Anda untuk terhubung ke VPC di akun Anda](configuration-vpc.md). Saat menggunakan fitur ini, Anda mengelola akses internet fungsi dan konektivitas jaringan dengan sumber daya Amazon Virtual Private Cloud (Amazon VPC).

Kesalahan konektivitas jaringan dapat diakibatkan oleh masalah dengan konfigurasi perutean VPC Anda, aturan grup keamanan, izin peran AWS Identity and Access Management (IAM), atau terjemahan alamat jaringan (NAT), atau dari ketersediaan sumber daya seperti alamat IP atau antarmuka jaringan. Bergantung pada masalahnya, Anda mungkin melihat kesalahan atau batas waktu tertentu jika permintaan tidak dapat mencapai tujuannya.

**Topics**
+ [VPC: Fungsi kehilangan akses internet atau waktu habis](#troubleshooting-networking-cfn)
+ [VPC: Koneksi TCP atau UDP sebentar-sebentar gagal](#troubleshooting-networking-tcp-udp)
+ [VPC: Fungsi membutuhkan akses Layanan AWS tanpa menggunakan internet](#troubleshooting-networking-access)
+ [VPC: Batas antarmuka jaringan elastis tercapai](#troubleshooting-networking-limit)
+ [EC2: Antarmuka jaringan elastis dengan jenis “lambda”](#troubleshooting-networking-eni)
+ [DNS: Gagal terhubung ke host dengan UNKNOWNHOSTEXCEPTION](#troubleshooting-networking-dns-tcp)

## VPC: Fungsi kehilangan akses internet atau waktu habis
<a name="troubleshooting-networking-cfn"></a>

**Masalah:** *Fungsi Lambda Anda kehilangan akses internet setelah tersambung ke VPC*.

**Kesalahan:** *Kesalahan: connect ETIMEDOUT 176.32.98.189:443*

**Kesalahan:** *Kesalahan: Batas waktu tugas berakhir setelah 10.00 detik*

**Kesalahan: ReadTimeoutError***: Baca waktunya habis. (baca batas waktu = 15)*

Saat Anda menghubungkan fungsi ke VPC, semua permintaan keluar melalui VPC. Untuk terhubung ke internet, konfigurasikan VPC Anda agar mengirim lalu lintas keluar dari subnet fungsi ke gateway NAT di subnet publik. Untuk informasi lebih lanjut dan contoh konfigurasi VPC, lihat [Aktifkan akses internet untuk fungsi Lambda yang terhubung dengan VPC](configuration-vpc-internet.md).

Jika beberapa koneksi TCP Anda habis waktu, lihat [VPC: Koneksi TCP atau UDP sebentar-sebentar gagal](#troubleshooting-networking-tcp-udp) apakah subnet Anda menggunakan daftar kontrol akses jaringan (NACL). Jika tidak, ini kemungkinan karena fragmentasi paket. Fungsi Lambda tidak dapat menangani permintaan TCP terfragmentasi yang masuk, karena Lambda tidak mendukung fragmentasi IP untuk TCP atau ICMP.

## VPC: Koneksi TCP atau UDP sebentar-sebentar gagal
<a name="troubleshooting-networking-tcp-udp"></a>

**catatan**  
Masalah ini hanya berlaku jika subnet Anda menggunakan [daftar kontrol akses jaringan (ACL](https://docs.aws.amazon.com//vpc/latest/userguide/vpc-network-acls.html#nacl-basics)). Jaringan ACLs tidak diperlukan untuk Lambda untuk terhubung ke subnet Anda.

**Masalah:** *Lambda sebentar-sebentar kehilangan koneksi ke subnet VPC Anda, yang telah Anda konfigurasi untuk daftar kontrol akses jaringan* (ACL).

Untuk fungsi Lambda berkemampuan VPC AWS , [buat ENIs](configuration-vpc.md#configuration-vpc-enis) hyperplane di akun pelanggan, dan gunakan `1024` port singkat untuk menghubungkan Lambda `65535` ke VPC pelanggan. Jika Anda menggunakan jaringan ACLs di subnet target, Anda harus mengizinkan rentang port `1024` `65535` untuk TCP dan UDP. Tidak mengizinkan rentang port penuh ini dapat menyebabkan kegagalan koneksi intermiten.

## VPC: Fungsi membutuhkan akses Layanan AWS tanpa menggunakan internet
<a name="troubleshooting-networking-access"></a>

**Masalah:** *Fungsi Lambda Anda membutuhkan akses Layanan AWS tanpa menggunakan internet.*

Untuk menghubungkan fungsi Layanan AWS dari subnet pribadi tanpa akses internet, gunakan titik akhir VPC.

## VPC: Batas antarmuka jaringan elastis tercapai
<a name="troubleshooting-networking-limit"></a>

**Kesalahan: ENILimit** *ReachedException: Batas interface network elastis tercapai untuk VPC fungsi*.

Saat Anda menghubungkan fungsi Lambda ke VPC, Lambda membuat elastic network interface untuk setiap kombinasi subnet dan grup keamanan yang terpasang pada fungsi tersebut. Kuota layanan default adalah 250 antarmuka jaringan per VPC. Untuk meminta peningkatan kuota, gunakan konsol [Service Quotas](https://console.aws.amazon.com/servicequotas/home/services/lambda/quotas/L-9FEE3D26).

## EC2: Antarmuka jaringan elastis dengan jenis “lambda”
<a name="troubleshooting-networking-eni"></a>

 **Kode Kesalahan:** *Klien. OperationNotPermitted*

 **Pesan galat:** *Grup keamanan tidak dapat dimodifikasi untuk jenis antarmuka ini*

Anda akan menerima kesalahan ini jika Anda mencoba memodifikasi elastic network interface (ENI) yang dikelola oleh Lambda. `ModifyNetworkInterfaceAttribute`Ini tidak termasuk dalam API Lambda untuk operasi pembaruan pada antarmuka jaringan elastis yang dibuat oleh Lambda.

## DNS: Gagal terhubung ke host dengan UNKNOWNHOSTEXCEPTION
<a name="troubleshooting-networking-dns-tcp"></a>

 **Pesan Kesalahan:** *UNKNOWNHOSTEXCEPTION*

Fungsi Lambda mendukung maksimum 20 koneksi TCP bersamaan untuk resolusi DNS. Fungsi Anda mungkin melelahkan batas itu. Permintaan DNS yang paling umum dilakukan melalui UDP. Jika fungsi Anda hanya membuat koneksi DNS UDP, ini tidak mungkin menjadi masalah Anda. Kesalahan ini biasanya terjadi karena kesalahan konfigurasi atau infrastruktur yang terdegradasi, jadi sebelum memeriksa lalu lintas DNS Anda secara mendalam, konfirmasikan bahwa infrastruktur DNS Anda dikonfigurasi dan sehat dengan benar dan bahwa fungsi Lambda Anda mengacu pada host yang ditentukan dalam DNS.

Jika Anda mendiagnosis masalah terkait dengan maksimum koneksi TCP, perhatikan bahwa Anda tidak dapat meminta peningkatan batas ini. Jika fungsi Lambda Anda kembali ke DNS TCP karena muatan DNS yang besar, konfirmasikan bahwa solusi Anda menggunakan pustaka yang mendukung EDNS. Untuk informasi lebih lanjut tentang EDNS, lihat standar [RFC 6891](https://datatracker.ietf.org/doc/html/rfc6891). Jika muatan DNS Anda secara konsisten melebihi ukuran maks EDNS, solusi Anda mungkin masih menghabiskan batas DNS TCP.