Men-deploy aplikasi Node.js dengan DynamoDB ke Elastic Beanstalk - AWS Elastic Beanstalk

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

Men-deploy aplikasi Node.js dengan DynamoDB ke Elastic Beanstalk

Tutorial ini dan contoh nodejs-example-dynamoaplikasi.zip memandu Anda melalui proses penerapan aplikasi Node.js yang menggunakan AWS SDK untuk JavaScript di Node.js untuk berinteraksi dengan layanan Amazon DynamoDB. Anda akan membuat tabel DynamoDB yang ada di database yang dipisahkan, atau eksternal, dari lingkungan. AWS Elastic Beanstalk Anda juga akan mengonfigurasi aplikasi untuk menggunakan database terpisah. Dalam lingkungan produksi, praktik terbaik adalah menggunakan database yang dipisahkan dari lingkungan Elastic Beanstalk sehingga independen dari siklus hidup lingkungan. Praktek ini juga memungkinkan Anda untuk melakukan penyebaran biru/hijau.

Contoh aplikasi menggambarkan hal berikut:

  • Tabel DynamoDB yang menyimpan data teks yang disediakan pengguna.

  • File konfigurasi untuk membuat tabel.

  • Topik Layanan Pemberitahuan Sederhana Amazon.

  • Penggunaan file package.json untuk menginstal paket selama penerapan.

Prasyarat

Tutorial ini membutuhkan prasyarat berikut:

  • Runtime Node.js

  • Perangkat lunak pengelola paket Node.js default, npm

  • Generator baris perintah Express

  • Antarmuka Baris Perintah Elastic Beanstalk (EB CLI)

Untuk detail tentang menginstal tiga komponen pertama yang terdaftar dan menyiapkan lingkungan pengembangan lokal Anda, lihatMenyiapkan lingkungan pengembangan Node.js Anda. Untuk tutorial ini, Anda tidak perlu menginstal AWS SDK untuk Node.js, yang juga disebutkan dalam topik yang direferensikan.

Untuk detail tentang menginstal dan mengonfigurasi CLI EB, lihat dan. Memasang EB CLI Mengonfigurasi EB CLI

Membuat lingkungan Elastic Beanstalk

Direktori aplikasi Anda

Tutorial ini menggunakan direktori yang disebut nodejs-example-dynamo untuk bundel sumber aplikasi. Buat nodejs-example-dynamo direktori untuk tutorial ini.

~$ mkdir nodejs-example-dynamo
catatan

Setiap tutorial dalam chapter ini menggunakan direktorinya sendiri untuk bundel sumber aplikasi. Nama direktori cocok dengan nama aplikasi sampel yang digunakan oleh tutorial.

Ubah direktori kerja Anda saat ini menjadinodejs-example-dynamo.

~$ cd nodejs-example-dynamo

Sekarang, mari kita mengatur lingkungan Elastic Beanstalk yang menjalankan platform Node.js dan aplikasi sampel. Kita akan menggunakan antarmuka baris perintah Elastic Beanstalk (EB CLI).

Untuk mengonfigurasi repositori EB CLI untuk aplikasi Anda dan membuat lingkungan Elastic Beanstalk yang menjalankan platform Node.js
  1. Buat repositori dengan perintah eb init.

    ~/nodejs-example-dynamo$ eb init --platform node.js --region <region>

    Perintah ini membuat file konfigurasi dalam folder bernama .elasticbeanstalk yang menentukan pengaturan dalam membuat lingkungan untuk aplikasi Anda, dan membuat sebuah aplikasi Elastic Beanstalk yang diambil dari nama folder saat ini.

  2. Buat lingkungan yang menjalankan aplikasi sampel dengan perintah eb create.

    ~/nodejs-example-dynamo$ eb create --sample nodejs-example-dynamo

    Perintah ini membuat lingkungan yang seimbang beban dengan pengaturan default untuk platform Node.js dan sumber daya berikut:

    • Instans EC2 – Mesin virtual Amazon Elastic Compute Cloud (Amazon EC2) yang dikonfigurasi untuk menjalankan aplikasi web di platform yang Anda pilih.

      Setiap platform menjalankan satu set perangkat lunak, file konfigurasi dan penulisan tertentu untuk mendukung versi bahasa, kerangka kerja, kontainer web tertentu, atau kombinasi dari semua ini. Sebagian besar platform menggunakan Apache atau NGINX sebagai proksi terbalik yang ada di depan aplikasi web Anda, meneruskan permintaan ke aplikasi web, menyajikan aset statis, dan menghasilkan log akses dan kesalahan.

    • Grup keamanan instans – Grup keamanan Amazon EC2 yang dikonfigurasi untuk mengizinkan lalu lintas masuk di port 80. Sumber daya ini memungkinkan lalu lintas HTTP dari penyeimbang beban mencapai instans EC2 yang menjalankan aplikasi web Anda. Secara default, lalu lintas tidak diizinkan di port lain.

    • Penyeimbang beban – Penyeimbang beban Elastic Load Balancing yang dikonfigurasi untuk mendistribusikan permintaan ke instans yang menjalankan aplikasi Anda. Penyeimbang beban juga menghilangkan kebutuhan untuk mengekspos instans Anda langsung ke internet.

    • Grup keamanan penyeimbang beban – Grup keamanan Amazon EC2 yang dikonfigurasi untuk mengizinkan lalu lintas masuk di port 80. Sumber daya ini memungkinkan lalu lintas HTTP dari internet mencapai penyeimbang beban. Secara default, lalu lintas tidak diizinkan di port lain.

    • Grup Auto Scaling – Grup Auto Scaling yang dikonfigurasi untuk menggantikan instans jika diakhiri atau menjadi tidak tersedia.

    • Bucket Amazon S3 – Lokasi penyimpanan untuk kode sumber, log, dan artifact lainnya yang dibuat saat Anda menggunakan Elastic Beanstalk.

    • CloudWatch Alarm Amazon — Dua CloudWatch alarm yang memantau beban pada instans di lingkungan Anda dan yang dipicu jika beban terlalu tinggi atau terlalu rendah. Saat alarm terpicu, grup Auto Scaling Anda akan menaikkan atau menurunkan skala sebagai respons.

    • AWS CloudFormation stack - Elastic AWS CloudFormation Beanstalk digunakan untuk meluncurkan sumber daya di lingkungan Anda dan menyebarkan perubahan konfigurasi. Sumber daya ditentukan di sebuah templat yang dapat Anda lihat di Konsol AWS CloudFormation.

    • Nama domain – Nama domain yang merutekan ke aplikasi web Anda dalam bentuk subdomain.region.elasticbeanstalk.com.

      catatan

      Untuk meningkatkan keamanan aplikasi Elastic Beanstalk Anda, domain elasticbeanstalk.com terdaftar di Daftar Akhiran Publik (PSL). Untuk keamanan lebih lanjut, kami menyarankan Anda menggunakan cookie dengan __Host- awalan jika Anda perlu mengatur cookie sensitif di nama domain default untuk aplikasi Elastic Beanstalk Anda. Praktik ini akan membantu mempertahankan domain Anda dari upaya pemalsuan permintaan lintas situs (CSRF). Untuk informasi selengkapnya, lihat halaman Set-Cookie di Jaringan Pengembang Mozilla.

  3. Ketika pembuatan lingkungan selesai, gunakan perintah eb open untuk membuka URL lingkungan di browser default.

    ~/nodejs-example-dynamo$ eb open

Anda sekarang telah membuat lingkungan Elastic Beanstalk Node.js dengan aplikasi sampel. Anda dapat memperbaruinya dengan aplikasi Anda sendiri. Selanjutnya, kami memperbarui aplikasi sampel untuk menggunakan kerangka kerja Express.

Menambahkan izin ke instans lingkungan Anda

Aplikasi Anda berjalan pada satu atau lebih instans EC2 di balik penyeimbang beban, yang melayani permintaan HTTP dari Internet. Ketika menerima permintaan yang mengharuskannya untuk menggunakan AWS layanan, aplikasi menggunakan izin dari instance yang dijalankannya untuk mengakses layanan tersebut.

Aplikasi contoh menggunakan izin instance untuk menulis data ke tabel DynamoDB, dan mengirim notifikasi ke topik Amazon SNS dengan SDK untuk di Node.js. JavaScript Menambahkan kebijakan terkelola berikut ke profil instans default untuk memberikan izin instans EC2 di lingkungan Anda untuk mengakses DynamoDB dan Amazon SNS:

  • AmazonDynamoDB FullAccess

  • AmazonSNS FullAccess

Untuk menambahkan kebijakan ke profil instans default
  1. Buka Halaman peran di konsol IAM.

  2. Pilih aws-elasticbeanstalk-ec2-peran.

  3. Di tab Izin, pilih Lampirkan kebijakan.

  4. Pilih kebijakan terkelola untuk layanan tambahan yang digunakan aplikasi Anda. Untuk tutorial ini, pilih AmazonSNSFullAccess danAmazonDynamoDBFullAccess.

  5. Memilih Lampirkan kebijakan.

Lihat Mengelola profil instans Elastic Beanstalk untuk selengkapnya tentang mengelola profil instans.

Menyebarkan contoh aplikasi

Sekarang lingkungan Anda siap untuk Anda gunakan dan jalankan contoh aplikasi untuk tutorial ini: nodejs-example-dynamo.zip.

Untuk menyebarkan dan menjalankan aplikasi contoh tutorial
  1. Ubah direktori kerja Anda saat ini ke direktori aplikasinodejs-example-dynamo.

    ~$ cd nodejs-example-dynamo
  2. Unduh dan ekstrak isi contoh bundel sumber aplikasi nodejs-example-dynamo.zip ke direktori nodejs-example-dynamo aplikasi.

  3. Terapkan aplikasi contoh ke lingkungan Elastic Beanstalk Anda dengan perintah. eb deploy

    ~/nodejs-example-dynamo$ eb deploy
    catatan

    Secara default, eb deploy perintah membuat file ZIP dari folder proyek Anda. Anda dapat mengonfigurasi EB CLI untuk men-deploy Artifact dari proses membangun Anda bukan membuat file ZIP folder proyek Anda. Untuk informasi selengkapnya, lihat Men-deploy artifact bukan folder proyek.

  4. Ketika pembuatan lingkungan selesai, gunakan perintah eb open untuk membuka URL lingkungan di browser default.

    ~/nodejs-example-dynamo$ eb open

Situs mengumpulkan informasi kontak pengguna dan menggunakan tabel DynamoDB untuk menyimpan data. Untuk menambahkan entri, pilih Daftar hari ini, masukkan nama dan alamat email, lalu pilih Daftar!. Aplikasi web menulis isi formulir ke tabel dan memicu notifikasi email Amazon SNS.

Sekarang, topik Amazon SNS dikonfigurasi dengan email placeholder untuk pemberitahuan. Anda akan memperbarui konfigurasi segera, tetapi sementara itu Anda dapat memverifikasi tabel DynamoDB dan topik Amazon SNS di AWS Management Console.

Untuk melihat tabel
  1. Buka halaman Tabel di konsol DynamoDB.

  2. Temukan tabel yang dibuat aplikasi. Nama dimulai dengan awseb dan berisi. StartupSignupsTable

  3. Pilih tabel, memilih Item, lalu pilih Mulai pencarian untuk menampilkan semua item dalam tabel.

Tabel berisi entri untuk setiap alamat email yang dikirimkan pada situs pendaftaran. Selain menulis ke tabel, aplikasi mengirim pesan ke topik Amazon SNS yang memiliki dua langganan, satu untuk pemberitahuan email kepada Anda, dan satu lagi untuk antrean Amazon Simple Queue Service yang dapat dibaca aplikasi pekerja untuk memproses permintaan dan mengirim email ke pelanggan yang tertarik.

Untuk melihat topik
  1. Buka halaman Topik di konsol Amazon SNS.

  2. Temukan topik yang dibuat oleh aplikasi. Nama dimulai dengan awseb dan berisi. NewSignupTopic

  3. Pilih topik untuk melihat langganannya.

Aplikasi (app.js) mendefinisikan dua rute. Root path (/) mengembalikan halaman web yang dirender dari template Embedded JavaScript (EJS) dengan formulir yang diisi pengguna untuk mendaftarkan nama dan alamat email mereka. Dengan mengirim formulir maka akan mengirimkan permintaan POST dengan data formulir ke rute /signup, yang menulis entri ke tabel DynamoDB dan menerbitkan pesan ke topik Amazon SNS untuk memberitahu pemilik pendaftaran.

Aplikasi sampel menyertakan file konfigurasi yang membuat tabel DynamoDB, topik Amazon SNS, dan antrean Amazon SQS yang digunakan oleh aplikasi. Hal ini memungkinkan Anda membuat lingkungan baru dan menguji fungsionalitasnya dengan segera, tetapi memiliki kelemahan mengikat tabel DynamoDB ke lingkungan. Untuk lingkungan produksi, Anda harus membuat tabel DynamoDB di luar lingkungan untuk menghindari kehilangan itu ketika Anda mengakhiri lingkungan atau memperbarui konfigurasinya.

Buat tabel DynamoDB

Untuk menggunakan tabel DynamoDB eksternal dengan aplikasi yang berjalan di Elastic Beanstalk, pertama buat tabel di DynamoDB. Ketika Anda membuat tabel di luar Elastic Beanstalk, tabel tersebut sepenuhnya independen dari Elastic Beanstalk dan lingkungan Elastic Beanstalk Anda, dan tidak akan diakhiri oleh Elastic Beanstalk.

Buat tabel dengan pengaturan berikut:

  • Nama tabelnodejs-tutorial

  • Kunci utamaemail

  • Tipe kunci primer – String

Untuk membuat tabel DynamoDB
  1. Buka Halaman tabel di konsol manajemen DynamoDB.

  2. Pilih Buat tabel.

  3. Ketik Nama tabel dan Kunci utama.

  4. Pilih tipe kunci primer.

  5. Pilih Buat.

Perbarui file konfigurasi aplikasi

Perbarui file konfigurasi di sumber aplikasi untuk menggunakan tabel nodejs-tutorial daripada membuat yang baru.

Untuk memperbarui aplikasi contoh untuk penggunaan produksi
  1. Ubah direktori kerja Anda saat ini ke direktori aplikasinodejs-example-dynamo.

    ~$ cd nodejs-example-dynamo
  2. Buka .ebextensions/options.config dan ubah nilai pengaturan berikut:

    • NewSignupEmail— Alamat email Anda.

    • STARTUP_SIGNUP_TABLEnodejs-tutorial

    contoh .ebextensions/options.config
    option_settings: aws:elasticbeanstalk:customoption: NewSignupEmail: you@example.com aws:elasticbeanstalk:application:environment: THEME: "flatly" AWS_REGION: '`{"Ref" : "AWS::Region"}`' STARTUP_SIGNUP_TABLE: nodejs-tutorial NEW_SIGNUP_TOPIC: '`{"Ref" : "NewSignupTopic"}`' aws:elasticbeanstalk:container:nodejs: ProxyServer: nginx aws:elasticbeanstalk:container:nodejs:staticfiles: /static: /static aws:autoscaling:asg: Cooldown: "120" aws:autoscaling:trigger: Unit: "Percent" Period: "1" BreachDuration: "2" UpperThreshold: "75" LowerThreshold: "30" MeasureName: "CPUUtilization"

    Ini berlaku konfigurasi berikut untuk aplikasi:

    • Alamat email yang digunakan topik Amazon SNS untuk notifikasi diatur ke alamat Anda, atau alamat yang Anda masukkan dalam file. options.config

    • Tabel nodejs-tutorial akan digunakan sebagai pengganti yang dibuat oleh. .ebextensions/create-dynamodb-table.config

  3. Hapus .ebextensions/create-dynamodb-table.config.

    ~/nodejs-tutorial$ rm .ebextensions/create-dynamodb-table.config

    Lain kali Anda men-deploy aplikasi, tabel yang dibuat oleh file konfigurasi ini akan dihapus.

  4. Terapkan aplikasi yang diperbarui ke lingkungan Elastic Beanstalk Anda dengan perintah. eb deploy

    ~/nodejs-example-dynamo$ eb deploy
  5. Ketika pembuatan lingkungan selesai, gunakan perintah eb open untuk membuka URL lingkungan di browser default.

    ~/nodejs-example-dynamo$ eb open

Ketika Anda men-deploy, Elastic Beanstalk memperbarui konfigurasi topik Amazon SNS dan menghapus tabel DynamoDB yang dibuat ketika Anda men-deploy versi pertama aplikasi.

Sekarang, ketika Anda mengakhiri lingkungan, tabel nodejs-tutorial tidak akan dihapus. Hal ini memungkinkan Anda melakukan deployment biru/hijau, memodifikasi file konfigurasi, atau menghapus situs web Anda tanpa risiko kehilangan data.

Buka situs Anda di peramban dan verifikasi apakah formulir tersebut bekerja seperti yang diharapkan. Membuat beberapa entri, dan kemudian periksa konsol DynamoDB untuk memverifikasi tabel.

Untuk melihat tabel
  1. Buka Halaman tabel di konsol DynamoDB.

  2. Temukan tabel nodejs-tutorial.

  3. Pilih tabel, memilih Item, lalu pilih Melai pencarian untuk menampilkan semua item dalam tabel.

Anda juga dapat melihat bahwa Elastic Beanstalk menghapus tabel yang dibuat sebelumnya.

Konfigurasikan lingkungan Anda untuk ketersediaan yang tinggi

Terakhir, konfigurasikan grup Auto Scaling lingkungan Anda dengan jumlah instans minimum yang lebih tinggi. Jalankan setidaknya dua instans setiap saat untuk mencegah terjadinya kegagalan di satu titik server web di lingkungan Anda, dan mengizinkan Anda untuk men-deploy perubahan tanpa membuat situs Anda keluar dari layanan.

Mengonfigurasi grup Auto Scaling lingkungan Anda untuk ketersediaan yang tinggi
  1. Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic Beanstalk. Wilayah AWS

  2. Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.

    catatan

    Jika Anda memiliki banyak lingkungan, gunakan bilah pencarian untuk memfilter daftar lingkungan.

  3. Di panel navigasi, pilih Konfigurasi.

  4. Pada kategori konfigurasi Kapasitas, pilih Edit.

  5. Pada bagian Grup Auto Scaling, set Instans minimum ke 2.

  6. Untuk menyimpan perubahan pilih Terapkan di bagian bawah halaman.

Pembersihan

Jika Anda sudah selesai bekerja dengan Elastic Beanstalk, Anda dapat mengakhiri lingkungan Anda. Elastic Beanstalk AWS menghentikan semua sumber daya yang terkait dengan lingkungan Anda, seperti instans Amazon EC2, instans database, penyeimbangbeban, grup keamanan, dan alarm.

Untuk mengakhiri lingkungan Elastic Beanstalk Anda dari konsol
  1. Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic Beanstalk. Wilayah AWS

  2. Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.

    catatan

    Jika Anda memiliki banyak lingkungan, gunakan bar pencarian untuk memfilter daftar lingkungan.

  3. Pilih Tindakan, lalu pilih Terminate environment.

  4. Gunakan kotak dialog di layar untuk mengonfirmasi pengakhiran lingkungan.

Dengan Elastic Beanstalk, Anda dengan mudah dapat membuat lingkungan baru untuk aplikasi Anda kapan saja.

Anda juga dapat menghapus tabel DynamoDB eksternal yang Anda buat.

Untuk menghapus tabel DynamoDB
  1. Buka Halaman tabel di konsol DynamoDB.

  2. Pilih tabel.

  3. Pilih Tindakan, dan lalu Hapus tabel.

  4. Pilih Hapus.

Langkah selanjutnya

Contoh aplikasi menggunakan file konfigurasi untuk mengonfigurasi pengaturan perangkat lunak dan membuat AWS sumber daya sebagai bagian dari lingkungan Anda. Lihat Penyesuaian lingkungan lanjutan dengan file konfigurasi (.ebextensions) untuk informasi selengkapnya tentang file konfigurasi dan penggunaannya.

Contoh aplikasi untuk tutorial ini menggunakan kerangka web Express untuk Node.js. Untuk informasi selengkapnya tentang Express, lihat dokumentasi resmi di expressjs.com.

Terakhir, jika Anda berencana menggunakan aplikasi dalam lingkungan produksi, konfigurasikan nama domain khusus untuk lingkungan Anda dan aktifkan HTTPS untuk koneksi yang aman.