Есть ли фиктивный (или локальный) сервис Aurora Serverless Data Api?

Я заменил способ подключения к базе данных из лямбда-функции.
Раньше функция устанавливала соединение с RDS с помощью модуля MySQL и запроса через порт 3306.
В настоящее время я пытался использовать Data API и закончил замену все коды без теста.

Сейчас думаю, как гарантировать свои коды.

У меня есть несколько тестовых кодов для подключения к локальной базе данных MySQL, работающей на образе докера.
Однако API данных не может подключиться к локальной базе данных MySQL из-за отсутствия конечной точки.

Итак, я хочу знать, есть ли какая-либо служба или библиотека для создания макета API данных.

Это мой docker-compose.yml для запуска MySQL DB.

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();
}

Кто-нибудь знает о сервисе мокапов Data API? или есть идеи для написания кодов с Data API?


person anizo    schedule 25.08.2019    source источник


Ответы (1)


Взгляните на local-data-api, похоже, что вы спрашиваете для.

Это образ Docker, в котором размещается прокси-сервер Data API и экземпляр Postgres или MySQL; вы можете найти его для DockerHub, информация об образе находится здесь: https://hub.docker.com/r/koxudaxi/local-data-api, включая инструкции по его запуску.

person Dan C.    schedule 31.12.2019
comment
Кто-нибудь знает способ запустить что-то подобное в памяти? Я бы предпочел не запускать целый контейнер докеров, если он не нужен. - person Xizam; 19.05.2021