Menyelesaikan masalah deployment di Lambda - AWS Lambda

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

Menyelesaikan masalah deployment di Lambda

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 AWS CLI, Anda dapat melihat kesalahan dari Lambda 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 LambdaAPI, konsol, atau alat. 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.

Untuk informasi selengkapnya tentang debugging dan pemecahan masalah aplikasi Lambda, lihat Debugging di Tanah Tanpa Server.

Umum: Izin ditolak/Tidak dapat memuat file tersebut

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

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 dapat dieksekusi izin yang benar, jalankan perintah berikut.

chmod 755 <filepath>

Untuk mengubah izin file di Windows, lihat Mengatur, Melihat, Mengubah, atau Menghapus Izin pada Objek dalam dokumentasi Microsoft Windows.

Umum: Terjadi kesalahan saat memanggil UpdateFunctionCode

Kesalahan: Terjadi kesalahan (RequestEntityTooLargeException) saat memanggil UpdateFunctionCode operasi

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

catatan

Ketika Anda mengunggah file langsung dengan AWS CLI, AWS SDK, atau sebaliknya, ZIP file 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

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, atau menggunakan paket dan perintah penerapan di or. AWS CLI AWS SAM CLI 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

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 tersebut

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

Kesalahan: index.handler tidak ditentukan atau tidak terekspor

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

Kesalahan: metode `penangan 'yang tidak ditentukan untuk # <:0x000055b76ccebf98> LambdaHandler

Kesalahan: Tidak ada metode publik yang dinamai handleRequest dengan tanda tangan metode yang sesuai yang ditemukan di kelas Function.handler

Kesalahan: Tidak dapat menemukan metode '' dalam tipe handleRequest 'Function.Handler' dari perakitan 'Fungsi'

Nama metode handler dalam konfigurasi handler fungsi tidak cocok dengan kode. Setiap runtime menentukan konvensi penamaan untuk handler, 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.

Lambda: Konversi lapisan gagal

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

Kesalahan: InvalidParameterValueException: Lambda tidak dapat mengonfigurasi variabel lingkungan Anda karena variabel lingkungan yang Anda berikan melebihi batas 4KB. String diukur: {"A1":” uSFe 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 HTTP permintaan juga terbatas.

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs20.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"}. ASCIIKarakter standar dalam nilai variabel lingkungan masing-masing menggunakan satu byte. Karakter Extended ASCII dan Unicode dapat menggunakan antara 2 byte dan 4 byte per karakter.

Lambda: InvalidParameterValueException

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.

Lambda: Konkurensi dan kuota memori

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 Anda. AWS Akun baru telah mengurangi kuota konkurensi dan memori. Untuk mengatasi kesalahan yang terkait dengan konkurensi, Anda dapat meminta peningkatan kuota. 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) melebihi kuota konkurensi akun Anda.

  • Memori: Kesalahan terjadi jika jumlah memori yang dialokasikan ke fungsi melebihi kuota memori akun Anda.