Я заменил способ подключения к базе данных из лямбда-функции.
Раньше функция устанавливала соединение с 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?