Memanggil fungsi Lambda dengan notifikasi Amazon SNS - AWS Lambda

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 mendetail, lihat. Tutorial: Menggunakan AWS Lambda dengan Amazon Simple Notification Service

Lambda mendukung pemicu SNS untuk topik SNS standar saja. Topik FIFO tidak didukung.

Untuk invokasi asinkron, Lambda mengantrekan 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 di FAQ Amazon SNS.

Awas

Pemetaan sumber peristiwa Lambda memproses setiap peristiwa setidaknya sekali, dan pemrosesan duplikat catatan dapat terjadi. Untuk menghindari potensi masalah yang terkait dengan duplikat peristiwa, kami sangat menyarankan agar Anda membuat kode fungsi Anda idempoten. Untuk mempelajari lebih lanjut, lihat Bagaimana cara membuat fungsi Lambda saya idempoten di Pusat Pengetahuan. AWS

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 fungsi Lambda (konsol)
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih nama fungsi yang ingin Anda tambahkan pemicunya.

  3. Pilih Konfigurasi, lalu pilih Pemicu.

  4. Pilih Tambahkan pemicu.

  5. Di bawah konfigurasi Trigger, di menu tarik-turun, pilih SNS.

  6. 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 harus 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 akun AWS 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 ARN topik SNS Anda.

aws lambda add-permission --function-name example-function \ --source-arn arn: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 ARN topik SNS Anda, dan nilai --notification-endpoint ARN dengan fungsi Lambda Anda.

aws sns subscribe --protocol lambda \ --region us-east-1 \ --topic-arn arn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda \ --notification-endpoint arn: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" } } ] }