Kursus
Mengelola notifikasi real-time di seluruh aplikasi Anda bisa menjadi tantangan besar — setidaknya tanpa layanan messaging yang tepat.
Amazon Simple Notification Service (SNS) hadir sebagai solusi messaging yang sepenuhnya dikelola untuk memisahkan (decoupling) dan menskalakan microservices, sistem terdistribusi, dan aplikasi serverless. SNS memungkinkan Anda mengirim pesan ke banyak subscriber melalui berbagai protokol transport, seperti HTTP/S, email, SMS, dan push notifikasi seluler. AWS SNS menangani semua proses berat pengiriman pesan, termasuk pengiriman andal, retry, dan backoff, sehingga Anda bebas fokus membangun fitur inti aplikasi.
AWS SNS mengikuti model publish-subscribe yang mudah diskalakan dan dipahami. Satu pesan yang diterbitkan dapat didistribusikan ke banyak endpoint secara bersamaan, menjadikan SNS ideal untuk arsitektur berbasis event.
Dalam tutorial ini, saya akan memandu Anda menyiapkan dan menggunakan AWS SNS untuk mengirim notifikasi ke berbagai kanal.
Apa itu AWS SNS?
Amazon Simple Notification Service (SNS) adalah layanan pub/sub terkelola dari AWS yang memungkinkan Anda memisahkan microservices, sistem terdistribusi, dan aplikasi serverless.
SNS bekerja dengan model publish-subscribe sederhana di mana publisher mengirim pesan ke topik, dan subscriber menerima pesan tersebut. Anggap topik SNS sebagai kanal komunikasi — Anda memublikasikan pesan ke kanal ini, dan siapa pun yang berlangganan akan segera mendapat notifikasi. Keunggulannya, publisher tidak perlu tahu siapa penerima pesannya, dan subscriber tidak perlu tahu siapa pengirimnya.
Anda mungkin bertanya-tanya apa bedanya dengan layanan messaging AWS lain seperti Simple Queue Service (SQS). Singkatnya, SQS menggunakan model berbasis antrian yang dirancang terutama untuk memproses tugas secara asinkron, sedangkan SNS berfokus pada penyiaran pesan ke banyak penerima secara bersamaan. Ini menjadikan SNS ideal untuk skenario saat Anda perlu memberi tahu banyak sistem tentang suatu event yang baru terjadi. Anda dapat mempelajari lebih lanjut perbedaannya di artikel SQS vs SNS.
SNS mendukung banyak protokol pengiriman, yang memberi fleksibilitas pada cara subscriber menerima notifikasi.
Fitur utama AWS SNS
SNS hadir dengan fitur lengkap sehingga menjadi satu-satunya layanan notifikasi yang Anda butuhkan. Berikut beberapa di antaranya:
- Arsitektur fan-out: SNS dapat mengirim pesan ke ribuan endpoint secara bersamaan, yang memungkinkan Anda menyiarkan pembaruan ke seluruh ekosistem aplikasi hanya dengan satu panggilan API.
- Beragam protokol transport: Anda tidak terbatas pada satu cara pengiriman. SNS mendukung endpoint HTTP/HTTPS, email, SMS, push notifikasi seluler, dan bahkan antrian SQS sebagai endpoint langganan.
- Penyaringan pesan: Tidak semua subscriber membutuhkan semua pesan. Dengan penyaringan pesan, subscriber dapat membuat kebijakan filter untuk menerima hanya pesan yang relevan, sehingga mengurangi kebisingan dan beban pemrosesan.
- Arsip pesan: Jika Anda perlu menyimpan catatan semua notifikasi yang dikirim, SNS terintegrasi dengan Amazon S3 untuk pengarsipan pesan dan dengan Amazon Redshift untuk analitik.
- Pelacakan status pengiriman: Anda dapat memantau status pengiriman notifikasi untuk memastikan pesan sampai ke tujuannya. Ini sangat berguna untuk SMS dan push notifikasi seluler di mana pengiriman tidak selalu terjamin.
- Enkripsi: Data sensitif Anda tetap terlindungi dengan dukungan enkripsi sisi server dari SNS, yang memastikan pesan tetap rahasia selama transmisi.
Namun bagian terbaik dari SNS adalah skalabilitas. SNS menskalakan secara otomatis sesuai kebutuhan aplikasi Anda. Tidak masalah apakah Anda mengirim sepuluh atau sepuluh juta notifikasi per hari, layanan akan menyesuaikan tanpa perlu intervensi manual.
Selanjutnya, saya akan menunjukkan cara menyiapkan SNS.
Menyiapkan AWS SNS
Sebelum mengirim notifikasi pertama dengan SNS, Anda perlu mengikuti beberapa langkah penyiapan agar semuanya siap.
Langkah 1: Membuat akun AWS
Jika Anda belum memiliki akun AWS, Anda harus membuatnya sebelum mulai menggunakan SNS.
Kunjungi beranda AWS dan klik tombol "Create an AWS Account" di pojok kanan atas. Anda perlu memberikan alamat email, membuat kata sandi, dan mengisi beberapa informasi akun dasar. AWS juga akan meminta detail kartu kredit — tenang, SNS memiliki paket gratis yang cukup murah hati, dan Anda tidak akan dikenakan biaya kecuali melewati batas tersebut.
Setelah akun siap, Anda bisa lanjut. Namun, saya sangat menyarankan untuk membuat pengguna IAM khusus alih-alih menggunakan akun root. Itu di luar cakupan artikel hari ini, tetapi silakan rujuk ke instruksi resmi untuk petunjuk terperinci.
Langkah 2: Menyiapkan SNS di AWS Management Console
Sekarang Anda memiliki akun AWS, saatnya mengakses layanan SNS.
Masuk ke AWS Management Console dengan kredensial Anda dan temukan SNS. Ada tiga cara:
- Ketik "SNS" di bilah pencarian di bagian atas konsol
- Klik "Services" di bilah navigasi atas dan temukan SNS di kategori "Application Integration"
- Masuk langsung ke he konsol SNS
Apa pun caranya, ini adalah layar yang seharusnya Anda lihat:

Gambar 1 - Halaman layanan AWS SNS
Setelah berada di dasbor SNS, Anda akan melihat menu di sebelah kiri dengan opsi seperti "Topics," "Subscriptions," dan "Mobile." Dasbor memberikan ikhtisar sumber daya SNS dan aktivitas terbaru Anda.
Ini akan cukup kosong untuk akun baru — itu hal yang wajar. Sekarang, mari buat topik SNS pertama kita.
Langkah 3: Membuat topik SNS
Topik SNS pada dasarnya adalah kanal komunikasi tempat publisher mengirim pesan dan subscriber mendengarkan.
Anggap seperti stasiun radio — stasiun menyiarkan pada frekuensi tertentu (topik), dan siapa pun yang menyetel ke frekuensi itu menerima siaran. Dalam istilah SNS, aplikasi Anda memublikasikan pesan ke topik, dan semua endpoint yang berlangganan topik tersebut menerima pesan.
Berikut cara membuat topik SNS pertama Anda:
- Pada layar yang Anda lihat di Gambar 1, masukkan nama topik.
- Klik tombol "Next step".
- Pilih "Standard" untuk jenisnya (topik FIFO memiliki use case berbeda yang akan kita bahas nanti).
- (Opsional) Masukkan display name. Ini akan disertakan dalam pesan yang dikirim ke subscriber SMS atau email.
- Biarkan pengaturan lainnya pada nilai default untuk saat ini.
- Klik "Create topic".
Jika Anda lebih suka gambar daripada teks, tampilan layar Anda seharusnya seperti ini:

Gambar 2 - Pembuatan topik SNS
Setelah Anda puas dengan nilainya, gulir ke bawah hingga Anda melihat tombol "Create topic":

Gambar 3 - Pembuatan topik SNS (2)
Selesai! Topik SNS Anda kini siap digunakan. Anda akan melihat detail seperti ARN topik (Amazon Resource Name) yang mengidentifikasi topik Anda secara unik:

Gambar 4 - Detail topik yang dibuat
Topik baru Anda siap untuk langganan, tetapi saat ini belum ada, artinya pesan apa pun yang Anda publikasikan tidak akan ke mana-mana. Jangan khawatir, Anda akan memperbaikinya di bagian berikutnya saat menambahkan subscriber.
Subscriber dan Subscription SNS
Seperti yang saya sebutkan sebelumnya, topik SNS Anda seperti stasiun radio. Saat ini belum ada pendengar, tetapi itu akan berubah saat Anda menambahkan subscriber untuk menerima pesan.
Apa itu subscriber SNS?
Subscriber adalah endpoint apa pun yang menerima notifikasi dari topik SNS Anda saat sebuah pesan dipublikasikan.
Bayangkan analogi newsletter. Setiap kali Anda menerbitkan edisi baru (pesan), edisi tersebut dikirim ke semua orang di daftar email Anda. SNS membuat proses ini otomatis dan skalabel, serta menangani semua logistik pengiriman untuk Anda.
AWS mendukung berbagai jenis subscriber, memberi fleksibilitas dalam cara pesan Anda diproses. Berikut jenis utamanya:
- Alamat email: Kirim notifikasi teks langsung ke kotak masuk email.
- Nomor SMS: Kirim notifikasi pesan teks ke ponsel.
- Antrian SQS: Arahkan pesan ke layanan AWS lain untuk pemrosesan lanjutan.
- Fungsi Lambda: Memicu eksekusi kode serverless sebagai respons terhadap notifikasi.
- Endpoint HTTP/HTTPS: Kirim pesan ke aplikasi web atau API.
- Push seluler: Kirim notifikasi langsung ke aplikasi seluler.
Setiap tipe subscriber memiliki kelebihan dan use case sendiri. Misalnya, email dan SMS cocok untuk penerima manusia, sementara antrian SQS dan fungsi Lambda lebih baik untuk komunikasi antarsistem.
Langkah 1: Menambahkan subscriber
Sekarang Anda paham apa itu subscriber, mari tambahkan satu ke topik Anda. Untuk tutorial ini, saya akan menggunakan email karena paling mudah disiapkan.
Berikut cara menambahkan subscriber email ke topik SNS Anda:
- Dari halaman detail topik Anda (yang ditunjukkan di Gambar 4), klik tombol "Create subscription".
- Di dropdown "Protocol", pilih "Email".
- Di kolom "Endpoint", masukkan alamat email yang akan menerima notifikasi.
- Biarkan pengaturan lainnya pada nilai default.
- Klik "Create subscription."
Layar Anda akan terlihat seperti ini:

Gambar 5 - Membuat langganan email
Setelah mengklik "Create subscription," AWS akan menambahkan langganan ke topik Anda, tetapi dalam status "pending confirmation":

Gambar 6 - Status pending confirmation
Ini adalah fitur keamanan penting, karena AWS ingin memastikan pemilik alamat email tersebut benar-benar ingin menerima notifikasi ini.
Langkah 2: Mengonfirmasi langganan
Setelah menambahkan subscriber, mereka harus mengonfirmasi bahwa mereka ingin menerima notifikasi dari topik SNS Anda.
Untuk langganan email, AWS secara otomatis mengirim email konfirmasi ke alamat yang Anda tentukan. Email berisi tautan yang harus diklik penerima untuk mengaktifkan langganan. Sampai itu terjadi, tidak ada pesan yang dipublikasikan ke topik yang akan dikirim ke endpoint ini.
Berikut contoh email konfirmasi yang umum:

Gambar 7 - Email konfirmasi SNS
Penerima cukup mengklik tautan "Confirm subscription" dalam email. Mereka akan diarahkan ke halaman yang mengonfirmasi langganan sudah aktif:

Gambar 8 - Pesan konfirmasi langganan
Prosesnya serupa untuk subscriber SMS — AWS mengirim pesan teks dengan tautan konfirmasi yang harus diikuti penerima. Endpoint HTTP/HTTPS perlu merespons permintaan konfirmasi dari AWS, sementara sumber daya AWS seperti fungsi Lambda dan antrian SQS dapat dikonfigurasi untuk konfirmasi otomatis.
Anda dapat memeriksa status langganan dengan mengklik bagian "Subscriptions" di sidebar kiri konsol SNS. Langganan yang sudah dikonfirmasi akan menampilkan status "Confirmed," sedangkan yang menunggu konfirmasi akan menunjukkan "Pending confirmation."

Gambar 9 - Status langganan
Setelah langganan dikonfirmasi, Anda siap mulai mengirim pesan! Setiap pesan yang dipublikasikan ke topik akan dikirim ke semua subscriber terkonfirmasi menggunakan protokol mereka masing-masing.
Itulah seluruh proses menyiapkan langganan SNS. Pada bagian berikutnya, Anda akan belajar cara memublikasikan pesan ke topik dan menguji apakah subscriber menerimanya dengan benar.
Mempublikasikan Pesan ke Topik SNS
Sekarang Anda telah menyiapkan topik SNS dan menambahkan subscriber, saatnya mengirim notifikasi pertama Anda.
Langkah 1: Mempublikasikan pesan
Cara yang baik untuk memulai adalah dengan memublikasikan pesan melalui AWS Console.
Untuk mengirim pesan pertama, buka halaman detail topik Anda dan klik tombol "Publish message" di kanan atas (lihat Gambar 4). Ini akan membuka formulir publikasi pesan tempat Anda menyusun notifikasi. Anda akan melihat kolom untuk subjek dan isi pesan. Subjek bersifat opsional tetapi membantu untuk notifikasi email karena menjadi baris subjek email.
Untuk pesan uji sederhana, Anda bisa memasukkan sesuatu seperti ini:

Gambar 10 - Konten pesan pertama
Jika puas dengan pesan Anda, gulir ke bawah dan klik tombol "Publish message" di bagian bawah formulir:

Gambar 11 - Mempublikasikan pesan melalui konsol
Setelah mengklik, SNS segera mendistribusikan pesan Anda ke semua subscriber yang terkonfirmasi. Jika Anda menyiapkan langganan email, Anda akan menerima pesan uji di kotak masuk dalam hitungan detik:

Gambar 12 - Pesan diterima di email
Mudah, bukan? Sekarang mari lihat cara menyesuaikannya lebih lanjut.
Langkah 2: Mengirim notifikasi SMS dan email
SNS memungkinkan Anda menyesuaikan tampilan pesan untuk berbagai jenis subscriber.
Saat memublikasikan pesan, Anda akan melihat opsi "Message structure". Secara default, disetel ke "Identical payload for all delivery protocols," artinya semua subscriber menerima pesan yang sama persis. Namun, Anda juga dapat memilih "Custom payload for each delivery protocol," yang memungkinkan Anda menyesuaikan format pesan untuk setiap tipe subscriber.
Untuk notifikasi email, ada dua opsi format:
- Email-JSON: Mengirim payload JSON mentah ke endpoint email.
- Email: Mengirim email terformat dengan subjek dan isi pesan.

Gambar 13 - Kustomisasi payload
Untuk notifikasi SMS, ingat ada batas 160 karakter. SNS akan mengirim pesan yang lebih panjang, tetapi akan diperlakukan sebagai beberapa pesan. Anda juga dapat mengatur tipe pesan SMS menjadi "Promotional" atau "Transactional," yang memengaruhi optimasi pengiriman:

Gambar 14 - Opsi SMS
Sekarang Anda tahu cara mengirim dan menyesuaikan notifikasi email melalui AWS Console. Selanjutnya, Anda akan belajar cara melakukan hal yang sama melalui CLI dan Python.
Langkah 3: Menggunakan AWS CLI atau SDK untuk memublikasikan pesan
Konsol bagus untuk pengujian manual, tetapi di dunia nyata, Anda akan ingin memublikasikan pesan secara terprogram.
AWS Command Line Interface (CLI) memudahkan pengiriman pesan SNS dari terminal atau skrip otomatisasi.
Dengan asumsi Anda sudah menginstal dan mengonfigurasi AWS CLI, jalankan perintah ini untuk memublikasikan pesan melalui CLI:
aws sns publish --topic-arn "sns-arn" --subject "CLI Notification" --message "Hello from the AWS CLI!"

Gambar 15 - Publikasi pesan melalui AWS CLI
Dalam sekejap, Anda akan melihat pesan serupa di kotak masuk Anda:

Gambar 16 - Publikasi pesan melalui AWS CLI (2)
Untuk aplikasi yang lebih canggih, AWS SDK menyediakan akses terprogram ke SNS dalam banyak bahasa pemrograman.
Berikut contoh sederhana memublikasikan pesan menggunakan Python dengan pustaka boto3:
import boto3
# Initialize the SNS client
sns_client = boto3.client("sns", region_name="eu-central-1")
# Topic ARN (Amazon Resource Name)
topic_arn = "sns-arn"
# Publish a simple message
response = sns_client.publish(
TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification"
)
# Check if the message was sent successfully
if "MessageId" in response:
print(f"Message published successfully! Message ID: {response['MessageId']}")

Gambar 17 - Publikasi pesan melalui Python SDK
Sekali lagi, pesan dikirim instan ke kotak masuk saya:

Gambar 18 - Publikasi pesan melalui Python SDK (2)
Itu saja untuk memublikasikan pesan dengan SNS! Sekarang Anda memiliki berbagai cara untuk mengirim notifikasi, mulai dari antarmuka konsol sederhana hingga publikasi terprogram dengan AWS CLI atau SDK.
> Baru mengenal AWS Boto di Python? Daftar kursus kami untuk mahir dalam waktu singkat.
Di bagian berikutnya, kita akan menjelajahi beberapa fitur lanjutan SNS yang akan meningkatkan notifikasi Anda ke level berikutnya.
Fitur Lanjutan SNS
Sejauh ini, Anda telah mempelajari dasar-dasar SNS. Pada bagian ini, Anda akan melihat beberapa fitur lanjutan yang membuat SNS benar-benar kuat.
Penyaringan pesan SNS
Mengirim notifikasi yang sama ke semua subscriber sering kali membuat endpoint menerima pesan yang tidak relevan.
Penyaringan pesan menyelesaikan masalah ini dengan memungkinkan subscriber memfilter pesan yang mereka terima berdasarkan atribut pesan. Anggap seperti menyiapkan filter email — Anda membuat aturan yang menentukan pesan mana yang lolos. Untuk SNS, aturan ini disebut filter policies.
Sebagai awal, Anda dapat menyiapkan filter policy pada langganan agar hanya menerima pesan yang relevan:

Gambar 19 - Kebijakan filter notifikasi
Pada contoh ini, subscriber hanya akan menerima notifikasi untuk pesan yang memiliki atribut order_value dengan nilai numerik 1500 ke atas.
Sekarang, untuk mengirim notifikasi seperti itu, Anda dapat menggunakan kode Python berikut:
import boto3
# Initialize the SNS client
sns_client = boto3.client("sns", region_name="eu-central-1")
# Topic ARN (Amazon Resource Name)
topic_arn = "arn:aws:sns:eu-central-1:105036517833:TestTopic"
response = sns_client.publish(
TopicArn=topic_arn,
Message="A new high-value order has been placed",
Subject="New Order Notification",
MessageAttributes={
"order_value": {"DataType": "Number", "StringValue": "2000"},
"region": {"DataType": "String", "StringValue": "EU"},
"category": {"DataType": "String", "StringValue": "Electronics"},
},
)
print(response)
Inilah yang akan Anda lihat setelah menjalankan skrip Python:

Gambar 20 - Mengirim notifikasi melalui Python
Hanya jika nilai order_value adalah 1500 atau lebih, Anda akan menerima notifikasi:

Gambar 21 - Konten notifikasi
Singkatnya, filter policy memungkinkan Anda mengirim notifikasi yang ditargetkan tanpa mengubah kode publikasi Anda. Yang terbaik, penyaringan terjadi di sisi AWS, bukan di aplikasi Anda, sehingga meningkatkan efisiensi dan mengurangi lalu lintas yang tidak perlu.
Dead letter queue (DLQ) SNS
Pengiriman pesan terkadang dapat gagal bahkan pada sistem yang paling andal.
Dead Letter Queue (DLQ) adalah antrian Amazon SQS khusus tempat SNS dapat mengirim pesan yang tidak dapat dikirim ke subscriber. Ini biasanya terjadi saat subscriber tidak tersedia atau mengembalikan error. Alih-alih kehilangan pesan gagal ini, SNS mengarahkannya ke DLQ, tempat Anda dapat menganalisis atau mencoba mengirim ulang nanti.
Menyiapkan DLQ melibatkan dua langkah. Pertama, buat antrian SQS untuk menjadi DLQ Anda:

Gambar 22 - Membuat antrian SQS
Kemudian, konfigurasikan langganan SNS Anda untuk menggunakan antrian ini bagi pesan yang tidak dapat dikirim:

Gambar 23 - Menambahkan redrive policy ke antrian SQS
Konfigurasi ini memerlukan izin yang tepat, karena SNS perlu dapat mengirim pesan ke antrian SQS. Di konsol AWS, Anda dapat menyiapkannya melalui kotak centang sederhana, tetapi jika Anda menggunakan CloudFormation atau alat infrastruktur sebagai kode lainnya, Anda perlu menambahkan izin IAM yang sesuai.
Dengan DLQ, Anda dapat memantau kegagalan pengiriman dan mengambil tindakan bila diperlukan. Misalnya, Anda dapat menyiapkan alarm yang aktif saat pesan mulai muncul di DLQ, memberi tahu Anda tentang potensi masalah pada subscriber, tetapi itu di luar cakupan bagian ini.
Menggunakan AWS Lambda dengan SNS
Fungsi Lambda membuka banyak kemungkinan untuk memproses pesan SNS.
Saat Anda melangganan fungsi Lambda ke topik SNS, fungsi akan otomatis dipicu setiap kali pesan dipublikasikan. Pendekatan serverless Lambda berarti Anda tidak perlu mengelola infrastruktur untuk pemrosesan pesan, karena ia menskalakan secara otomatis berdasarkan volume pesan.
Untuk memulai, buat terlebih dahulu fungsi Lambda:

Gambar 24 - Membuat fungsi Lambda
Lalu, isi dengan kode serupa berikut:
def lambda_handler(event, context):
# SNS messages come in the 'Records' array
for record in event["Records"]:
# Extract the message
message = record["Sns"]["Message"]
subject = record["Sns"]["Subject"]
timestamp = record["Sns"]["Timestamp"]
# Process the message
print(f"Received message: {message}")
print(f"Subject: {subject}")
print(f"Timestamp: {timestamp}")
# Your business logic here
# For example, store the message in a database
# or trigger another AWS service
print("ALL DONE!")
# Return success
return {"statusCode": 200, "body": "Message processed successfully"}

Gambar 25 - Kode fungsi Lambda
Setelah kode siap, klik tombol "Add trigger" untuk menghubungkan fungsi Lambda ke SNS:

Gambar 26 - Menghubungkan SNS ke Lambda
Fungsi kini terhubung ke antrian, yang berarti Anda dapat mengirim notifikasi uji:

Gambar 27 - Notifikasi uji
Fungsi Lambda memungkinkan Anda memantau log, sehingga Anda dapat melihat pemanggilan fungsi terbaru — hasil dari pengiriman notifikasi:

Gambar 28 - Log fungsi Lambda
Fungsi Lambda dapat melakukan hampir apa saja dengan pesan ini — menyimpannya ke database, memicu layanan AWS lain, mengirim email, atau bahkan memanggil API eksternal. Ini membuat SNS dan Lambda menjadi kombinasi kuat untuk membangun arsitektur berbasis event. Anda dapat mempelajari lebih lanjut tentang fungsi Lambda di tutorial Memulai dengan AWS Lambda.
Selanjutnya, Anda akan mempelajari dasar-dasar pemantauan dan pencatatan (logging) SNS.
Memantau dan Mencatat Aktivitas SNS
Melacak aktivitas SNS Anda sangat penting untuk menjaga sistem notifikasi yang andal.
Menggunakan Amazon CloudWatch dengan SNS
Amazon CloudWatch menyediakan pemantauan komprehensif untuk semua layanan AWS Anda, termasuk SNS. Saat Anda menyiapkan CloudWatch dengan SNS, Anda memperoleh visibilitas ke metrik operasional penting seperti tingkat pengiriman pesan, kegagalan, dan pola penggunaan API.
Untuk memulai pemantauan CloudWatch untuk SNS, buka konsol CloudWatch di akun AWS Anda. Dari sana, Anda dapat mengakses metrik SNS yang telah dikonfigurasi sebelumnya dan dikumpulkan otomatis oleh AWS.
Metrik SNS paling berharga untuk dipantau meliputi:
- NumberOfMessagesPublished: Melacak berapa banyak pesan yang dipublikasikan ke topik Anda.
- NumberOfNotificationsDelivered: Menunjukkan pengiriman pesan yang berhasil ke subscriber.
- NumberOfNotificationsFailed: Menyoroti upaya pengiriman yang gagal, yang bisa mengindikasikan masalah konfigurasi.
- PublishSize: Mengukur ukuran pesan yang dipublikasikan, membantu Anda tetap dalam batas layanan.

Gambar 29 - Dasbor Cloudwatch default untuk SNS
Menyiapkan alarm CloudWatch memungkinkan Anda merespons dengan cepat potensi masalah sebelum memengaruhi pengguna. Misalnya, Anda mungkin ingin membuat alarm yang aktif saat kegagalan pengiriman pesan melebihi ambang batas tertentu:
- Di konsol CloudWatch, buka bagian "Alarms".
- Klik "Create alarm" dan pilih metrik SNS yang ingin dipantau.
- Tentukan ambang batas (mis., lebih dari 5 kegagalan pengiriman dalam 5 menit).
- Konfigurasikan tindakan notifikasi, seperti mengirim peringatan ke tim operasional.
Jika Anda lebih suka gambar daripada instruksi, mulailah dengan membuat alarm untuk metrik yang diminati, seperti NumberOfNotificationsFailed. Atur ambang yang akan mengaktifkan alarm:

Gambar 30 - Pembuatan alarm
Selesai — alarm kini dibuat dan aktif:

Gambar 31 - Pembuatan alarm (2)
Alarm ini dapat menjadi pembeda antara penanganan masalah secara proaktif dan mengetahuinya dari pengguna yang tidak puas.
Meninjau log SNS
AWS CloudTrail menangkap semua aktivitas API di akun AWS Anda, termasuk tindakan dalam layanan SNS.
Setiap operasi yang dilakukan pada topik SNS Anda — baik melalui konsol, CLI, atau SDK — menghasilkan entri di log CloudTrail. Log ini menyediakan informasi berharga untuk analisis keamanan, pelacakan perubahan sumber daya, dan audit kepatuhan.
Untuk mengakses log SNS di CloudTrail:
- Buka konsol CloudTrail di akun AWS Anda (kemungkinan Anda harus membuat trail baru).
- Buka "Event history" untuk melihat aktivitas SNS terbaru.
- Filter event dengan memilih "Event source" dan mengetik "sns.amazonaws.com".
Sekali lagi, jika instruksi teks tidak cukup, lihat gambar di bawah. Mulailah dengan membuat trail baru:

Gambar 32 - Membuat trail baru
Kemudian di bawah "Event history," filter event agar hanya menyertakan yang untuk SNS:

Gambar 33 - Memfilter log
Log disimpan otomatis di bucket S3, yang berarti pendekatan ini menyediakan penyimpanan permanen untuk log Anda dan memungkinkan kemampuan kueri yang lebih lanjut.
> Bagaimana penyimpanan di AWS bekerja? Baca panduan kami tentang S3 dan EFS.
Sebagai penutup, dengan menggabungkan metrik CloudWatch dan log CloudTrail, Anda menciptakan sistem pemantauan komprehensif yang membantu memastikan infrastruktur SNS Anda beroperasi andal.
Praktik Terbaik Menggunakan AWS SNS
Anda kini mengetahui fitur dasar dan lanjutan AWS SNS. Selanjutnya adalah praktik terbaik untuk membuat topik dan mengirim pesan.
Mengamankan topik SNS
Keamanan harus menjadi prioritas utama saat menyiapkan infrastruktur SNS. Tanpa kontrol yang tepat, topik Anda bisa rentan terhadap akses tidak sah, yang merupakan risiko keamanan besar.
AWS Identity and Access Management (IAM) menyediakan alat yang Anda butuhkan untuk mengamankan topik SNS. Mulailah dengan membuat kebijakan yang mengikuti prinsip least privilege — berikan hanya izin spesifik yang diperlukan untuk setiap pengguna atau layanan. Misalnya, Anda mungkin ingin beberapa aplikasi hanya memublikasikan pesan sementara yang lain hanya perlu berlangganan topik.
Berikut contoh kebijakan IAM yang membatasi publikasi ke topik tertentu:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "sns-arn"
}
]
}
Anda juga dapat menggunakan kebijakan topik untuk mengontrol akun AWS mana yang dapat berlangganan ke topik Anda. Ini sangat penting jika Anda berbagi data lintas batas organisasi.
Jangan lupa untuk secara rutin mengaudit izin menggunakan AWS CloudTrail dan mencabut akses yang tidak lagi diperlukan.
Mengelola volume pesan
Volume pesan yang tinggi dapat membebani subscriber jika tidak ditangani dengan benar. Di sinilah menggabungkan SNS dengan layanan AWS lain menjadi penting.
Salah satu pola populer adalah arsitektur "fanout", di mana Anda memublikasikan pesan ke topik SNS yang memiliki beberapa antrian SQS berlangganan. Setiap antrian kemudian dapat memberi makan ke sistem pemrosesan berbeda dengan kecepatan masing-masing. Ini memisahkan publisher dari consumer, dan menyediakan buffer saat lonjakan trafik.
Untuk kebutuhan pemrosesan real-time, pertimbangkan untuk melangganan fungsi Lambda ke topik Anda. Lambda menskalakan otomatis sesuai volume pesan, menghilangkan kebutuhan untuk menyediakan dan mengelola server.
Mengurangi biaya
Meskipun SNS hemat biaya, pengeluaran dapat cepat bertambah seiring pertumbuhan volume pesan. Beberapa pilihan strategis dapat membantu menjaga biaya tetap terkendali.
Pertama, pilih protokol langganan secara selektif. Endpoint HTTP/HTTPS umumnya paling hemat biaya. Notifikasi email, meskipun praktis, sebaiknya digunakan secara bijak karena biaya per pesan lebih tinggi.
Penyaringan pesan juga merupakan alat penghemat biaya yang kuat. Dengan menerapkan filter policy pada langganan, Anda memastikan pesan hanya dikirim ke subscriber yang berkepentingan. Misalnya, jika Anda memiliki topik untuk semua peringatan sistem, Anda mungkin ingin engineer on-call hanya menerima peringatan kritis selama shift mereka, bukan setiap notifikasi:
# Subscribe with a filter policy
response = sns.subscribe(
TopicArn="sns-arn",
Protocol="email",
Endpoint="oncall@example.com",
Attributes={"FilterPolicy": '{"severity": ["critical"]}'},
)
Terakhir, tinjau secara berkala penggunaan SNS Anda di AWS Cost Explorer dan cari peluang untuk mengonsolidasikan topik atau menghapus langganan yang tidak terpakai. Sumber daya yang tidak digunakan atau duplikat tidak hanya menambah biaya yang tidak perlu, tetapi juga memperumit arsitektur Anda.
Dengan mengikuti praktik terbaik ini, Anda akan membangun implementasi SNS yang aman, skalabel, dan hemat biaya — semua yang Anda butuhkan untuk memiliki layanan notifikasi andal tanpa pengeluaran tak terduga atau kekhawatiran keamanan.
Ringkasan AWS SNS
Jika Anda memerlukan notifikasi real-time di seluruh aplikasi terdistribusi, AWS SNS adalah jawabannya. Mudah digunakan, terintegrasi baik dengan layanan AWS lain, dan menskalakan tanpa batas sesuai kebutuhan Anda.
Model publish-subscribe di SNS memudahkan implementasi sistem notifikasi yang dapat menjangkau banyak kanal secara bersamaan. Mulai dari membuat topik dan mengelola subscriber hingga menerapkan fitur lanjutan seperti penyaringan pesan dan dead letter queue, Anda kini memiliki pengetahuan untuk membangun infrastruktur notifikasi yang tangguh.
Anda juga telah mempelajari aspek penting pemantauan, keamanan, dan manajemen biaya yang memastikan implementasi SNS Anda tetap andal dan efisien di lingkungan produksi.
Seiring aplikasi terus mengadopsi arsitektur berbasis event, layanan seperti SNS menjadi semakin bernilai. Baik Anda membangun sistem peringatan sederhana atau microservices yang kompleks, pola dalam tutorial ini memberikan fondasi untuk komunikasi yang efektif antar komponen sistem.
Untuk mempelajari lebih lanjut tentang AWS, ikuti kursus-kursus dari DataCamp berikut:
Anda bahkan dapat menggunakan DataCamp untuk mempersiapkan ujian sertifikasi AWS — AWS Cloud Practitioner (CLF-C02).
FAQs
Apa itu AWS SNS dan apa bedanya dengan SQS?
AWS SNS (Simple Notification Service) adalah layanan messaging yang sepenuhnya dikelola yang memungkinkan Anda mengirim notifikasi dari publisher ke banyak subscriber. Berbeda dengan SQS (Simple Queue Service) yang mengikuti model berbasis antrian di mana setiap pesan diproses oleh satu konsumen, SNS menggunakan model publish-subscribe yang menyiarkan satu pesan ke banyak penerima secara bersamaan. Perbedaan mendasar ini membuat SNS ideal untuk notifikasi event dan SQS lebih cocok untuk pemrosesan tugas.
Jenis endpoint apa saja yang dapat berlangganan topik SNS?
AWS SNS mendukung berbagai endpoint subscriber, termasuk alamat email, nomor ponsel SMS, antrian SQS, fungsi Lambda, endpoint HTTP/HTTPS, dan push notifikasi seluler. Variasi ini memberi fleksibilitas dalam cara notifikasi dikirim dan diproses, memungkinkan Anda menjangkau penerima manusia (melalui email atau SMS) maupun sistem lain (melalui Lambda, SQS, atau endpoint HTTP) dengan pesan yang sama.
Bagaimana cara mengamankan topik SNS saya?
Mengamankan topik SNS melibatkan penerapan kontrol akses yang tepat melalui kebijakan IAM yang mengikuti prinsip least privilege. Anda dapat membatasi siapa yang dapat memublikasikan ke topik dan mengelola langganan, serta menggunakan kebijakan topik untuk mengontrol akun AWS mana yang dapat berlangganan. Untuk data sensitif, AWS SNS mendukung enkripsi sisi server untuk melindungi konten pesan selama transmisi. Audit keamanan rutin menggunakan log CloudTrail membantu mengidentifikasi upaya akses tidak sah atau potensi kerentanan dalam implementasi SNS Anda.
Bagaimana saya dapat menerapkan penyaringan pesan di SNS?
Penyaringan pesan di SNS memungkinkan subscriber menerima hanya notifikasi yang penting bagi mereka. Ini dicapai melalui filter policy yang didefinisikan subscriber berdasarkan atribut pesan. Saat Anda memublikasikan pesan dengan atribut tertentu (seperti nilai order, wilayah, atau tingkat prioritas), SNS membandingkan atribut tersebut dengan filter policy masing-masing subscriber dan hanya mengirim pesan jika cocok. Penyaringan terjadi di sisi AWS, bukan di aplikasi Anda, sehingga meningkatkan efisiensi dan mengurangi lalu lintas pesan yang tidak perlu.
Bagaimana cara kerja dead letter queue (DLQ) dengan SNS?
Dead Letter Queue bertindak sebagai jaring pengaman untuk kegagalan pengiriman pesan di SNS. Ketika pesan tidak dapat dikirim ke subscriber (biasanya karena subscriber tidak tersedia atau mengembalikan error), SNS dapat mengarahkannya ke antrian SQS yang ditetapkan alih-alih hilang begitu saja. Sistem DLQ ini memungkinkan Anda menangkap, menganalisis, dan berpotensi mengirim ulang pengiriman yang gagal. Ini sangat berharga untuk notifikasi yang sangat krusial di mana kehilangan pesan dapat berdampak besar pada bisnis, sekaligus memberikan visibilitas terhadap masalah pengiriman yang mungkin tidak terdeteksi.

