📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

使用 AWS CloudFormation 集成 TiDB Cloud Serverless 与 Amazon Lambda

本文档提供了一个分步指南,介绍如何使用 AWS CloudFormationTiDB Cloud Serverless,一款云原生分布式 SQL 数据库,与 AWS Lambda,一项无服务器、事件驱动的计算服务集成。通过将 TiDB Cloud Serverless 与 Amazon Lambda 集成,你可以利用 TiDB Cloud Serverless 和 AWS Lambda 的微服务架构,实现高扩展性和成本效益。AWS CloudFormation 可自动化创建和管理 AWS 资源,包括 Lambda 函数、API Gateway 和 Secrets Manager。

方案概述

在本指南中,你将创建一个功能完整的在线书店项目,包含以下组件:

  • AWS Lambda Function:使用 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 Functions。

书店项目的结构如下所示:

AWS Lambda structure overview

前置条件

在开始之前,请确保你具备以下条件:

如果你使用的区域不是 us-east-1,请修改并重新构建 Lambda 函数代码

如果你将集群区域设置为 us-east-1,请跳过本节,直接前往 步骤 1:使用 AWS CloudFormation 搭建书店项目

如果你在 us-east-1 以外的 AWS 区域创建 AWS 资源,则需要修改 Lambda 函数代码,重新构建,并将代码包上传到你自己的 S3 bucket。

为避免本地开发环境问题,建议你使用云原生开发环境,如 Gitpod

要重新构建并上传代码包到你自己的 S3 bucket,请执行以下操作:

  1. 初始化开发环境。

    • 打开 Gitpod 工作区,并使用你的 GitHub 账号登录。
  2. 修改 Lambda 函数代码。

    1. 在左侧边栏打开 aws-lambda-cloudformation/src/secretManager.ts 文件。
    2. 定位到第 22 行,修改 region 变量为你自己的区域。
  3. 重新构建代码包。

    1. 安装依赖项。

      1. 在 Gitpod 中打开终端。

      2. 进入工作目录:

        cd aws-lambda-cloudformation
      3. 安装依赖:

        yarn
    2. 重新构建代码包。

      1. 构建代码包。

        yarn build
      2. 检查 aws-lambda-cloudformation/dist/index.zip 文件。

      3. 右键点击 index.zip 文件并选择 Download

  4. 将重新构建的代码包上传到你自己的 S3 bucket。

    1. 访问 AWS 管理控制台中的 S3 服务
    2. 在你选择的区域创建一个新的 bucket。
    3. index.zip 文件上传到该 bucket。
    4. 记录 S3 bucket 名称和区域,后续会用到。

步骤 1. 使用 AWS CloudFormation 搭建书店项目

要使用 AWS CloudFormation 搭建书店项目,请执行以下操作:

  1. 进入 AWS 管理控制台,访问 AWS CloudFormation 服务

  2. 点击 Create Stack > With new resources (standard)

  3. Create Stack 页面,完成堆栈创建流程。

    1. Prerequisite 区域,选择 Choose an existing template

    2. Specify template 区域,选择 Upload a template file,点击 Choose file 上传模板文件(YAML 或 JSON 格式),然后点击 Next

      如果你还没有该文件,请从 GitHub 下载。该文件包含用于创建项目所需资源的 AWS CloudFormation 模板。

      Create a stack

    3. 指定堆栈详细信息。

      • 如果你使用 us-east-1 作为集群区域,请按照下图填写各项字段:

        Specify AWS Lambda stack details

        • Stack name:输入堆栈名称。
        • S3Bucket:输入存放 zip 文件的 S3 bucket 名称。
        • S3Key:输入 S3 key。
        • TiDBDatabase:输入 TiDB Cloud 集群名称。
        • TiDBHost:输入 TiDB Cloud 数据库访问的主机 URL。请填写 localhost
        • TiDBPassword:输入 TiDB Cloud 数据库访问密码。
        • TiDBPort:输入 TiDB Cloud 数据库访问端口。
        • TiDBUser:输入 TiDB Cloud 数据库访问用户名。
      • 如果你使用的 AWS 区域不是 us-east-1,请按照以下步骤操作:

        1. 参考 如果你使用的区域不是 us-east-1,请修改并重新构建 Lambda 函数代码 修改 Lambda 函数代码,重新构建并上传代码包到你自己的 S3 bucket。
        2. 在堆栈详细信息字段中,根据你的配置填写 S3BucketS3Key 参数。
        3. 其他字段按照上图填写。
    4. 配置堆栈选项。你可以使用默认配置。

      Configure stack options

    5. 审核并创建堆栈。

      Review and create the stack

步骤 2. 使用书店项目

堆栈创建完成后,你可以按如下方式使用该项目:

  1. 访问 AWS 管理控制台中的 API Gateway 服务,点击 TiDBCloudApiGatewayV2 API,然后在左侧点击 API: TiDBCloudApiGatewayV2

  2. Overview 页面复制 Invoke URL。该 URL 即为 API 端点。

    API Gateway Invoke URL

  3. 使用 Postman 或 cURL 等 API 测试工具测试 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. 清理资源

为避免产生不必要的费用,请清理所有已创建的资源。

  1. 访问 AWS 管理控制台
  2. 删除你创建的 AWS CloudFormation 堆栈。

文档内容是否有帮助?