Menerapkan aplikasi multi-stack menggunakan AWS CDK dengan TypeScript - AWS Prescriptive Guidance

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

Menerapkan aplikasi multi-stack menggunakan AWS CDK dengan TypeScript

Dr. Rahul Sharad Gaikwad, Amazon Web Services

Ringkasan

Pola ini menyediakan step-by-step pendekatan untuk penerapan aplikasi di Amazon Web Services (AWS) menggunakan AWS Cloud Development Kit (AWS CDK) dengan. TypeScript Sebagai contoh, pola tersebut menyebarkan aplikasi analitik real-time tanpa server.

Pola membangun dan menyebarkan aplikasi tumpukan bersarang. CloudFormation Tumpukan AWS induk memanggil tumpukan turunan, atau bersarang,.  Setiap tumpukan anak membangun dan menerapkan sumber daya AWS yang ditentukan dalam tumpukan. CloudFormation AWS CDK Toolkit, perintah antarmuka baris perintah (CLI)cdk, adalah antarmuka utama untuk tumpukan. CloudFormation

Prasyarat dan batasan

Prasyarat

  • Akun AWS yang aktif

  • Virtual Private Cloud (VPC) dan subnet yang ada

  • AWS CDK Toolkit diinstal dan dikonfigurasi

  • Seorang pengguna dengan izin administrator dan satu set kunci akses.

  • Node.js

  • Antarmuka Baris Perintah AWS (AWS CLI)

Batasan

  • Karena AWS CDK menggunakan AWS CloudFormation, aplikasi AWS CDK tunduk pada kuota CloudFormation layanan. Untuk informasi selengkapnya, lihat CloudFormation kuota AWS.

Versi produk

Pola ini telah dibangun dan diuji menggunakan alat dan versi berikut.

  • Perangkat AWS CDK 1.83.0

  • Node.js 14.13.0

  • npm 7.0.14

Pola tersebut harus berfungsi dengan versi AWS CDK atau npm apa pun. Perhatikan bahwa Node.js versi 13.0.0 hingga 13.6.0 tidak kompatibel dengan AWS CDK.

Arsitektur

Tumpukan teknologi target

  • Konsol AWS Amplify

  • Amazon API Gateway

  • AWS CDK

  • Amazon CloudFront

  • Amazon Cognito

  • Amazon DynamoDB

  • Amazon Data Firehose

  • Amazon Kinesis Data Streams

  • AWS Lambda

  • Amazon Simple Storage Service (Amazon S3)

Arsitektur target

Diagram berikut menunjukkan penerapan aplikasi multi-tumpukan menggunakan AWS CDK dengan. TypeScript

Arsitektur tumpukan di VPC, dengan tumpukan induk dan dua tumpukan anak yang berisi sumber daya.

Diagram berikut menunjukkan arsitektur contoh aplikasi real-time tanpa server.

Arsitektur aplikasi di Wilayah.

Alat

Alat

  • AWS Amplify Console adalah pusat kendali untuk penerapan web dan aplikasi seluler fullstack di AWS. Hosting Konsol Amplify menyediakan alur kerja berbasis git untuk hosting aplikasi web nirserver fullstack dengan deployment kontinu. UI Admin adalah antarmuka visual untuk pengembang web dan seluler frontend untuk membuat dan mengelola backend aplikasi di luar konsol AWS.

  • Amazon API Gateway adalah layanan AWS untuk membuat, menerbitkan, memelihara, memantau, dan mengamankan REST, HTTP, dan WebSocket APIs pada skala apa pun.

  • AWS Cloud Development Kit (AWS CDK) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.

  • AWS CDK Toolkit adalah kit pengembangan cloud baris perintah yang membantu Anda berinteraksi dengan aplikasi AWS CDK Anda. Perintah cdk CLI adalah alat utama untuk berinteraksi dengan aplikasi AWS CDK Anda. Ini menjalankan aplikasi Anda, menginterogasi model aplikasi yang Anda tentukan, dan memproduksi serta menerapkan CloudFormation template AWS yang dihasilkan oleh AWS CDK.

  • Amazon CloudFront adalah layanan web yang mempercepat distribusi konten web statis dan dinamis, seperti.html, .css, .js, dan file gambar. CloudFront mengirimkan konten Anda melalui jaringan pusat data di seluruh dunia yang disebut lokasi tepi untuk latensi yang lebih rendah dan peningkatan kinerja.

  • Amazon Cognito menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk web dan aplikasi seluler Anda. Pengguna Anda dapat masuk secara langsung atau melalui pihak ketiga.

  • Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang memberikan kinerja yang cepat dan dapat diprediksi dengan skalabilitas yang mulus.

  • Amazon Data Firehose adalah layanan yang dikelola sepenuhnya untuk mengirimkan data streaming real-time ke tujuan seperti Amazon S3, Amazon Redshift, OpenSearch Amazon Service, Splunk, dan titik akhir HTTP kustom atau titik akhir HTTP apa pun yang dimiliki oleh penyedia layanan pihak ketiga yang didukung.

  • Amazon Kinesis Data Streams adalah layanan untuk mengumpulkan dan memproses aliran besar catatan data secara real time.

  • AWS Lambda adalah layanan komputasi yang mendukung menjalankan kode tanpa menyediakan atau mengelola server. Lambda menjalankan kode Anda hanya saat diperlukan dan menskalakan secara otomatis, dari beberapa permintaan per hari hingga ribuan per detik. Anda hanya membayar untuk waktu komputasi yang Anda gunakan—tidak ada biaya saat kode Anda tidak berjalan.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Kode

Kode untuk pola ini terlampir.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Instal AWS CDK Toolkit.

Untuk menginstal AWS CDK Toolkit secara global, jalankan perintah berikut.

npm install -g aws-cdk

DevOps

Verifikasi versinya.

Untuk memverifikasi versi AWS CDK Toolkit, jalankan perintah berikut. 

cdk --version

DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Siapkan kredensil.

Untuk mengatur kredensil, jalankan aws configure perintah dan ikuti petunjuknya.

$aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: your_secret_access_key Default region name [None]: Default output format [None]:
DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Unduh kode proyek terlampir.

Untuk informasi selengkapnya tentang direktori dan struktur file, lihat bagian Informasi tambahan.

DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Bootstrap lingkungan.

Untuk menerapkan CloudFormation template AWS ke akun dan Wilayah AWS yang ingin Anda gunakan, jalankan perintah berikut.

cdk bootstrap <account>/<Region>

Untuk informasi selengkapnya, lihat dokumentasi AWS.

DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Bangun proyek.

Untuk membangun kode proyek, jalankan npm run build perintah.

DevOps

Deploy proyek.

Untuk menyebarkan kode proyek, jalankan cdk deploy perintah.

TugasDeskripsiKeterampilan yang dibutuhkan

Verifikasi pembuatan tumpukan.

Di AWS Management Console, pilih CloudFormation. Di tumpukan untuk proyek, verifikasi bahwa tumpukan induk dan dua tumpukan anak telah dibuat.

DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Kirim data ke Kinesis Data Streams.

Konfigurasikan Akun AWS Anda untuk mengirim data ke Kinesis Data Streams menggunakan Amazon Kinesis Data Generator (KDG). Untuk informasi selengkapnya, lihat Amazon Kinesis Data Generator.

DevOps

Buat pengguna Amazon Cognito.

Untuk membuat pengguna Amazon Cognito, unduh templat cognito-setup.json CloudFormation dari bagian Buat Pengguna Amazon Cognito di halaman bantuan Kinesis Data Generator. Mulai template, lalu masukkan Nama Pengguna dan Kata Sandi Amazon Cognito Anda.

Tab Output mencantumkan URL Kinesis Data Generator.

DevOps

Masuk ke Kinesis Data Generator

Untuk masuk ke KDG, gunakan kredenal Amazon Cognito yang Anda berikan dan URL Kinesis Data Generator.

DevOps

Uji aplikasi.

Di KDG, di Rekam template, Template 1, tempel kode uji dari bagian Informasi tambahan, dan pilih Kirim data.

DevOps

Uji API Gateway.

Setelah data tertelan, uji API Gateway dengan menggunakan GET metode untuk mengambil data.

DevOps

Sumber daya terkait

Referensi

Informasi tambahan

Direktori dan detail file

Pola ini mengatur tiga tumpukan berikut.

  • parent-cdk-stack.ts— Tumpukan ini bertindak sebagai tumpukan induk dan memanggil dua aplikasi anak sebagai tumpukan bersarang. 

  • real-time-analytics-poc-stack.ts— Tumpukan bersarang ini berisi infrastruktur dan kode aplikasi.

  • real-time-analytics-web-stack.ts— Tumpukan bersarang ini hanya berisi kode aplikasi web statis.

File penting dan fungsinya

  • bin/real-time-analytics-poc.ts— Titik masuk aplikasi AWS CDK. Ini memuat semua tumpukan yang didefinisikan di bawahlib/.

  • lib/real-time-analytics-poc-stack.ts— Definisi stack (real-time-analytics-poc) aplikasi AWS CDK.

  • lib/real-time-analytics-web-stack.ts— Definisi stack (real-time-analytics-web-stack) aplikasi AWS CDK.

  • lib/parent-cdk-stack.ts— Definisi stack (parent-cdk) aplikasi AWS CDK.

  • package.json— manifes modul npm, yang mencakup nama aplikasi, versi, dan dependensi.

  • package-lock.json— Dipelihara oleh npm.

  • cdk.json— Toolkit untuk menjalankan aplikasi.

  • tsconfig.json- TypeScript Konfigurasi proyek.

  • .gitignore— Daftar file yang harus dikecualikan Git dari kontrol sumber.

  • node_modules— Dipelihara oleh npm; termasuk dependensi proyek.

Bagian kode berikut di tumpukan induk memanggil aplikasi turunan sebagai tumpukan AWS CDK bersarang.

import * as cdk from '@aws-cdk/core'; import { Construct, Stack, StackProps } from '@aws-cdk/core'; import { RealTimeAnalyticsPocStack } from './real-time-analytics-poc-stack'; import { RealTimeAnalyticsWebStack } from './real-time-analytics-web-stack'; export class CdkParentStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new RealTimeAnalyticsPocStack(this, 'RealTimeAnalyticsPocStack'); new RealTimeAnalyticsWebStack(this, 'RealTimeAnalyticsWebStack'); } }

Kode untuk pengujian

session={{date.now('YYYYMMDD')}}|sequence={{date.now('x')}}|reception={{date.now('x')}}|instrument={{random.number(9)}}|l={{random.number(20)}}|price_0={{random.number({"min":10000, "max":30000})}}|price_1={{random.number({"min":10000, "max":30000})}}|price_2={{random.number({"min":10000, "max":30000})}}|price_3={{random.number({"min":10000, "max":30000})}}|price_4={{random.number({"min":10000, "max":30000})}}|price_5={{random.number({"min":10000, "max":30000})}}|price_6={{random.number({"min":10000, "max":30000})}}|price_7={{random.number({"min":10000, "max":30000})}}|price_8={{random.number({"min":10000, "max":30000})}}|

Menguji API Gateway

Di konsol API Gateway, uji API Gateway dengan menggunakan GET metode ini.

Konsol API Gateway dengan GET dipilih di bawah OPTIONS.

Lampiran

Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip