تايبسكريبت - هل توجد أي خدمة محاكاة (أو محلية) لواجهة برمجة تطبيقات بيانات Aurora Serverless؟
لقد قمت بتغيير طريقة الاتصال بقاعدة البيانات من دالة لامبدا.
سابقًا، كانت الدالة تنشئ اتصالًا بـ RDS باستخدام وحدة MySQL وتستعلم عبر المنفذ 3306.
حاليًا، حاولت استخدام واجهة برمجة تطبيقات البيانات وقد أنهيت استبدال جميع الأكواد بدون اختبار.
الآن أفكر في كيفية ضمان شفراتي.
لدي بعض أكواد الاختبار للاتصال بقاعدة بيانات MySQL المحلية التي تعمل على صورة دوكر.
ومع ذلك، لا يمكن لواجهة برمجة التطبيقات للبيانات الاتصال بقاعدة بيانات MySQL المحلية لأنه لا يوجد نقطة نهاية.
لذلك أريد أن أعرف هل توجد أي خدمة أو مكتبة لإنشاء نماذج تجريبية لواجهة برمجة التطبيقات للبيانات.
هذا هو ملف 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();
}
هل يعرف أي شخص عن خدمة نموذج البيانات التجريبي API؟ أم هل توجد أي أفكار لكتابة الأكواد باستخدام Data API؟
الإجابة رقم 1
ألق نظرة على local-data-api، يبدو أنه ما تطلبه.
إنها صورة Docker تستضيف وكيل API للبيانات وإما مثيل Postgres أو MySQL؛ يمكنك سحبها من DockerHub، ومعلومات الصورة هنا: https://hub.docker.com/r/koxudaxi/local-data-api، بما في ذلك تعليمات حول كيفية تشغيلها.
الإجابة رقم 2
جاكول هو غلاف رقيق حول عميل بيانات أوراكل v2 من AWS SDK. يتضمن تنفيذ عميل تجريبي يلتف حول مصدر بيانات JDBC. يمكنك استخدام هذا بالاشتراك مع قاعدة بيانات في الذاكرة مثل H2 لإجراء اختبارات تكامل محلية.