📖

AWS ECSからAurora Serverless (Postgres) を呼び出す

2021/10/02に公開

AWS ECSで Node.js を使用して、Aurora Serverless(Postgres)を呼び出す対応を行った。
その対応についてまとめる。

経緯

AWS ECS を利用する社内システムの開発を行っていた。
当初、AWS DynamoDB を利用していたが、システムの仕様上、RDBを用いる方が良いということになった。

技術選定

対象システムが社内システムであり、次の性質があった。

  • 利用時間は短い。
  • 複雑なクエリを利用した分析を行うことがある。
    そのため、Aurora Serverless (Postgres) を用いることになった。

TypeORM の利用

Node.js からRDBを利用するにあたり、 TypeORM を使用した。
Node.js の OR Mapper である。Entity class を元にテーブルを作成してくれる。

https://typeorm.io/#/

Aurora Data API の利用

Node.js から Aurora に接続するために Aurora Data API を利用した。
Aurora への永続的な接続の代わりに、セキュア HTTP エンドポイントおよび AWS SDKを用いた接続が可能になる。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/data-api.html

typeorm-aurora-data-api-driver の利用

TypeORM から Aururora Data API を利用するため、typeorm-aurora-data-api-driver を使用した。

https://github.com/ArsenyYankovsky/typeorm-aurora-data-api-driver

このライブラリでは、ローカルの Postgres で使用していた dateenum などのDBの型が利用できないという問題があった。そのため、次のように型の変更とそれに伴うコード書き換えを行った。

  • datetimestamp
  • enumtext

注意点 esbuildが利用できない。

当初、esbuild を使用してビルドを行っていた。
しかし、esbuild では TypeOrm に必要な emitDecoratorMetadata がサポートされていなかった。そのため、esbuild は使用しないことになった。

参考記事

https://qiita.com/tokicat/items/65523f95d2cecfe42ced

Discussion