@dependahub/aws-rds-data
v1.0.0
Published
RDS Data API 操作モジュール
Readme
aws-rds-data
RDS Data API クライアントのラッパーです。
install
npm install @trusquetta/aws-rds-data初期設定
import process from 'node:process';
import {rdsData} from '@trusquetta/aws-rds-data';
const {
DB_RESOURCE_ARN,
DB_SECRET_ARN,
DB_DATABASE,
} = process.env;
rdsData.configure({
profile: 'tq-dev', // (テストなど)ローカル実行時のみ指定
resourceArn: DB_RESOURCE_ARN,
secretArn: DB_SECRET_ARN,
database: DB_DATABASE,
readOnly: true, // (Optional) 誤ってデータ変更したくない場合に設定
});SELECT
SELECT は「SQL直書き」または「テンプレート構文で生成」してデータを取り出します。
パラメーターの使用もできますが、長くなるのでテンプレート構文で十分かと思います。
const sql = 'SELECT * FROM tsukuyomi WHERE company_id is null;'
const items = await rdsData.post(sql);INSERT
INSERT時は必ずパラメーターを使用して下さい。
パラメーターを使用すると自動でエスケープ処理されます。(AWS SDK の仕様)
// SQL文へのパラメータ名は :${name} で指定します。
const sql = `
INSERT INTO check_results
(id, user, type, document, result, created_at, updated_at)
VALUES
(:id, :user, :documentType, :document, :result, :createdAt, :updatedAt)`;
// パラメーターはこちらの形式で指定します。
const parameters = [
{
name: 'id',
value: {
isNull: true,
},
},
{
name: 'user',
value: {
stringValue: auth.username,
},
},
{
name: 'documentType',
value: {
stringValue: 'document',
},
},
{
name: 'document',
value: {
stringValue: document,
},
},
{
name: 'result',
value: {
stringValue: result,
},
},
{
name: 'createdAt',
value: {
stringValue: now,
},
},
{
name: 'updatedAt',
value: {
stringValue: now,
},
},
];
return rdsData.post(sql, parameters);異なるDBを扱う場合は create でインスタンスを作成します
const db1 = rdsData.create({
profile: 'tq-dev', // ローカル実行時のみ指定
resourceArn: 'arn:resource-1',
secretArn: 'arn:secret-1',
database: DB_DATABASE,
});
const db2 = rdsData.create({
profile: 'tq-dev', // ローカル実行時のみ指定
resourceArn: 'arn:resource-2',
secretArn: 'arn:secret-2',
database: DB_DATABASE,
});
// db1からデータを取り出して
const items = await db1.post('SELECT ...');
// db2へデータを移す
await db2.post('INSERT INTO ...');