Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menangkap catatan pemanggilan asinkron Lambda
Lambda dapat mengirim catatan pemanggilan asinkron ke salah satu dari berikut ini. Layanan AWS
-
Amazon SQS - Antrian SQS standar
-
Amazon SNS - Topik SNS standar
-
Amazon S3 - Bucket Amazon S3 (hanya gagal)
-
AWS Lambda- Fungsi Lambda
-
Amazon EventBridge - Bus EventBridge acara
Catatan invokasi berisi detail tentang permintaan dan respons dalam format JSON. Anda dapat mengonfigurasi tujuan terpisah untuk acara yang berhasil diproses, dan acara yang gagal dalam semua upaya pemrosesan. Atau, Anda dapat mengonfigurasi antrian Amazon SQS standar atau topik Amazon SNS standar sebagai antrian huruf mati untuk peristiwa yang dibuang. Untuk antrean dead-letter, Lambda hanya mengirimkan konten acara, tanpa perincian tentang responsnya.
Jika Lambda tidak dapat mengirim catatan ke tujuan yang telah Anda konfigurasikan, Lambda akan mengirimkan DestinationDeliveryFailures metrik ke Amazon. CloudWatch Hal ini dapat terjadi jika konfigurasi Anda menyertakan jenis tujuan yang tidak didukung, seperti antrean Amazon SQS FIFO atau topik Amazon SNS FIFO. Kesalahan pengiriman juga dapat terjadi karena kesalahan izin dan batas ukuran. Untuk informasi selengkapnya tentang metrik pemanggilan Lambda, lihat. Metrik invokasi
catatan
Untuk mencegah Fungsi Peristiwa memicu, Anda dapat mengatur konkurensi cadangan fungsi ke nol. Saat Anda menyetel konkurensi cadangan ke nol untuk fungsi yang dipanggil secara asinkron, Lambda mulai mengirim peristiwa baru ke antrian huruf mati yang dikonfigurasi atau tujuan peristiwa yang gagal, tanpa mencoba lagi. Untuk memproses peristiwa yang dikirim saat konkurensi cadangan disetel ke nol, Anda harus menggunakan peristiwa dari antrian surat mati atau tujuan acara yang gagal.
Menambahkan tujuan
Untuk menyimpan catatan pemanggilan asinkron, tambahkan tujuan ke Fungsi Acara Anda. Anda dapat memilih untuk mengirim pemanggilan yang berhasil atau gagal ke tujuan. Setiap fungsi dapat memiliki beberapa tujuan, sehingga Anda dapat mengonfigurasi tujuan terpisah untuk acara yang berhasil dan gagal. Setiap catatan yang dikirim ke tujuan adalah dokumen JSON dengan rincian tentang pemanggilan. Seperti pengaturan penanganan kesalahan, Anda dapat mengonfigurasi tujuan pada Fungsi Acara, versi fungsi, atau alias.
Tip
Anda juga dapat menyimpan catatan pemanggilan yang gagal untuk jenis pemetaan sumber peristiwa berikut: Amazon Kinesis, Amazon DynamoDB, dan Apache Kafka (Amazon MSK dan Apache Kafka yang dikelola sendiri).
Tabel berikut mencantumkan tujuan yang didukung untuk catatan pemanggilan asinkron. Agar Lambda berhasil mengirim catatan ke tujuan yang Anda pilih, pastikan bahwa peran eksekusi Fungsi Acara Anda juga berisi izin yang relevan. Tabel ini juga menjelaskan bagaimana setiap tipe tujuan menerima catatan pemanggilan JSON.
| Jenis tujuan | Izin yang diperlukan | Destination-specific Format JSON |
|---|---|---|
|
Antrean Amazon SQS |
Lambda melewati catatan doa sebagai ke tujuan. |
|
|
Topik Amazon SNS |
Lambda melewati catatan doa sebagai ke tujuan. |
|
|
Bucket Amazon S3 (hanya pada kegagalan) |
|
|
|
Fungsi Acara Lambda |
Lambda meneruskan catatan pemanggilan sebagai muatan ke fungsi. |
|
|
EventBridge |
|
catatan
Untuk tujuan Amazon S3, jika Anda telah mengaktifkan enkripsi pada bucket menggunakan kunci KMS, Fungsi Acara Anda juga memerlukan izin kms:. GenerateDataKey
penting
Saat menggunakan Amazon SNS sebagai tujuan, ketahuilah bahwa Amazon SNS memiliki batas ukuran pesan maksimum 256 KB. Jika payload pemanggilan asinkron Anda mendekati 1 MB, catatan pemanggilan (yang menyertakan muatan asli ditambah metadata tambahan) mungkin melebihi batas Amazon SNS dan menyebabkan kegagalan pengiriman. Pertimbangkan untuk menggunakan tujuan Amazon SQS atau Amazon S3 untuk muatan yang lebih besar.
Langkah-langkah berikut menjelaskan cara mengonfigurasi tujuan untuk suatu fungsi menggunakan konsol Lambda dan. AWS CLI
Praktik terbaik keamanan untuk tujuan Amazon S3
Menghapus bucket S3 yang dikonfigurasi sebagai tujuan tanpa menghapus tujuan dari konfigurasi fungsi Anda dapat menimbulkan risiko keamanan. Jika pengguna lain mengetahui nama bucket tujuan Anda, mereka dapat membuat ulang bucket di bucket tersebut. Akun AWS Catatan pemanggilan yang gagal akan dikirim ke bucket mereka, yang berpotensi mengekspos data dari fungsi Anda.
Awas
Untuk memastikan bahwa catatan pemanggilan dari Fungsi Peristiwa Anda tidak dapat dikirim ke bucket S3 di bucket lain Akun AWS, tambahkan kondisi ke peran eksekusi fungsi Anda yang membatasi s3:PutObject izin ke bucket di akun Anda.
Contoh berikut menunjukkan kebijakan IAM yang membatasi s3:PutObject izin fungsi Anda ke bucket di akun Anda. Kebijakan ini juga memberi Lambda s3:ListBucket izin yang dibutuhkan untuk menggunakan bucket S3 sebagai tujuan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3BucketResourceAccountWrite", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*/*", "arn:aws:s3:::*" ], "Condition": { "StringEquals": { "s3:ResourceAccount":"111122223333"} } } ] }
Untuk menambahkan kebijakan izin ke peran eksekusi fungsi Anda menggunakan Konsol Manajemen AWS atau AWS CLI, lihat instruksi dalam prosedur berikut:
Contoh catatan pemanggilan
Ketika pemanggilan cocok dengan kondisi, Lambda mengirimkan dokumen JSON dengan rincian tentang pemanggilan ke tujuan. Contoh berikut menunjukkan catatan pemanggilan untuk peristiwa yang gagal dalam tiga upaya pemrosesan karena kesalahan Fungsi Peristiwa.
contoh
{
"version": "1.0",
"timestamp": "2019-11-14T18:16:05.568Z",
"requestContext": {
"requestId": "e4b46cbf-b738-xmpl-8880-a18cdf61200e",
"functionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
"condition": "RetriesExhausted",
"approximateInvokeCount": 3
},
"requestPayload": {
"ORDER_IDS": [
"9e07af03-ce31-4ff3-xmpl-36dce652cb4f",
"637de236-e7b2-464e-xmpl-baf57f86bb53",
"a81ddca6-2c35-45c7-xmpl-c3a03a31ed15"
]
},
"responseContext": {
"statusCode": 200,
"executedVersion": "$LATEST",
"functionError": "Unhandled"
},
"responsePayload": {
"errorMessage": "RequestId: e4b46cbf-b738-xmpl-8880-a18cdf61200e Process exited before completing request"
}
}Catatan invokasi berisi perincian tentang peristiwa, respons, dan alasan mengapa catatan dikirim.
Menelusuri permintaan ke tujuan
Anda dapat menggunakan AWS X-Ray untuk melihat tampilan terhubung dari setiap permintaan saat antrian, diproses oleh Fungsi Peristiwa Lambda, dan diteruskan ke layanan tujuan. Saat Anda mengaktifkan X-Ray penelusuran untuk fungsi atau layanan yang memanggil fungsi, Lambda menambahkan X-Ray header ke permintaan dan meneruskan header ke layanan tujuan. Jejak dari layanan hulu secara otomatis ditautkan ke jejak dari Fungsi Acara Lambda hilir dan layanan tujuan, menciptakan tampilan ujung ke ujung dari seluruh aplikasi. Untuk informasi lebih lanjut tentang penelusuran, lihatVisualisasikan pemanggilan Fungsi Acara Lambda menggunakan AWS X-Ray.
Menambahkan antrian huruf mati
Sebagai alternatif untuk tujuan yang gagal, Anda dapat mengonfigurasi Fungsi Acara Anda dengan antrian huruf mati untuk menyimpan peristiwa yang dibuang untuk diproses lebih lanjut. Antrean dead-letter juga berfungsi sama seperti tujuan kegagalan dalam kondisi di mana ini digunakan saat suatu kejadian gagal dalam semua upaya pemrosesan atau kedaluwarsa tanpa diproses. Namun, Anda hanya dapat menambah atau menghapus antrian huruf mati di tingkat fungsi. Versi Fungsi Acara menggunakan pengaturan antrian huruf mati yang sama dengan versi yang tidak dipublikasikan ($LATEST). On-failure tujuan juga mendukung target tambahan dan menyertakan detail tentang respons fungsi dalam catatan pemanggilan.
Untuk memproses ulang peristiwa dalam antrian huruf mati, Anda dapat mengaturnya sebagai sumber peristiwa untuk Fungsi Peristiwa Lambda Anda. Atau, Anda dapat mengambil acara secara manual.
Anda dapat memilih antrian standar Amazon SQS atau topik standar Amazon SNS untuk antrian surat mati Anda. Antrian FIFO dan topik FIFO Amazon SNS tidak didukung.
-
Antrean Amazon SQS – Antrean yang menahan kejadian yang gagal hingga terjadi. Pilih antrian standar Amazon SQS jika Anda mengharapkan satu entitas, seperti Fungsi Peristiwa Lambda atau CloudWatch alarm, untuk memproses peristiwa yang gagal. Untuk informasi selengkapnya, lihat Menggunakan Lambda dengan Amazon SQS.
-
Topik Amazon SNS – Topik menyampaikan peristiwa yang gagal ke satu tujuan atau lebih. Pilih topik standar Amazon SNS jika Anda mengharapkan beberapa entitas bertindak atas peristiwa yang gagal. Misalnya, Anda dapat mengonfigurasi topik untuk mengirim peristiwa ke alamat email, Fungsi Peristiwa Lambda, titik akhir and/or HTTP. Untuk informasi selengkapnya, lihat Memanggil Fungsi Acara Lambda dengan notifikasi Amazon SNS.
Untuk mengirim acara ke antrian atau topik, Fungsi Acara Anda memerlukan izin tambahan. Tambahkan kebijakan dengan izin yang diperlukan ke peran eksekusi fungsi Anda. Jika antrean target atau topik dienkripsi dengan AWS KMS kunci yang dikelola pelanggan, pastikan peran eksekusi fungsi dan kebijakan berbasis sumber daya kunci berisi izin yang relevan.
Setelah membuat target dan memperbarui peran eksekusi Event Function Anda, tambahkan antrean huruf mati ke fungsi Anda. Anda dapat mengonfigurasi beberapa fungsi untuk mengirimkan peristiwa ke target yang sama.
Lambda mengirimkan peristiwa ke antrean surat mati sebagaimana adanya, dengan informasi tambahan dalam atribut. Anda dapat menggunakan informasi ini untuk mengidentifikasi kesalahan yang dikembalikan fungsi, atau untuk menghubungkan peristiwa dengan log atau jejak AWS X-Ray .
Dead-letter atribut pesan antrian
-
RequestID (String) – ID permintaan invokasi. ID Permintaan muncul dalam log fungsi. Anda juga dapat menggunakan X-Ray SDK untuk merekam ID permintaan pada atribut dalam jejak. Anda kemudian dapat mencari jejak berdasarkan ID permintaan di X-Ray konsol.
-
ErrorCode (Nomor) – Kode status HTTP.
-
ErrorMessage (String) – 1 KB pertama dari pesan kesalahan.
Jika Lambda tidak dapat mengirim pesan ke antrean dead-letter, Lambda akan menghapus acara dan mengeluarkan metrik DeadLetterErrors. Ini dapat terjadi karena kurangnya izin, atau jika ukuran total pesan melebihi batasan untuk antrean atau topik target. Misalnya, katakan bahwa notifikasi Amazon SNS dengan ukuran tubuh mendekati 1 MB memicu fungsi yang menghasilkan kesalahan. Dalam hal ini, data peristiwa yang ditambahkan Amazon SNS, dikombinasikan dengan atribut yang ditambahkan Lambda, dapat menyebabkan pesan melebihi ukuran maksimum yang diizinkan dalam antrian huruf mati.
Jika Anda menggunakan Amazon SQS sebagai sumber peristiwa, konfigurasikan antrian huruf mati pada antrean Amazon SQS itu sendiri dan bukan pada Fungsi Peristiwa Lambda. Lihat informasi yang lebih lengkap di Menggunakan Lambda dengan Amazon SQS.