本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS CDK 來部署多堆疊應用程式 TypeScript
由拉胡爾·沙拉德·蓋克瓦德博士(AWS)創建
環境:生產 | 技術:現代化; 遷移; DevOps | 工作負載:所有其他工作 |
AWS 服務:Amazon API Gateway;AWS Lambda;Amazon Kinesis |
Summary
此模 step-by-step 式為使用 AWS Cloud Development Kit (AWS CDK) 搭 TypeScript配使用的 Amazon Web Services (AWS) 上的應用程式部署提供了一種方法。例如,該病毒碼會部署無伺服器即時分析應用程式。
此模式會建置和部署巢狀堆疊應用程式。父 AWS CloudFormation 堆疊會呼叫子系或巢狀堆疊。 每個子堆疊都會建置和部署堆 CloudFormation 疊中定義的 AWS 資源。AWS CDK 工具組是命令列界面 (CLI) 命令cdk
,是 CloudFormation 堆疊的主要介面。
先決條件和限制
先決條件
有效的 AWS 帳戶
現有的虛擬私有雲 (VPC) 和子網路
安裝和設定 AWS CDK 工具組
具有管理員權限和一組存取金鑰的使用者。
Node.js
AWS 命令列界面 (AWS CLI)
限制
由於 AWS CDK 使用 AWS CloudFormation,因此 AWS CDK 應用程式會受到 CloudFormation 服務配額限制。如需詳細資訊,請參閱 AWS CloudFormation 配額。
產品版本
此病毒碼已使用下列工具和版本建立並測試。
AWS CDK 工具包 1.83.0
Node.js 14.13.0
故宮
該模式應該適用於任何版本的 AWS CDK 或 npm。請注意,Node.js 版本 13.0.0 到 13.6.0 與 AWS CDK 不相容。
架構
目標技術堆疊
AWS Amplify 控制台
Amazon API Gateway
AWS CDK
Amazon CloudFront
Amazon Cognito
Amazon DynamoDB
Amazon 數據 Firehose
Amazon Kinesis Data Streams
AWS Lambda
Amazon Simple Storage Service (Amazon S3)
目標架構
下圖顯示使用 AWS CDK 搭配使用的多堆疊應用程式部署。 TypeScript
![VPC 中的堆疊架構,其中包含父堆疊和兩個包含資源的子堆疊。](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/8f92e86a-aa3d-4f8a-9b11-b92c52a7226c.png)
下圖顯示範例無伺服器即時應用程式的架構。
![該地區的應用程序體系結構。](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)
工具
工具
AWS Amplify 主控台是 AWS 中全堆疊 Web 和行動應用程式部署的控制中心。Amplify 控制台託管提供基於 git 的工作流程,用於託管具有持續部署的全棧無服務器 Web 應用程序。Admin UI 是一種視覺化界面,供前端 Web 和行動開發人員在 AWS 主控台外部建立和管理應用程式後端。
Amazon API Gateway 是一種 AWS 服務,用於建立、發佈、維護、監控和保護任何規模的 REST、HTTP 和 WebSocket API。
AWS Cloud Development Kit (AWS CDK) 是一種軟體開發架構,可協助您在程式碼中定義和佈建 AWS 雲端基礎設施。
AWS CDK 工具組是命令列雲端開發套件,可協助您與 AWS CDK 應用程式互動。
cdk
CLI 命令是與 AWS CDK 應用程式互動的主要工具。它會執行您的應用程式、詢問您定義的應用程式模型,以及產生和部署 AWS CDK 產生的 AWS CloudFormation 範本。Amazon CloudFront 是一種網絡服務,可以加快靜態和動態網絡內容的分佈速度,例如 .html,.css,.js 和圖像文件。 CloudFront 透過稱為節點位置的全球資料中心網路傳遞您的內容,以降低延遲並提升效能。
Amazon Cognito 為您的 Web 和行動應用程式提供身分驗證、授權和使用者管理。您的使用者可以直接登入,也可以透過第三方登入。
Amazon DynamoDB 是全受管的 NoSQL 資料庫服務,可提供快速且可預測的效能以及無縫的可擴展性。
Amazon 資料 Firehose 是一項全受管服務,可將即時串流資料
交付到 Amazon S3、Amazon Redshift、亞馬遜服務、Splunk 等目的地,以及受支援的第三方 OpenSearch 服務供應商擁有的任何自訂 HTTP 端點或 HTTP 端點。 Amazon Kinesis Data Streams 是一種可即時收集和處理大型資料串流記錄的服務。
AWS Lambda 是一種運算服務,可支援執行程式碼,而無需佈建或管理伺服器。Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。只需為使用的運算時間支付費用,一旦未執行程式碼,就會停止計費。
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。
Code
此模式的代碼已附加。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
安裝 AWS CDK 工具組。 | 若要在全域安裝 AWS CDK 工具組,請執行下列命令。
| DevOps |
驗證版本。 | 若要驗證 AWS CDK 工具組版本,請執行下列命令。
| DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
設定認證。 | 若要設定認證,請執行命
| DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
下載附加的專案代碼。 | 如需有關目錄和檔案結構的詳細資訊,請參閱其他資訊一節。 | DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
引導環境。 | 若要將 AWS CloudFormation 範本部署到您要使用的帳戶和 AWS 區域,請執行下列命令。
如需詳細資訊,請參閱 AWS 文件。 | DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
建置專案。 | 若要建置專案程式碼,請執行 | DevOps |
部署專案。 | 若要部署專案程式碼,請執行 |
任務 | 描述 | 所需技能 |
---|---|---|
確認堆疊建立。 | 在 AWS 管理主控台上,選擇CloudFormation。在專案的堆疊中,確認已建立父堆疊和兩個子堆疊。 | DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
將資料傳送至 Kinesis Data Streams。 | 將您的 AWS 帳戶設定為使用 Amazon Kinesis Data Streams 產生器 (KDG) 將資料傳送至 Kinesis 資料串流。如需詳細資訊,請參閱 Amazon Kinesis 資料產生器 | DevOps |
創建一個 Amazon Cognito 戶。 | 若要建立 Amazon Cognito 使用者,請從「Kinesis 資料產生器說明」頁面上的「建立 Amazon Cognito 使用者」區段下載認知設定 CloudFormation 範本。 「輸出」標籤會列出 Kinesis 資料產生器 URL。 | DevOps |
登入 Kinesis 資料產生器 | 若要登入 KDG,請使用您提供的 Amazon Cognito 登入資料和 Kinesis 資料產生器 URL。 | DevOps |
測試應用程式。 | 在 KDG 的記錄範本的範本 1 中,貼上 [其他資訊] 區段中的測試程式碼,然後選擇 [傳送資料]。 | DevOps |
測試 API Gateway。 | 擷取資料之後,請使用擷取資料的 | DevOps |
相關資源
參考
其他資訊
目錄和檔案詳細資訊
此模式設置了以下三個堆棧。
parent-cdk-stack.ts
— 此堆疊充當父系堆疊,並將兩個子應用程式呼叫為巢狀堆疊。real-time-analytics-poc-stack.ts
— 此巢狀堆疊包含基礎結構和應用程式程式碼。real-time-analytics-web-stack.ts
— 此巢狀堆疊僅包含靜態 Web 應用程式程式碼。
重要文件及其功能
bin/real-time-analytics-poc.ts
— AWS CDK 應用程式的進入點。它加載下定義的所有堆棧lib/
。lib/real-time-analytics-poc-stack.ts
— AWS CDK 應用程式堆疊的定義 (real-time-analytics-poc
)。lib/real-time-analytics-web-stack.ts
— AWS CDK 應用程式堆疊的定義 (real-time-analytics-web-stack
)。lib/parent-cdk-stack.ts
— AWS CDK 應用程式堆疊的定義 (parent-cdk
)。package.json
— npm 模組清單,其中包括應用程式名稱、版本和相依性。package-lock.json
— 由 npm 維護。cdk.json
-用於運行應用程序的工具包。tsconfig.json
— 該項目的 TypeScript 配置。.gitignore
— Git 應該從原始檔控制中排除的檔案清單。node_modules
-由 npm 維護; 包括項目的依賴關係。
父系堆疊中的下列程式碼區段會呼叫子應用程式做為巢狀 AWS CDK 堆疊。
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'); } }
測試代碼
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})}}|
測試 API Gateway
在 API Gateway 主控台上,使用GET
方法測試 API Gateway。
![在「選項」下選擇 GET 的 API Gateway 主控台。](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)
附件
若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip