AWS CloudFormationを使用してTiDB Cloud StarterをAmazon Lambdaと統合する
このドキュメントでは、 AWS CloudFormation使用して、クラウドネイティブな分散 SQL データベースであるTiDB Cloud Starterと、サーバーレスでイベント駆動型のコンピューティング サービスであるAWS Lambdaを統合する手順を段階的に説明します。TiDB Cloud Starter をAmazon Lambda と統合することで、 TiDB Cloud Starterと AWS Lambda を通じてマイクロサービスの拡張性とコスト効率を活用できます。AWS CloudFormation は、Lambda関数、API Gateway、Secrets Manager などの AWS リソースの作成と管理を自動化します。
注記:
このドキュメントの手順は、 TiDB Cloud Starterインスタンスに加えて、 TiDB Cloud Essentialインスタンスでも適用できます。
ソリューションの概要
このガイドでは、以下のコンポーネントを使用して、完全に機能するオンライン書店を作成します。
- AWS Lambda関数:Sequelize ORMとFastify APIフレームワークを使用して、TiDB Cloud Starterインスタンスからのリクエストとクエリデータを処理します。
- AWS Secrets Manager SDK: TiDB Cloud Starterインスタンスの接続構成を取得および管理します。
- AWS API Gateway:HTTPリクエストのルーティングを処理します。
- TiDB Cloud Starter:クラウドネイティブな分散型SQLデータベース。
AWS CloudFormationは、Secrets Manager、API Gateway、Lambda関数など、プロジェクトに必要なリソースを作成するために使用されます。
書店プロジェクトの構成は以下のとおりです。
前提条件
始める前に、以下のものを用意してください。
以下のAWSサービスにアクセスできるAWSアカウント:
TiDB CloudアカウントとTiDB Cloud Starterインスタンスが必要です。TiDB Cloud Starterインスタンスの接続情報を取得するには、以下の手順に従ってください。
郵便配達人やカールなどのAPIテストツール。このドキュメントのほとんどの例では cURL を使用します。 Windows ユーザーには Postman をお勧めします。
プロジェクトの最新リリースのアセットローカル マシンにダウンロードします。これには、
cloudformation_template.ymlおよびcloudformation_template.jsonファイルが含まれます。
注記:
- AWS リソースを作成する際は、リージョンとして
us-east-1を使用することをお勧めします。これは、このデモの Lambda 関数コードでリージョンがus-east-1とハードコーディングされており、コードバンドルがus-east-1リージョンに保存されるためです。- 別のリージョンを使用する場合は、以下の手順に従ってLambda関数のコードを変更し、再構築して、コードバンドルを独自のS3バケットにアップロードする必要があります。
us-east-1以外のリージョンを使用する場合は、Lambda関数のコードを修正して再構築してください。
リージョンとしてus-east-1を使用する場合は、このセクションをスキップして、 ステップ1:AWS CloudFormationを使用してプロジェクトをセットアップする進みます。
AWS リソースを作成する際にus-east-1以外の別の AWS リージョンを使用する場合は、Lambda 関数のコードを変更し、再構築して、コード バンドルを独自の S3 バケットにアップロードする必要があります。
ローカル開発環境の問題を回避するため、 Gitpodなどのクラウドネイティブ開発環境を使用することをお勧めします。
コードバンドルを再構築して独自のS3バケットにアップロードするには、次の手順を実行します。
開発環境を初期化します。
- Gitpodワークスペースを開き、GitHubアカウントでログインしてください。
ラムダ関数のコードを修正してください。
- 左側のサイドバーで
aws-lambda-cloudformation/src/secretManager.tsファイルを開きます。 - 22行目を見つけて、
region変数を自分の地域に合わせて変更してください。
- 左側のサイドバーで
コードバンドルを再構築してください。
依存関係をインストールしてください。
Gitpodでターミナルを開きます。
作業ディレクトリを入力してください:
cd aws-lambda-cloudformation依存関係をインストールします。
yarn
コードバンドルを再構築してください。
コードバンドルを作成します。
yarn buildaws-lambda-cloudformation/dist/index.zipファイルを確認してください。index.zipファイルを右クリックして、 [ダウンロード]を選択します。
再構築したコードバンドルを、ご自身のS3バケットにアップロードしてください。
- AWS マネジメントコンソールのS3サービスにアクセスします。
- 選択したリージョンに新しいバケットを作成します。
index.zipファイルをバケットにアップロードします。- 後で使用するため、S3バケット名とリージョンをメモしておいてください。
ステップ1. AWS CloudFormationを使用して書店プロジェクトをセットアップします。
AWS CloudFormation を使用して書店プロジェクトを設定するには、次の手順を実行します。
AWS マネジメントコンソールに移動し、 AWS CloudFormationサービスにアクセスします。
[スタックの作成] > [新しいリソースを使用 (標準)]をクリックします。
「スタックの作成」ページで、スタックの作成プロセスを完了します。
前提条件の領域で、 「既存のテンプレートを選択」を選択します。
テンプレート指定領域で、 [テンプレート ファイルをアップロード]を選択し、 [ファイルを選択]をクリックしてテンプレート ファイル (YAML または JSON) をアップロードし、 [次へ]をクリックします。
まだファイルをお持ちでない場合は、 GitHubからダウンロードしてください。このファイルには、プロジェクトに必要なリソースを作成するAWS CloudFormationテンプレートが含まれています。
スタックの詳細を指定してください。
地域として
us-east-1を使用する場合は、次のスクリーンショットのようにフィールドに入力してください。- スタック名:スタック名を入力してください。
- S3Bucket :zipファイルを保存しているS3バケットを入力してください。
- S3Key :S3キーを入力してください。
- TiDBDatabase : TiDB Cloud Starterインスタンス名を入力してください。
- TiDBHost : TiDB Cloudデータベースにアクセスするためのホスト URL を入力してください。
localhostを入力してください。 - TiDBPassword : TiDB Cloudデータベースへのアクセスに使用するパスワードを入力してください。
- TiDBPort : TiDB Cloudデータベースへのアクセスに使用するポート番号を入力してください。
- TiDBUser : TiDB Cloudデータベースにアクセスするためのユーザー名を入力してください。
us-east-1以外のAWSリージョンを使用する場合は、以下の手順に従ってください。- Lambda 関数のコードを変更して再構築し、
us-east-1以外のリージョンを使用する場合は、Lambda関数のコードを修正して再構築してください。参照してください。 - スタックの詳細フィールドでは、
S3BucketおよびS3Keyパラメーターに、ご自身の設定に応じて S3 バケット名とリージョンを指定してください。 - 前のスクリーンショットのように、他の項目も入力してください。
- Lambda 関数のコードを変更して再構築し、
スタックオプションを設定してください。デフォルト設定を使用することもできます。
スタックを確認し、作成します。
ステップ2. 書店プロジェクトを使用する
スタックが作成されたら、プロジェクトは次のように使用できます。
AWS マネジメント コンソールでAPIゲートウェイサービスサービスにアクセスし、
TiDBCloudApiGatewayV2API をクリックし、左側のペインでAPI: TiDBCloudApiGatewayV2をクリックします。概要ページから
Invoke URLをコピーしてください。この URL が API エンドポイントとして機能します。APIをテストするには、PostmanやcURLなどのAPIテストツールを使用してください。
模擬書籍の初期化:
curl -X POST -H "Content-Type: application/json" -d '{"count":100}' https://<your-api-endpoint>/book/initすべての書籍を入手する:
curl https://<your-api-endpoint>/book書籍IDで書籍を入手:
curl https://<your-api-endpoint>/book/<book-id>本を作成する:
curl -X POST -H "Content-Type: application/json" -d '{ "title": "Book Title", "type": "Test", "publishAt": "2022-12-15T21:01:49.000Z", "stock": 123, "price": 12.34, "authors": "Test Test" }' https:// <your-api-endpoint>/book本を更新する:
curl -X PUT -H "Content-Type: application/json" -d '{ "title": "Book Title(updated)" }' https://<your-api-endpoint>/book/<book-id>本を削除する:
curl -X DELETE https://<your-api-endpoint>/book/<book-id>
ステップ3.リソースを整理する
不要な料金が発生しないように、作成されたすべてのリソースをクリーンアップしてください。
- AWS マネジメントコンソールコンソールにアクセスします。
- 作成したAWS CloudFormationスタックを削除してください。






