是否有极光无服务器数据Api的任何模拟(或本地)服务?

Is there any mock(or local) service of aurora serverless Data Api?

我已经替换了从 lambda 函数连接数据库的方式。
之前,该函数使用 MySQL 模块建立到 RDS 的连接,并通过 3306 端口进行查询。
目前,我尝试使用数据API,我已经完成了所有代码的替换,没有测试。

现在我正在考虑如何保证我的代码。

我有一些测试代码可以在 docker 图片上连接本地 MySQL 数据库 运行ning。
但是,由于没有端点,数据 API 无法连接到本地 MySQL 数据库。

所以我想知道是否有任何服务或库可以模拟数据 API。

这是我的 docker-compose.yml 到 运行 MySQL 数据库。

services:
  db:
    build: ./docker/mysql
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: $DB
      MYSQL_USER: $USER
      MYSQL_PASSWORD: $PWD
      MYSQL_ROOT_PASSWORD: $ROOT_PWD
    ports:
      - "3306:3306"
    volumes:
      - ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d
      - ./docker/mysql/conf.d:/etc/mysql/conf.d
      - ./docker/log:/var/log/mysql

之前,该函数尝试通过以下代码连接到数据库

import * as mysql from 'mysql';
import * as util from 'util';

const connection: mysql.Pool = mysql.createPool({
  connectionLimit: 100,
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  port: Number(process.env.DB_PORT),
  database: process.env.DB_NAME,
  connectTimeout: 60 * 60 * 1000,
  acquireTimeout: 60 * 60 * 1000,
  timeout: 60 * 60 * 1000
});

export async function query(sql: string, param?: Array<any>): Promise<any> {
  const connQueryPromisified = util
    .promisify(connection.query)
    .bind(connection);
  return await connQueryPromisified(sql, param);
}

目前:

import * as aws from 'aws-sdk';
import {
  ExecuteStatementRequest,
  ExecuteStatementResponse,
  Field,
  SqlParametersList,
  BatchExecuteStatementRequest,
  BatchExecuteStatementResponse,
  SqlParameterSets
} from 'aws-sdk/clients/rdsdataservice';
const RDS = new aws.RDSDataService({ region: 'ap-northeast-1' });
const secretArn = process.env.SECRET_ARN;
const arn = process.env.RESOURCE_ARN;
const dbName = process.env.DATABASE_NAME;

export async function query(
  sql: string,
  param?: SqlParametersList
): Promise<any> {
  const params: ExecuteStatementRequest = {
    secretArn: secretArn,
    resourceArn: arn,
    sql: sql,
    parameters: param,
    database: dbName,
    continueAfterTimeout: true,
    includeResultMetadata: true
  };

  return RDS.executeStatement(params).promise();
}

有人知道数据 API 模型服务吗?或者有没有用 Data API?

编写代码的想法?

看看 local-data-api,它看起来像您要的。

它是一个 Docker 图像,承载数据 API 代理和 Postgres 或 MySQL 实例;您可以找到 DockerHub 的 pull 它,图像信息在这里:https://hub.docker.com/r/koxudaxi/local-data-api,包括如何 运行 它的说明。

Jackal 是 AWS SDK v2 Aurora 数据客户端的精简包装。它包括一个模拟客户端实现,它包装了一个 JDBC 数据源。 您可以将其与 H2 等内存数据库结合使用来执行本地集成测试。