AWS Kinesis, pemrosesan Lambda bersamaan dengan pemesanan terjamin

Aug 19 2020

Saya memiliki Lambda dengan sumber Peristiwa yang diarahkan ke Konsumen Kinesis Stream (dengan jumlah pecahan yang berubah-ubah)

Saya ingin memastikan bahwa item dalam aliran dengan 'kunci partisi' yang sama diproses oleh Lambda secara berurutan dan tidak secara bersamaan. (Ini digunakan sebagai identitas objek, dan saya tidak ingin beberapa Lambdas melakukan logika pada objek yang sama secara bersamaan.)

Misalnya, jika item di aliran memiliki kunci partisi:

1,2,1,3,4,1,2,1

Jika kita mengambil urutan pemrosesan dari kiri ke kanan, Lambda akan memproses item dengan masing-masing kunci partisi 1,2, 3 dan 4 secara bersamaan. Kemudian, setelah menyelesaikan item dengan kunci partisi tertentu, item tersebut dapat mulai memproses item lain dengan kunci tersebut.

Apakah ini dapat dicapai dalam beberapa cara, tanpa menggunakan kunci terdistribusi yang akan membuat penggunaan Lambda tidak efisien?

Terima kasih

Jawaban

numX Aug 20 2020 at 13:23

Sepertinya saya menangani masalah dengan cara yang salah. Lambda menjamin bahwa dalam shard, instance Lambda dipanggil pada satu batch dalam satu waktu. Oleh karena itu, tidak diperlukan kunci terdistribusi karena paling buruk akan ada beberapa record milik entitas yang sama dalam batch yang sama dan memprosesnya agar dapat dikelola dalam memori dalam fungsi Lambda itu sendiri.

Referensi dari FAQ AWS http://aws.amazon.com/lambda/faqs/

T: Bagaimana AWS Lambda memproses data dari aliran Amazon Kinesis dan Amazon DynamoDB Streams?

Catatan Amazon Kinesis dan DynamoDB Streams yang dikirim ke fungsi AWS Lambda Anda diserialkan secara ketat, per pecahan. Ini berarti bahwa jika Anda meletakkan dua record dalam shard yang sama, Lambda menjamin bahwa fungsi Lambda Anda akan berhasil dipanggil dengan record pertama sebelum dipanggil dengan record kedua . Jika pemanggilan untuk satu catatan waktu habis, dibatasi, atau mengalami kesalahan lainnya, Lambda akan mencoba lagi hingga berhasil (atau catatan mencapai kedaluwarsa 24 jam) sebelum melanjutkan ke catatan berikutnya. Pengurutan record di berbagai shard tidak dijamin, dan pemrosesan setiap shard terjadi secara paralel.