Saya bertanya-tanya apakah saya dapat mengirim pesan ke antrian SQS dan berlangganan topik SNS untuk memicu lambda untuk mengirim email.
SQS -> SNS -> (Lambda) -> SES
Saya tahu pesan SNS dapat dikirim ke SQS tapi saya ingin tahu apakah sebaliknya mungkin
Anda tidak bisa pergi
SQS -> SNS
, hanya sajaSNS -> SQS
.Lambda sekarang mendukung penjadwalan sehingga salah satu opsi adalah untuk mengimplementasikan poller SQS dalam fungsi Lambda dan menjalankannya sering.
Pilihan lain untuk dipertimbangkan adalah apakah Anda benar-benar membutuhkan antrian. Lambda mendukung pemrosesan tidak sinkron (melalui mode doa acara) dan harus secara transparan skala secara horizontal untuk menangani doa paralel. Jika fungsi lambda Anda tidak memerlukan akses ke toko pusat negara yang mungkin membatasi eksekusi paralel maka Anda mungkin bisa menjalankan semua permintaan Anda secara paralel. Saya percaya ada 100 batas eksekusi bersamaan per akun, jadi Anda mungkin perlu mengelompokkan pesan Anda agar tetap di bawah itu.
sumber
SQS
antrian dapat berlangganan keSNS
topik dan untuk memprosesSNS
pesan yang diterima . Saat ini, itu tidak dapat dilakukan ke arah lain tanpa pengkodean tambahan (lihat misalnyaLambda
FAQ ).Saya akan mengatakan ada beberapa opsi bagaimana melakukannya tetapi tidak begitu elegan seperti menggunakan sistem yang lebih umum yang didorong oleh peristiwa
AWS event->SQS->Lambda
. Kalau tidak, Anda mungkin perlu menyesuaikan / mengimplementasikan kode bagaimanaSQS
antrian diproses:SQS
antrian dan kemudian memicuLambda
pada acara SQSsumber
Ini ditanyakan dan dijawab beberapa waktu lalu, tetapi setelah memikirkan hal ini sendiri, saya pikir saya akan menambahkan pendekatan.
Seperti disebutkan, Sumber Acara mungkin merupakan taruhan terbaik di sini. Atau, dan saya belum menguji ini atau memikirkan ini secara menyeluruh (jadi ini semacam akademis), tetapi mungkin untuk mencapai ini melalui pola Fan-Out dengan SNS sebagai berikut:
Dengan menggunakan konfigurasi ini, mengirimkan pesan ke topik SNS akan membawanya ke antrian SQS sambil secara bersamaan memicu fungsi Lambda pendamping. Fungsi Lambda itu akan ditulis untuk membaca antrian SQS yang sama tetapi dengan Polling Panjang diaktifkan (hingga 20 detik) sehingga tidak membaca antrian sebelum enqueue selesai (yaitu kondisi balapan).
Intinya, skema just-in-time ini memanggil satu fungsi Lambda untuk setiap pesan SQS enqueued. Saya tidak tahu bagaimana simultan pembaca Long Poll bekerja pada SQS (... apakah ada yang turun?), Tapi ini hanyalah cara lain untuk mempertimbangkan pemecahan ini. = :)
sumber