AuroraServerlessを使うことで、https経由でデータアクセスが可能となる。
事前準備
- AuroraServerlessを構築する
- DataAPIをオンにする
- AWS Secrets Manager へ 認証情報を保存する
データの取得
- 環境変数に接続情報をセット export DB_SECRET_ARN="arn:aws:secretsmanager:ap-northeast-1:99999999:\secret:rds-db-credentials/cluster-XXXXXXXXXXXXXXX/xxxxxxxxxxx"; export DB_ARN="arn:aws:rds:ap-northeast-1:xxxxxxxxxxxxx:cluster:xxxxxxxxxxx"; export DB_NAME=xxxxxx
find_by_sql.ts
// SQLから連想配列で取得する
const find_by_sql = async (sql: string, parameters?: SqlParameter[]) => {
const params: ExecuteStatementRequest = {
resourceArn: process.env.DB_ARN,
secretArn: process.env.DB_SECRET_ARN,
sql: sql,
database: process.env.DB_NAME,
includeResultMetadata: true,
parameters: parameters
};
// データの取得
let res = await new Promise<ExecuteStatementResponse>((resolve, reject) => {
RDS.executeStatement(params, (err, data) => {
if (err) reject(err);
else resolve(data);
});
});
// 詰め替える
const results: any[] = [];
res.records.forEach(record => {
const result_row: any = {};
res.columnMetadata.forEach((col, i) => {
result_row[col.name] = Object.values(record[i]).filter(x => x)[0] || null;
});
results.push(result_row);
});
return results;
};
// example
const sql = 'select * from users where id = :user_id'
const datas = await find_by_sql(sql, [{ name: "user_id", value: { stringValue: 'hoge' } }]);