Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memanggil fungsi Lambda dengan notifikasi Amazon SNS
Anda dapat menggunakan fungsi Lambda untuk memproses notifikasi Amazon Simple Notification Service (Amazon SNS). Amazon SNS mendukung fungsi Lambda sebagai target untuk pesan yang dikirim ke topik. Anda dapat melanggankan fungsi Anda ke topik di akun yang sama atau di akun AWS lainnya. Untuk panduan terperinci, lihatTutorial: Menggunakan AWS Lambda dengan Layanan Pemberitahuan Sederhana Amazon.
Lambda mendukung pemicu SNS hanya untuk topik SNS standar. Topik FIFO tidak didukung.
Lambda memproses pesan SNS secara asinkron dengan mengantri pesan dan menangani percobaan ulang. Jika Amazon SNS tidak dapat mencapai Lambda atau pesan ditolak, Amazon SNS melakukan percobaan ulang dengan interval yang diperpanjang selama beberapa jam. Untuk perinciannya, lihat Reliabilitas
Awas
Pemanggilan asinkron lambda memproses setiap peristiwa setidaknya sekali, dan pemrosesan rekaman duplikat dapat terjadi. Untuk menghindari potensi masalah terkait peristiwa duplikat, kami sangat menyarankan agar Anda membuat kode fungsi Anda idempotent. Untuk mempelajari lebih lanjut, lihat Bagaimana cara membuat fungsi Lambda saya idempoten
Utilitas Idempotensi dari Powertools untuk AWS Lambda
Utilitas idempotensi dari Powertools for AWS Lambda membuat fungsi Lambda Anda idempoten. Ini tersedia untuk Python TypeScript, Java, dan .NET. Untuk informasi selengkapnya, lihat utilitas Idempotensi dalam dokumentasi Powertools for AWS Lambda (Python), Utilitas Idempotensi dalam dokumentasi Powertools for AWS Lambda (TypeScript), Utilitas Idempotensi dalam dokumentasi Powertools for Lambda (Java), dan Idempotensi Utility dalam dokumentasi Powertools for AWS Lambda (.NET). AWS
Topik
Menambahkan pemicu topik Amazon SNS untuk fungsi Lambda menggunakan konsol
Untuk menambahkan topik SNS sebagai pemicu fungsi Lambda, cara termudah adalah dengan menggunakan konsol Lambda. Saat Anda menambahkan pemicu melalui konsol, Lambda secara otomatis mengatur izin dan langganan yang diperlukan untuk mulai menerima acara dari topik SNS.
Untuk menambahkan topik SNS sebagai pemicu untuk fungsi Lambda (konsol)
Buka halaman Fungsi
di konsol Lambda. -
Pilih nama fungsi yang ingin Anda tambahkan pemicunya.
-
Pilih Konfigur asi, lalu pilih Pem icu.
-
Pilih Tambahkan pemicu.
-
Di bawah konfigurasi pemicu, di menu dropdown, pilih SN S.
-
Untuk topik SNS, pilih topik SNS untuk berlangganan.
Menambahkan pemicu topik Amazon SNS secara manual untuk fungsi Lambda
Untuk mengatur pemicu SNS untuk fungsi Lambda secara manual, Anda perlu menyelesaikan langkah-langkah berikut:
-
Tentukan kebijakan berbasis sumber daya untuk fungsi Anda agar SNS dapat memanggilnya.
-
Berlangganan fungsi Lambda Anda ke topik Amazon SNS.
catatan
Jika topik SNS dan fungsi Lambda Anda berada di AWS akun yang berbeda, Anda juga perlu memberikan izin tambahan untuk mengizinkan langganan lintas akun ke topik SNS. Untuk informasi selengkapnya, lihat Memberikan izin lintas akun untuk langganan Amazon SNS.
Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk menyelesaikan kedua langkah ini. Pertama, untuk menentukan kebijakan berbasis sumber daya untuk fungsi Lambda yang memungkinkan pemanggilan SNS, gunakan perintah berikut. AWS CLI Pastikan untuk mengganti nilai --function-name dengan nama fungsi Lambda Anda, dan nilai --source-arn dengan topik SNS ARN Anda.
aws lambda add-permission --function-nameexample-function\ --source-arnarn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda\ --statement-id function-with-sns --action "lambda:InvokeFunction" \ --principal sns.amazonaws.com
Untuk berlangganan fungsi Anda ke topik SNS, gunakan AWS CLI perintah berikut. Ganti nilai --topic-arn dengan topik SNS ARN Anda, dan nilai --notification-endpoint dengan fungsi Lambda ARN Anda.
aws sns subscribe --protocol lambda \ --region us-east-1 \ --topic-arnarn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda\ --notification-endpointarn:aws:lambda:us-east-1:123456789012:function:example-function
Contoh bentuk acara SNS
Amazon SNS memanggil fungsi Anda secara asinkron dengan kejadian yang berisi pesan dan metadata.
contoh Kejadian pesan Amazon SNS
{ "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:us-east-1:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "EventSource": "aws:sns", "Sns": { "SignatureVersion": "1", "Timestamp": "2019-01-02T12:45:07.000Z", "Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==", "SigningCertURL": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", "MessageAttributes": { "Test": { "Type": "String", "Value": "TestString" }, "TestBinary": { "Type": "Binary", "Value": "TestBinary" } }, "Type": "Notification", "UnsubscribeUrl": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "TopicArn":"arn:aws:sns:us-east-1:123456789012:sns-lambda", "Subject": "TestInvoke" } } ] }