で AWS CDK を使用してマルチスタックアプリケーションをデプロイする TypeScript - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

で AWS CDK を使用してマルチスタックアプリケーションをデプロイする TypeScript

作成者:Dr. Rahul Sharad Gaikwad (AWS)

環境:本稼働

テクノロジー: モダナイゼーション、移行、 DevOps

ワークロード:その他すべてのワークロード

AWS サービス: Amazon API Gateway、AWS Lambda、Amazon Kinesis

[概要]

このパターンは、 で AWS Cloud Development Kit (AWS CDK) を使用して、Amazon Web Services (AWS) にアプリケーションをデプロイするための step-by-step アプローチを提供します TypeScript。例として、このパターンはサーバーレスのリアルタイム分析アプリケーションをデプロイします。

このパターンはネストされたスタックアプリケーションをビルドしてデプロイします。親 AWS CloudFormation スタックは、子スタックまたはネストされたスタックを呼び出します。 各子スタックは、 CloudFormation スタックで定義されている AWS リソースを構築してデプロイします。コマンドラインインターフェイス (CLI) コマンド である AWS CDK Toolkit はcdk、 CloudFormation スタックのプライマリインターフェイスです。

前提条件と制限

前提条件

  • アクティブな AWS アカウント

  • 既存の仮想プライベートクラウド (VPC) とサブネット

  • インストールおよび設定済みの AWS CDK Toolkit。

  • 管理者権限とアクセスキーセットを持つユーザー。

  • Node.js

  • AWS コマンドラインインターフェイス (AWS CLI)

制限

  • AWS CDK は AWS を使用するため CloudFormation、AWS CDK アプリケーションには CloudFormation サービスクォータが適用されます。詳細については、「AWS CloudFormation クォータ」を参照してください。

製品バージョン

このパターンは、以下のツールとバージョンを使用して構築され、テストされています。

  • AWS CDK ツールキット 1.83.0

  • Node.js 14.13.0

  • npm 7.0.14

このパターンは、AWS CDK または npm のどのバージョンでも機能するはずです。Node.js のバージョン 13.0.0 から 13.6.0 は AWS CDK と互換性がないことに注意してください。

アーキテクチャ

ターゲットテクノロジースタック

  • AWS Amplify Console

  • 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)

ターゲットアーキテクチャ 

次の図は、 で AWS CDK を使用した複数スタックのアプリケーションデプロイを示しています TypeScript。

VPC のスタックアーキテクチャ。親スタックと、リソースを含む 2 つの子スタックがあります。

次の図は、サンプルサーバーレスリアルタイムアプリケーションのアーキテクチャを示します。

リージョンのアプリケーションアーキテクチャ。

ツール

ツール

  • AWS Amplify Console は、フルスタックのウェブおよびモバイルアプリケーションを AWS にデプロイするためのコントロールセンターです。Amplify コンソールホスティングは、継続的なデプロイでフルスタックのサーバーレス Web アプリをホストするための Git ベースのワークフローを提供します。Admin UI は、フロントエンドのウェブ開発者やモバイル開発者が AWS コンソールの外部でアプリケーションのバックエンドを作成および管理するためのビジュアルインターフェイスです。

  • Amazon API Gateway は、REST、HTTP、API をあらゆる規模で作成、公開、保守、モニタリング、保護するための AWS のサービス WebSocket APIs。

  • AWS Cloud Development Kit (AWS CDK) は、AWS クラウドインフラストラクチャをコードで定義してプロビジョニングするのに役立つソフトウェア開発フレームワークです。

  • AWS CDK Toolkit は、AWS CDK アプリとの対話に役立つコマンドラインのクラウド開発キットです。cdk CLI コマンドは、AWS CDK アプリケーションを操作するための主要なツールです。アプリケーションを実行し、定義したアプリケーションモデルを調べ、AWS CDK によって生成された AWS CloudFormation テンプレートを生成してデプロイします。

  • Amazon CloudFront は、.html、.css、.js、イメージファイルなどの静的および動的なウェブコンテンツの配信を高速化するウェブサービスです。 は、エッジロケーションと呼ばれるデータセンターのワールドワイドネットワークを介してコンテンツを CloudFront 配信し、レイテンシーを短縮し、パフォーマンスを向上させます。

  • Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。ユーザーは、直接サインインしても、サードパーティを介してサインインしてもかまいません。

  • Amazon DynamoDB は、フルマネージド NoSQL データベースサービスであり、シームレスなスケーラビリティを備えた高速で予測可能なパフォーマンスを提供します。

  • Amazon Data Firehose は、Amazon S3、Amazon Redshift、Amazon OpenSearch Service、Splunk、およびサポートされているサードパーティーサービスプロバイダーが所有するカスタム HTTP エンドポイントまたは HTTP エンドポイントなどの宛先にリアルタイムのストリーミングデータを配信するためのフルマネージドサービスです。

  • Amazon Kinesis Data Streams は、データレコードの大規模なストリームをリアルタイムで収集および処理するためのサービスです。

  • AWS Lambda」 – AWS Lambda はサーバーのプロビジョニングや管理を行わずにコードの実行を支援できるコンピューティングサービスです。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。

  • Amazon Simple Storage Service (Amazon S3) は、任意の量のデータを保存、保護、取得する上で役立つクラウドベースのオブジェクトストレージサービスです。

コード

このパターンのコードは添付されています。

エピック

タスク説明必要なスキル

AWS CDK ツールキットをインストールします。

AWS CDK Toolkit をグローバルにインストールするには、次のコマンドを実行します。

npm install -g aws-cdk

DevOps

バージョンを確認します。

AWS CDK Toolkit のバージョンを確認するには、次のコマンドを実行します。 

cdk --version

DevOps
タスク説明必要なスキル

認証情報を設定します。

認証情報を設定するには、aws configure コマンドを実行し、プロンプトに従います。

$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
タスク説明必要なスキル

添付のプロジェクトコードをダウンロードしてください。

ディレクトリとファイル構造の詳細については、「追加情報」セクションを参照してください。

DevOps
タスク説明必要なスキル

環境を起動します。

使用するアカウントと AWS リージョンに AWS CloudFormation テンプレートをデプロイするには、次のコマンドを実行します。

cdk bootstrap <account>/<Region>

詳細については、AWS ドキュメントを参照してください。

DevOps
タスク説明必要なスキル

プロジェクトをビルドします。

プロジェクトコードをビルドするには、npm run build コマンドを実行します。

DevOps

プロジェクトをデプロイします。

プロジェクトコードをデプロイするには、cdk deploy コマンドを実行します。

タスク説明必要なスキル

スタックの作成を確認します。

AWS マネジメントコンソールで、 を選択しますCloudFormation。プロジェクトのスタックで、親スタックと 2 つの子スタックが作成されていることを確認します。

DevOps
タスク説明必要なスキル

データを Kinesis Data Streams に送信します。

Amazon Kinesis Data Generator (KDG) を使用して KinKinesis Data Streams にデータを送信するように AWS アカウントを設定します。詳細については、「Amazon Kinesis Data Generator」を参照してください。

DevOps

Amazon Cognito ユーザーを作成します。

Amazon Cognito ユーザーを作成するには、Kinesis Data Generator ヘルプページAmazon Cognito ユーザーの作成」セクションから cognito-setup.json CloudFormation テンプレートをダウンロードします。テンプレートを起動し、Amazon Cognito のユーザー名パスワードを入力します。

[出力] タブには Kinesis Data Generator URL が一覧表示されます。

DevOps

Kinesis Data Generator にログイン

KDG にログインするには、指定した Amazon Cognito 認証情報と Kinesis データジェネレーター URL を使用します。

DevOps

アプリケーションをテストします。

KDG の [レコードテンプレート][テンプレート 1] に「追加情報」セクションのテストコードを貼り付け、[データを送信] を選択します。

DevOps

API Gateway をテストします。

データが取り込まれたら、GET メソッドを使用してデータを取得して API ゲートウェイをテストします。

DevOps

関連リソース

リファレンス

追加情報

ディレクトリとファイルの詳細

このパターンでは、次の 3 つのスタックが設定されます。

  • parent-cdk-stack.ts – このスタックは親スタックとして機能し、2 つの子アプリケーションをネストされたスタックとして呼び出します。 

  • 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 ゲートウェイのテスト

API ゲートウェイコンソールで、GET メソッドを使用して API ゲートウェイをテストします。

OPTIONS で GET が選択された API Gateway コンソール。

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip