Есть ли какой-нибудь фиктивный (или локальный) сервис aurora Data Api без сервера?

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

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

У меня есть несколько тестовых кодов для подключения к локальной базе данных MySQL, работающей на образе докера.
Однако 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();
}

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

2 ответа

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

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

Jackal - это тонкая оболочка для AWS SDK v2 Aurora Data Client. Он включает фиктивную реализацию клиента, которая обертывает JDBC DataSource. Вы можете использовать это вместе с базой данных в памяти, такой как H2, для выполнения локального интеграционного тестирования.

Другие вопросы по тегам