AWS CloudFormation を使用してTiDB Cloud Serverless を Amazon Lambda と統合する
このドキュメントでは、 AWS クラウドフォーメーション使用して、クラウドネイティブの分散 SQL データベースTiDB Cloudサーバーレス 、サーバーレスでイベント駆動型のコンピューティングサービスAWS ラムダと統合する方法について、ステップバイステップで説明します。TiDB TiDB Cloud Serverless を Amazon Lambda と統合することで、 TiDB Cloud Serverless と AWS Lambda を通じてマイクロサービスのスケーラビリティとコスト効率を活用できます。AWS CloudFormation は、Lambda関数、API Gateway、Secrets Manager などの AWS リソースの作成と管理を自動化します。
ソリューションの概要
このガイドでは、次のコンポーネントを使用して完全に機能するオンライン書店を作成します。
- AWS Lambda 関数: Sequelize ORM と Fastify API フレームワークを使用して、 TiDB Cloud Serverless クラスターからのリクエストを処理し、データをクエリします。
- AWS Secrets Manager SDK: TiDB Cloud Serverless クラスターの接続構成を取得および管理します。
- AWS API Gateway: HTTP リクエストルートを処理します。
- TiDB Cloud Serverless: クラウドネイティブの分散 SQL データベース。
AWS CloudFormation は、Secrets Manager、API Gateway、Lambda 関数など、プロジェクトに必要なリソースを作成するために使用されます。
書店プロジェクトの構造は次のとおりです。
前提条件
始める前に、次のものを用意してください。
次の AWS サービスにアクセスできる AWS アカウント:
TiDB CloudアカウントとTiDB Cloud Serverless クラスター。TiDB TiDB Cloud Serverless クラスターの接続情報を取得します。
郵便配達員やカールなどの 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 バケットにアップロードする必要があります。
ローカル開発環境の問題を回避するには、 ギットポッドなどのクラウドネイティブ開発環境を使用することをお勧めします。
コードバンドルを再構築して独自の S3 バケットにアップロードするには、次の手順を実行します。
開発環境を初期化します。
- ギットポッドワークスペースを開き、GitHub アカウントでログインします。
Lambda 関数コードを変更します。
- 左側のサイドバーで
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クラスター名を入力します。
- TiDBHost : TiDB Cloudデータベース アクセス用のホスト URL を入力します。2 と入力します
localhost
- TiDBPassword : TiDB Cloudデータベース アクセス用のパスワードを入力します。
- TiDBPort : TiDB Cloudデータベース アクセス用のポートを入力します。
- TiDBUser : TiDB Cloudデータベース アクセスのユーザー名を入力します。
us-east-1
以外の別の AWS リージョンを使用する場合は、次の手順に従ってください。us-east-1
以外のリージョンを使用する場合は、Lambda関数コードを変更して再構築します。を参照して Lambda 関数コードを変更し、再構築して、コードバンドルを独自の S3 バケットにアップロードします。- スタックの詳細フィールドで、独自の設定に応じて、
S3Bucket
とS3Key
のパラメータに S3 バケット名とリージョンを指定します。 - 前のスクリーンショットのように他のフィールドに入力します。
スタック オプションを構成します。デフォルトの構成を使用できます。
スタックを確認して作成します。
ステップ2. 書店プロジェクトを使用する
スタックが作成されたら、次のようにプロジェクトを使用できます。
AWS マネジメントコンソールのAPIゲートウェイサービスアクセスし、
TiDBCloudApiGatewayV2
API をクリックして、左側のペインで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 スタックを削除します。