Menerbitkan pesan Amazon SNS dari Amazon VPC - Amazon Simple Notification Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menerbitkan pesan Amazon SNS dari Amazon VPC

Bagian ini menjelaskan cara untuk menerbitkan ke topik Amazon SNS sambil menjaga pesan aman dalam jaringan privat. Anda menerbitkan pesan dari instans Amazon EC2 yang dihosting di Amazon Virtual Private Cloud (Amazon VPC). Pesan tetap berada di dalam jaringan AWS tanpa menjelajahi internet publik. Dengan menerbitkan pesan secara privat dari VPC, Anda dapat meningkatkan keamanan lalu lintas antara aplikasi Anda dan Amazon SNS. Keamanan ini penting ketika Anda menerbitkan informasi yang dapat diidentifikasi secara pribadi (PII) tentang pelanggan Anda, atau ketika aplikasi Anda tunduk pada peraturan pasar. Sebagai contoh, menerbitkan secara privat sangat membantu jika Anda memiliki sistem pemeliharaan kesehatan yang harus mematuhi Health Insurance Portability and Accountability Act (HIPAA), atau sistem keuangan yang harus mematuhi Payment Card Industry Data Security Standard (PCI DSS).

Langkah-langkah umumnya adalah sebagai berikut:

  • Gunakan templat AWS CloudFormation untuk secara otomatis membuat jaringan privat sementara di Akun AWS Anda.

  • Buat VPC endpoint yang menghubungkan VPC dengan Amazon SNS.

  • Login ke instans Amazon EC2 dan terbitkan pesan secara privat ke topik Amazon SNS.

  • Verifikasi bahwa pesan telah berhasil dikirimkan.

  • Hapus sumber daya yang Anda buat selama proses ini sehingga tidak tetap berada di Akun AWS Anda.

Diagram berikut menggambarkan jaringan privat yang Anda buat di akun AWS Anda saat Anda menyelesaikan langkah-langkah berikut ini:

Arsitektur jaringan privat yang Anda buat dengan langkah-langkah tersebut.

Jaringan ini terdiri dari VPC yang berisi instans Amazon EC2. Instans menghubungkan ke Amazon SNS melalui VPC endpoint antarmuka. Titik akhir jenis ini terhubung ke layanan yang didukung oleh PrivateLink AWS. Dengan dibuatnya koneksi ini, Anda dapat login ke instans Amazon EC2 dan menerbitkan pesan ke topik Amazon SNS, meskipun jaringan terputus dari internet publik. Topik melakukan fan out pesan yang diterima ke dua fungsi AWS Lambda berlangganan. Fungsi tersebut mencatat pesan yang mereka terima di Amazon CloudWatch Logs.

Dibutuhkan sekitar 20 menit untuk menyelesaikan langkah-langkah tersebut.

Sebelum Anda memulai

Sebelum Anda memulai, Anda memerlukan akun Amazon Web Services (AWS). Saat Anda daftar, akun Anda secara otomatis terdaftar untuk semua layanan di AWS, termasuk Amazon SNS dan Amazon VPC. Jika Anda belum membuat akun, buka https://aws.amazon.com/, dan kemudian pilih Buat Akun Gratis.

Langkah 1: Membuat key pair Amazon EC2

Pasangan kunci digunakan untuk login ke instans Amazon EC2. Pasangan kunci terdiri dari kunci publik yang digunakan untuk mengenkripsi informasi login Anda, dan kunci privat yang digunakan untuk mendekripsinya. Saat Anda membuat pasangan kunci, Anda harus mengunduh salinan kunci privat. Kemudian, Anda menggunakan pasangan kunci untuk login ke instans Amazon EC2. Untuk login, Anda harus menentukan nama pasangan kunci, dan Anda harus memberikan kunci privat.

Untuk membuat pasangan kunci
  1. Masuk ke AWS Management Console dan buka konsol Amazon EC2 pada https://console.aws.amazon.com/ec2/.

  2. Dalam menu navigasi di sebelah kiri, cari bagian Jaringan & Keamanan. Kemudian, pilih Pasangan Kunci.

  3. Pilih Buat Pasangan Kunci.

  4. Di jendela Buat Pasangan Kunci, untuk Nama pasangan kunci, ketik VPCE-Tutorial-KeyPair. Kemudian, pilih Buat.

    Jendela Buat Pasangan Kunci.
  5. File kunci privat secara otomatis akan diunduh oleh peramban Anda. Simpan di tempat yang aman. Amazon EC2 memberikan file ekstensi .pem.

  6. (Opsional) Jika Anda akan menggunakan klien SSH pada komputer Mac atau Linux untuk menghubungkan ke instans Anda, gunakan perintah chmod untuk mengatur izin file kunci privat Anda sehingga hanya Anda yang dapat membacanya:

    1. Buka terminal dan navigasikan ke direktori yang berisi kunci privat:

      $ cd /filepath_to_private_key/
    2. Mengatur izin menggunakan perintah berikut ini:

      $ chmod 400 VPCE-Tutorial-KeyPair.pem

Langkah 2: BuatAWSsumber daya

Untuk menyiapkan infrastruktur, Anda harus menggunakan templat AWS CloudFormation. Templat adalah file yang bertindak sebagai cetak biru untuk membangun sumber daya AWS, seperti instans Amazon EC2 dan topik Amazon SNS. Templat untuk proses ini disediakan pada GitHub untuk Anda unduh.

Anda menyediakan templat untuk AWS CloudFormation, dan ketentuan AWS CloudFormation sumber daya yang Anda butuhkan sebagai tumpukan di Akun AWS Anda. Tumpukan adalah kumpulan sumber daya yang Anda kelola sebagai unit tunggal. Saat Anda menyelesaikan langkah-langkah tersebut, Anda dapat menggunakan AWS CloudFormation untuk menghapus semua sumber daya dalam tumpukan sekaligus. Sumber daya tersebut tidak tetap berada di Akun AWS Anda, kecuali jika Anda menginginkannya.

Tumpukan untuk proses ini mencakup sumber daya berikut ini:

  • VPC dan sumber daya jaringan yang berkaitan, termasuk subnet, grup keamanan, gateway internet, dan tabel rute.

  • Instans Amazon EC2 yang diluncurkan ke subnet di VPC.

  • Topik Amazon SNS.

  • Dua fungsi AWS Lambda. Fungsi tersebut menerima pesan yang diterbitkan ke topik Amazon SNS, dan mereka mencatat peristiwa di CloudWatch Logs.

  • Metrik dan log Amazon CloudWatch.

  • IAM role yang mengizinkan instans Amazon EC2 untuk menggunakan Amazon SNS, dan IAM role yang mengizinkan fungsi Lambda untuk menulis ke CloudWatch logs.

Untuk membuat sumber daya AWS
  1. Unduh file templat dari situs web GitHub.

  2. Masuk ke konsol AWS CloudFormation.

  3. Pilih Buat Tumpukan.

  4. Pada halaman Pilih Templat, pilih Unggah templat ke Amazon S3, pilih file, dan pilih Berikutnya.

  5. Pada halaman Tentukan Detail, tentukan nama tumpukan dan kunci:

    1. Untuk Nama tumpukan, ketik VPCE-Tutorial-Stack.

    2. Untuk Nama Kunci, pilih VPCE-Tutorial-KeyPair.

    3. Untuk Lokasi SSH, simpan nilai default 0.0.0.0/0.

      Halaman Tentukan Detail.
    4. Pilih Berikutnya.

  6. Pada halaman Opsi, simpan semua nilai default, dan pilih Berikutnya.

  7. Pada halaman Tinjau, verifikasi detail tumpukan.

  8. Di bawah Kapabilitas, akui bahwa AWS CloudFormation mungkin membuat sumber daya IAM dengan nama kustom.

  9. Pilih Buat.

    Konsol AWS CloudFormation membuka halaman Tumpukan. VPCE-Tutorial-Stack memiliki status CREATE_IN_PROGRESS. Dalam beberapa menit, setelah proses pembuatan selesai, status berubah menjadi CREATE_COMPLETE.

    Tumpukan AWS CloudFormation dengan status CREATE_COMPLETE.
    Tip

    Pilih tombol Segarkan untuk melihat status tumpukan terbaru.

Langkah 3: Konfirmasi bahwa instans Amazon EC2 Anda tidak memiliki akses internet

Instans Amazon EC2 yang diluncurkan di VPC Anda dalam langkah sebelumnya tidak memiliki akses internet. Ini melarang lalu lintas keluar, dan tidak dapat menerbitkan pesan ke Amazon SNS. Verifikasikan ini dengan masuk ke instans. Kemudian, upayakan untuk menghubungkan ke titik akhir publik, dan upayakan untuk mengirim pesan Amazon SNS.

Pada titik ini, upaya menerbitkan gagal. Dalam langkah berikutnya, setelah Anda membuat VPC endpoint untuk Amazon SNS, upaya Anda untuk menerbitkan berhasil.

Untuk menghubungkan ke instans Amazon EC2 Anda
  1. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/.

  2. Dalam menu navigasi di sebelah kiri, cari bagian Instans. Kemudian, pilih Instans.

  3. Dalam daftar instans, pilih VPCE-Tutorial-EC2Instance.

  4. Salin nama host yang disediakan di kolom DNS Publik (IPv4).

    Detail tentang instans Amazon EC2 yang diluncurkan oleh AWS CloudFormation.
  5. Buka terminal. Dari direktori yang berisi pasangan kunci, hubungkan ke instans menggunakan perintah berikut ini, di mana nama host instans adalah nama host yang Anda salin dari konsol Amazon EC2:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
Untuk memverifikasi bahwa instans tidak memiliki konektivitas internet
  • Di terminal Anda, upayakan untuk menghubungkan ke titik akhir publik, seperti amazon.com:

    $ ping amazon.com

    Karena upaya koneksi gagal, Anda dapat membatalkan kapan saja (Ctrl + C pada Windows atau Command + C pada macOS).

Untuk memverifikasi bahwa instans tidak memiliki konektivitas ke Amazon SNS
  1. Masuk ke konsol Amazon SNS.

  2. Di panel navigasi di sebelah kiri, pilih Topik.

  3. Pada halaman Topik, salin Amazon Resource Name (ARN) ke topik VPCE-Tutorial-Topic.

  4. Di terminal Anda, upayakan untuk menerbitkan pesan ke topik:

    $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"

    Karena upaya menerbitkan gagal, Anda dapat membatalkan setiap saat.

Langkah 4: Membuat VPC endpoint Amazon untuk Amazon SNS

Untuk menghubungkan VPC ke Amazon SNS, Anda harus menentukan VPC endpoint antarmuka. Setelah Anda menambahkan titik akhir, Anda dapat login ke instans Amazon EC2 di VPC Anda, dan dari sana Anda dapat menggunakan API Amazon SNS. Anda dapat menerbitkan pesan ke topik, dan pesan diterbitkan secara privat. Pesan tetap di dalam jaringan AWS, dan pesan tidak menjelajahi internet publik.

catatan

Instans masih tidak memiliki akses ke layanan AWS dan titik akhir pada internet.

Untuk membuat titik akhir
  1. Buka konsol Amazon VPC pada https://console.aws.amazon.com/vpc/.

  2. Di menu navigasi di sebelah kiri, pilih Titik Akhir.

  3. Pilih Buat Titik Akhir.

  4. Pada halaman Buat Titik Akhir, untuk Kategori layanan, pilih layanan AWS.

  5. Untuk Nama Layanan, pilih nama layanan untuk Amazon SNS.

    Nama layanan bervariasi berdasarkan wilayah yang dipilih. Sebagai contoh, jika Anda memilih US East (N. Virginia), nama layanan adalah com.amazonaws.us-east-1.sns.

  6. Untuk VPC, pilih VPC yang memiliki nama VPCE-Tutorial-VPC.

    Menu VPC pada halaman Buat Titik Akhir.
  7. Untuk Subnet, pilih subnet yang memiliki VPCE-Tutorial-Subnet di ID subnet.

    Subnet pada halaman Buat Titik Akhir.
  8. Untuk Aktifkan Nama DNS Privat, pilih Aktifkan untuk titik akhir ini.

  9. Untuk Grup keamanan, pilih Pilih grup keamanan, dan pilih VPCE-Tutorial-SecurityGroup.

    Grup keamanan pada halaman Buat Titik Akhir.
  10. Pilih Buat titik akhir. Konsol Amazon VPC mengonfirmasi bahwa VPC endpoint dibuat.

    Pesan konfirmasi ditampilkan setelah Anda membuat titik akhir.
  11. Pilih Tutup.

    Konsol Amazon VPC membuka halaman Titik akhir. Titik akhir baru memiliki status tertunda. Dalam beberapa menit, setelah proses pembuatan selesai, status berubah menjadi tersedia.

    VPC endpoint dengan status tersedia.

Langkah 5: Memublikasikan pesan ke topik Amazon SNS Anda

Sekarang VPC Anda mencakup titik akhir untuk Amazon SNS, Anda dapat login ke instans Amazon EC2 dan menerbitkan pesan ke topik.

Untuk menerbitkan pesan
  1. Jika terminal Anda tidak lagi terhubung ke instans Amazon EC2 Anda, hubungkan lagi:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
  2. Jalankan perintah yang sama yang Anda lakukan sebelumnya untuk menerbitkan pesan ke topik Amazon SNS Anda. Kali ini, upaya untuk menerbitkan berhasil, dan Amazon SNS mengembalikan ID pesan:

    $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello" { "MessageId": "5b111270-d169-5be6-9042-410dfc9e86de" }

Langkah 6: Memverifikasi pengiriman pesan Anda

Ketika topik Amazon SNS menerima pesan, akan melakukan fan out pesan dengan mengirimkannya ke dua fungsi Lambda yang berlangganan. Saat fungsi tersebut menerima pesan, mereka mencatat peristiwa ke CloudWatch logs. Untuk memverifikasi bahwa pengiriman pesan Anda berhasil, periksa apakah fungsi telah dipanggil, dan periksa apakah CloudWatch logs telah diperbarui.

Untuk memverifikasi bahwa fungsi Lambda dipanggil
  1. Buka konsol AWS Lambda pada https://console.aws.amazon.com/lambda/.

  2. Pada halaman Fungsi, pilih VPCe-Tutorial-Lambda-1.

  3. Pilih Pemantauan.

  4. Periksa grafik Hitungan invokasi. Grafik ini menunjukkan jumlah waktu saat fungsi Lambda telah dijalankan.

    Jumlah invokasi cocok dengan jumlah waktu saat Anda menerbitkan pesan ke topik.

    Grafik hitungan invokasi di konsol Lambda.
Untuk memverifikasi bahwa CloudWatch logs telah diperbarui
  1. Buka konsol CloudWatch pada https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi di sebelah kiri, pilih Log.

  3. Periksa log yang ditulis oleh fungsi Lambda:

    1. Pilih grup log /aws/lambda/VPCE-Tutorial-Lambda-1/.

    2. Pilih pengaliran log.

    3. Periksa bahwa log mencakup entri From SNS: Hello.

      CloudWatch mencakup entri “Dari SNS: Halo”.
    4. Pilih Grup Log pada bagian atas konsol untuk kembali ke halaman Grup Log. Kemudian, ulangi langkah-langkah sebelumnya untuk grup log /aws/lambda/VPCE-Tutorial-Lambda-2/.

Selamat! Dengan menambahkan titik akhir untuk Amazon SNS ke VPC, Anda dapat menerbitkan pesan ke topik dari dalam jaringan yang terkelola oleh VPC. Pesan diterbitkan secara privat tanpa dipaparkan ke internet publik.

Langkah 7: Membersihkan

Kecuali Anda ingin mempertahankan sumber daya yang Anda buat, Anda dapat menghapusnya sekarang. Dengan menghapus sumber daya AWS yang tidak lagi Anda gunakan, Anda mencegah biaya yang tidak perlu untuk Akun AWS Anda.

Pertama, hapus VPC endpoint Anda menggunakan konsol Amazon VPC. Kemudian, hapus sumber daya lain yang Anda buat dengan menghapus tumpukan di konsol AWS CloudFormation. Saat Anda menghapus tumpukan, AWS CloudFormation menghapus sumber daya tumpukan dari Akun AWS.

Untuk menghapus VPC endpoint Anda
  1. Buka konsol Amazon VPC pada https://console.aws.amazon.com/vpc/.

  2. Di menu navigasi di sebelah kiri, pilih Titik Akhir.

  3. Pilih titik akhir yang Anda buat.

  4. Pilih Tindakan, dan kemudian pilih Hapus Titik Akhir.

  5. Di jendela Hapus Titik Akhir, pilih Ya, Hapus.

    Status titik akhir ubah ke menghapus. Setelah penghapusan selesai, titik akhir dihapus dari halaman.

Untuk menghapus tumpukan AWS CloudFormation Anda
  1. Buka konsol AWS CloudFormation pada https://console.aws.amazon.com/cloudformation.

  2. Pilih tumpukan VPCe-Tutorial-Stack.

  3. Pilih Tindakan, dan kemudian pilih Hapus Tumpukan.

  4. Di jendela Hapus Tumpukan, pilih Ya, Hapus.

    Status tumpukan berubah menjadi DELETE_IN_PROGRESS. Saat penghapusan selesai, tumpukan dihapus dari halaman.

Untuk informasi selengkapnya, lihat sumber daya berikut ini.