Invokasi sinkron - AWS Lambda

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

Invokasi sinkron

Saat Anda memanggil fungsi secara sinkron, Lambda menjalankan fungsi dan menunggu suatu respons. Ketika fungsi selesai, Lambda mengembalikan respons dari kode fungsi dengan data tambahan, seperti versi fungsi yang diaktifkan. Untuk mengaktifkan fungsi secara sinkron dengan AWS CLI, gunakan perintah invoke.

aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{ "key": "value" }' response.json

cli-binary-formatOpsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankanaws configure set cli-binary-format raw-in-base64-out. Untuk informasi selengkapnya, lihat opsi baris perintah global yang AWS CLI didukung di Panduan AWS Command Line Interface Pengguna untuk Versi 2.

Anda akan melihat output berikut:

{ "ExecutedVersion": "$LATEST", "StatusCode": 200 }

Diagram berikut menunjukkan klien yang memanggil fungsi Lambda secara sinkron. Lambda mengirimkan peristiwa tersebut secara langsung ke fungsi dan mengirimkan respons fungsi kembali ke invoker.

Klien memanggil fungsi secara sinkron dan menunggu respons.

payload adalah string yang berisi peristiwa dalam format JSON. Nama file tempat AWS CLI menulis respons dari fungsi adalah response.json. Jika fungsi mengembalikan objek atau kesalahan, badan respon adalah objek atau kesalahan dalam format JSON. Jika fungsi keluar tanpa kesalahan, badan responsnya adalahnull.

catatan

Lambda tidak menunggu ekstensi eksternal selesai sebelum mengirim respons. Ekstensi eksternal berjalan sebagai proses independen di lingkungan eksekusi dan terus berjalan setelah pemanggilan fungsi selesai. Untuk informasi selengkapnya, lihat Menambah fungsi Lambda menggunakan ekstensi Lambda.

Output dari perintah, yang ditampilkan di terminal, mencakup informasi dari header di respons dari Lambda. Ini termasuk versi yang memproses peristiwa (berguna saat Anda menggunakan alias), dan kode status yang dikembalikan oleh Lambda. Jika Lambda dapat menjalankan fungsi, kode statusnya adalah 200, meskipun fungsi tersebut mengembalikan kesalahan.

catatan

Untuk fungsi dengan waktu habis yang lama, klien Anda mungkin terputus selama invokasi sinkron sementara menunggu respons. Konfigurasikan klien HTTP, SDK, firewall, proksi, atau sistem operasi Anda untuk memungkinkan koneksi panjang dengan waktu habis atau pengaturan tetap aktif.

Jika Lambda tidak dapat menjalankan fungsi, kesalahan ditampilkan di output.

aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload value response.json

Anda akan melihat output berikut:

An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unrecognized token 'value': was expecting ('true', 'false' or 'null') at [Source: (byte[])"value"; line: 1, column: 11]

AWS CLI adalah alat sumber terbuka yang memungkinkan Anda berinteraksi dengan layanan AWS menggunakan perintah di shell baris perintah Anda. Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki hal-hal berikut:

Anda dapat menggunakan AWS CLI untuk mengambil log untuk invokasi menggunakan opsi perintah --log-type. Respons berisi bidang LogResult yang memuat hingga 4 KB log berkode base64 dari invokasi.

contoh mengambil ID log

Contoh berikut menunjukkan cara mengambil ID log dari LogResult untuk fungsi bernama my-function.

aws lambda invoke --function-name my-function out --log-type Tail

Anda akan melihat output berikut:

{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
contoh mendekode log

Pada prompt perintah yang sama, gunakan utilitas base64 untuk mendekodekan log. Contoh berikut menunjukkan cara mengambil log berkode base64 untuk my-function.

aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode

cli-binary-formatOpsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankanaws configure set cli-binary-format raw-in-base64-out. Untuk informasi selengkapnya, lihat opsi baris perintah global yang AWS CLI didukung di Panduan AWS Command Line Interface Pengguna untuk Versi 2.

Anda akan melihat output berikut:

START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB

Utilitas base64 tersedia di Linux, macOS, dan Ubuntu pada Windows. Pengguna macOS mungkin harus menggunakan base64 -D.

Untuk informasi selengkapnya tentang API Invoke, termasuk daftar lengkap parameter, header, dan kesalahan, lihat Panggil.

Saat Anda memanggil fungsi secara langsung, Anda dapat memeriksa respons kesalahan dan mencoba lagi. AWS CLI dan AWS SDK juga secara otomatis mencoba kembali waktu habis, throttling, dan kesalahan layanan klien. Untuk informasi selengkapnya, lihat Memahami perilaku coba lagi di Lambda.