typescript - aurora serverless Data Api 是否有任何模拟(或本地)服务?

标签 typescript amazon-web-services aws-aurora-serverless

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

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

我有一些测试代码可以连接在 docker 镜像上运行的本地 MySQL 数据库。
但是,由于没有端点,Data API 无法与本地 MySQL 数据库连接。

所以我想知道是否有任何服务或库来模拟 Data API。

这是我运行 MySQL DB 的 docker-compose.yml。

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

以前,该函数尝试通过以下代码连接到 DB
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();
}

有人知道 Data API 模型服务吗?或者有没有用 Data API 编写代码的想法?

最佳答案

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

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

关于typescript - aurora serverless Data Api 是否有任何模拟(或本地)服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57650408/

相关文章:

Python 使用 SQLAlchemy 连接到 AWS Aurora Serverless MySQL

javascript - 为什么angular 2中的*ngIf总是在使用函数时执行?

javascript - 在 typescript 中的 BinTree 上进行预购旅行

typescript - Angular 5 - 刷新组件(不是整个页面)

typescript - 如何表示不可变对象(immutable对象)的不可变数组?

amazon-web-services - 有没有办法使用 lambda 将数据从 S3 导出到 Amazon Aurora 无服务器?

amazon-web-services - s3 :x-amz-acl with a value of "bucket-owner-full-control" do/mean? 是什么

amazon-web-services - 在 Terraform 中解释 aws 的 secret

amazon-web-services - 使用 Tomcat 的 Elastic Load Balancer 出现 504 错误

amazon-web-services - CloudFormation 中 Aurora Serverless 的日志保留