

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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript"></a>

*Dr. Rahul Sharad Gaikwad, Amazon Web Services*

## Ringkasan
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-summary"></a>

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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-prereqs"></a>

**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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html).

**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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-architecture"></a>

**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.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/8f92e86a-aa3d-4f8a-9b11-b92c52a7226c.png)


 

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

![\[Arsitektur aplikasi di Wilayah.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)


 

## Alat
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-tools"></a>

**Alat**
+ [AWS Amplify Console](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html) 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](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 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)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
+ [AWS CDK Toolkit adalah kit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) 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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) 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](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk web dan aplikasi seluler Anda. Pengguna Anda dapat masuk secara langsung atau melalui pihak ketiga.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) adalah layanan database NoSQL yang dikelola sepenuhnya yang memberikan kinerja yang cepat dan dapat diprediksi dengan skalabilitas yang mulus.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) adalah layanan yang dikelola sepenuhnya untuk mengirimkan [data streaming](https://aws.amazon.com/streaming-data/) 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](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) Streams adalah layanan untuk mengumpulkan dan memproses aliran besar catatan data secara real time.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Kode**

Kode untuk pola ini terlampir.

## Epik
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-epics"></a>

### Instal AWS CDK Toolkit
<a name="install-aws-cdk-toolkit"></a>


| Tugas | Deskripsi | Keterampilan 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 | 

### Mengatur kredensi AWS
<a name="set-up-aws-credentials"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan kredensil. | Untuk mengatur kredensil, jalankan `aws configure` perintah dan ikuti petunjuknya.<pre>$aws configure<br />AWS Access Key ID [None]: <br />AWS Secret Access Key [None]: your_secret_access_key<br />Default region name [None]:<br />Default output format [None]:</pre> | DevOps | 

### Unduh kode proyek
<a name="download-the-project-code"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Unduh kode proyek terlampir. | Untuk informasi selengkapnya tentang direktori dan struktur file, lihat bagian *Informasi tambahan*. | DevOps | 

### Bootstrap lingkungan AWS CDK
<a name="bootstrap-the-aws-cdk-environment"></a>


| Tugas | Deskripsi | Keterampilan 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](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | DevOps | 

### Membangun dan menyebarkan proyek
<a name="build-and-deploy-the-project"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Bangun proyek. | Untuk membangun kode proyek, jalankan `npm run build` perintah. | DevOps | 
| Deploy proyek. | Untuk menyebarkan kode proyek, jalankan `cdk deploy` perintah. |  | 

### Verifikasi output
<a name="verify-outputs"></a>


| Tugas | Deskripsi | Keterampilan 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 | 

### Uji aplikasi
<a name="test-the-application"></a>


| Tugas | Deskripsi | Keterampilan 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](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html). | 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*.](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html) **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
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-resources"></a>

**Referensi**
+ [AWS Cloud Development Kit](https://aws.amazon.com/cdk/)
+ [AWS CDK aktif GitHub](https://github.com/aws/aws-cdk)
+ [Bekerja dengan tumpukan bersarang](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)
+ [Contoh contoh AWS - Analisis real-time tanpa server](https://github.com/aws-samples/serverless-realtime-analytics)

## Informasi tambahan
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-additional"></a>

**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 bawah`lib/`.
+ `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.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)


 

## Lampiran
<a name="attachments-0ac29a11-1362-4084-92ed-6b85205763ca"></a>

[Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip](samples/p-attach/0ac29a11-1362-4084-92ed-6b85205763ca/attachments/attachment.zip)