この記事では、Dockerで作成したLambdaから、Prismaを経由してSupabaseにマイグレーションを実行する方法を紹介します。
手順は以下の通りです。
スポンサーリンク
LambdaからPrisma経由でSupabaseをマイグレーションすることは可能?
この記事では、Dockerで作成したLambdaから、Prismaを経由してSupabaseにマイグレーションを実行する方法を紹介します。
手順は以下の通りです。
最後までご覧いただき、参考にしていただけると幸いです。
スポンサーリンク
この記事では、LambdaやECRへのプッシュ方法、またSupabaseプロジェクトの作成手順については詳細には紹介していません。
Dockerを使用してLambdaにデプロイできることを前提としています。
スポンサーリンク
それでは実装方法を紹介します。
詳細なSupabaseプロジェクトの作成手順については省略しますが、以下の手順でプロジェクトを作成し、DATABASE_URLを取得します。
このようにして完成した DATABASE_URL は、後ほどLambdaの環境変数として設定します。
Node.jsを使用するため、Lambdaプロジェクトのルートにpackage.jsonを作成し、最低限の内容を記述します。
{
"name": "lambda-container",
"license": "MIT"
}
この状態で npm install を実行し、package-lock.json を生成します。
次に、以下のコマンドでPrismaとPrismaクライアントをインストールします。
npm install prisma
npm install @prisma/client
インストールが完了し、node_modules が生成されたら、npx prisma init を実行してPrismaの初期設定を行い、prisma/ ディレクトリを作成します。
schema.prisma に、移行したいデータモデルを記述します。以下は例です。
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
}
LambdaをDockerで実装するために、プロジェクトのルートに Dockerfile を作成します。
FROM public.ecr.aws/lambda/nodejs:16
COPY index.js package.json package-lock.json /var/task/
COPY prisma/ /var/task/prisma/
RUN npm install
RUN npx prisma generate
CMD ["index.handler"]
Lambdaの最低限のコードに加えて、prisma/ ディレクトリをコピーし、npx prisma generate でクライアントを生成します。
最後に、プロジェクトルートにLambdaのコードを実装します。PrismaClientをインポートし、Supabaseを操作できるようにします。
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
exports.handler = async (event) => {
// ここにLambda処理を実装
};
最終的なディレクトリ構成は以下のようになります。
/
├─ node_modules/
├─ prisma/
└─ schema.prisma
├─ Dockerfile
├─ index.js
├─ package.json
├─ package-lock.json
最後に、ECRを通してLambdaをデプロイします。詳細な手順は省略しますが、以下の流れで進めます。
スポンサーリンク
ここまで、LambdaからPrismaを経由してSupabaseにマイグレーションを実行する方法について紹介しました。
最初は難易度が高そうに感じていましたが、Dockerを利用することで、思ったよりも簡単に実装できました。
Dockerは偉大です。
ここまでお読みいただき、ありがとうございました。
スポンサーリンク
ダークモードに対応しました。画面右上から切り替えることができます。 2024年11月7日 |
Android版アプリ「リアル大学生:モバイル」がリリースされました。 2024年9月30日 |
RSSの不具合を修正しました。お手数ですが、新しいURLから再登録をお願いします。 2024年9月30日 |
iOS版アプリ「リアル大学生:モバイル」がリリースされました。 2024年8月3日 |
スポンサーリンク
スポンサーリンク