Есть ли какой-нибудь фиктивный (или локальный) сервис 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, включая инструкции по его запуску.