Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anda dapat menggunakan fungsi Lambda untuk memproses notifikasi Amazon Simple Notification Service SNS (Amazon). 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, lihat. Tutorial: Menggunakan AWS Lambda dengan Amazon Simple Notification Service
Lambda mendukung SNS pemicu untuk topik standar SNS saja. FIFOTopik tidak didukung.
Untuk invokasi asinkron, Lambda mengantrekan pesan dan menangani percobaan ulang. Jika Amazon tidak SNS dapat mencapai Lambda atau pesan ditolak, Amazon melakukan SNS percobaan ulang dengan interval yang diperpanjang selama beberapa jam. Untuk detailnya, lihat Keandalan
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
Topik
Menambahkan pemicu SNS topik Amazon untuk fungsi Lambda menggunakan konsol
Untuk menambahkan SNS topik 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
Buatlah sebuah SNS topik sebagai pemicu untuk sebuah fungsi Lambda (konsol)
Buka halaman Fungsi
di konsol Lambda. -
Pilih nama fungsi yang ingin Anda tambahkan dengan pemicu.
-
Pilih Konfigurasi, lalu pilih Pemicu.
-
Pilih Tambahkan pemicu.
-
Di bawah konfigurasi Trigger, di menu tarik-turun, pilih. SNS
-
Untuk SNStopik, pilih SNS topik untuk berlangganan.
Menambahkan pemicu SNS topik Amazon secara manual untuk fungsi Lambda
Untuk mengatur SNS pemicu fungsi Lambda secara manual, Anda harus menyelesaikan langkah-langkah berikut:
-
Tentukan kebijakan berbasis sumber daya untuk fungsi Anda agar memungkinkan untuk SNS memanggilnya.
-
Berlangganan fungsi Lambda Anda ke topik AmazonSNS.
catatan
Jika SNS topik dan fungsi Lambda Anda berada di AWS akun yang berbeda, Anda juga perlu memberikan izin tambahan untuk mengizinkan langganan lintas akun ke topik tersebut. SNS Untuk informasi selengkapnya, lihat Memberikan izin lintas akun untuk SNS langganan Amazon.
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 SNS pemanggilan, gunakan perintah berikut. AWS CLI Pastikan untuk mengganti nilai --function-name
dengan nama fungsi Lambda Anda, dan nilai --source-arn
dengan topik AndaSNS. ARN
aws lambda add-permission --function-name
example-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 SNS topik, gunakan AWS CLI perintah berikut. Ganti nilai --topic-arn
dengan SNS topik AndaARN, dan nilai --notification-endpoint
dengan fungsi Lambda Anda. ARN
aws sns subscribe --protocol lambda \ --region us-east-1 \ --topic-arn
arn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda
\ --notification-endpointarn:aws:lambda:us-east-1:123456789012:function:example-function
Contoh bentuk SNS acara
Amazon SNS memanggil fungsi Anda secara asinkron dengan peristiwa yang berisi pesan dan metadata.
contoh Peristiwa SNS pesan Amazon
{
"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"
}
}
]
}