有点老的问题,但答案是要么使用AWS.RDSDataService()
AWS 开发工具包中的。(在此处查看示例/设置:https ://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDSDataService.html )
或者使用我们选择的“包装”包data-api-client
。
const dataApiClient = require('data-api-client');
const db = dataApiClient({
secretArn: process.env.RDS_AURORA_DATA_API_SECRET_ARN || '',
resourceArn: process.env.RDS_AURORA_DATA_API_ARN || '',
database: process.env.RDS_AURORA_DATA_API_DB || '',
region: 'eu-west-1',
options: {
endpoint:
process.env.IS_OFFLINE
? process.env.AURORA_LOCAL_ENDPOINT || 'http://0.0.0.0:8080'
: null
}
});
如果您运行本地数据库并希望在本地进行开发,那么在options.endpoint
本地运行可以很好地使用 Docker 容器koxudaxi/local-data-api
。确保 PG Server 正在运行,然后运行 Docker cmd:
docker run -d --rm -it --name my-data-api -p 8080:80 -e ENGINE=PostgreSQLJDBC -e POSTGRES_HOST=host.docker.internal -e POSTGRES_PORT=
5432 -e POSTGRES_USER=qipdb_user -e POSTGRES_PASSWORD=password -e RESOURCE_ARN=arn:aws:rds:eu-west-1:00000000000:cluster:dummy -e SECRET_ARN=arn:aws:
secretsmanager:eu-west-1:00000000000:secret:dummy koxudaxi/local-data-api
由于数据 API 只使用 SQL,我们选择使用“断开连接”knex
的实例来生成 SQL(这是完全可选的,尽管如果喜欢,普通 SQL 可以直接工作):
// knex is only use to produce SQL, it does not have any DB connection!
const connKnex = require('knex');
const knex = connKnex({ client: 'pg' });
然后您可以使用knex
获取 SQL,例如:
async function getSomethingFromDB() {
const sql = await knex
.select('aColumn')
.from('aTable')
.where({
someColumn: 'isSomething'
})
.toString();
const obj = await db.query(sql);
return !obj.records[0] ? null : obj.records[0];
}