【Lambda】Prisma経由でSupabaseをマイグレーションする方法【Docker】

サムネイル
2024年10月23日2025年2月8日
記事内に広告が含まれています。
吹き出しのイメージ

LambdaからPrisma経由でSupabaseをマイグレーションすることは可能?

この記事では、Dockerで作成したLambdaからPrismaを経由してSupabaseにマイグレーションを実行する方法を紹介します。

手順は以下の通りです。

  • 記事の前提
  • 実装方法

最後までご覧いただき、参考にしていただけると幸いです。

スポンサーリンク

記事の前提

この記事では、LambdaやECRへのプッシュ方法、またSupabaseプロジェクトの作成手順については詳細に紹介していません。

Dockerを使用してLambdaにデプロイできることを前提としています。

スポンサーリンク

実装方法

それでは実装方法を紹介します。

Supabaseプロジェクトの作成

詳細なSupabaseプロジェクトの作成手順については省略しますが、以下の手順でプロジェクトを作成し、DATABASE_URLを取得します。

  1. Supabaseコンソールにアクセスし、新しいプロジェクトを作成します。
  2. プロジェクトが作成されたら、Supabaseコンソールの Project Settings -> Database セクションに移動します。
  3. Connection string のURIをコピーし、[YOUR-PASSWORD] 部分をプロジェクト作成時に設定したデータベースパスワードに置き換えます。

このようにして完成した DATABASE_URL は、後ほどLambdaの環境変数として設定します。

package.jsonの作成

Node.jsを使用するため、Lambdaプロジェクトのルートにpackage.jsonを作成し、最低限の内容を記述します。

{
    "name": "lambda-container",
    "license": "MIT"
}

この状態で npm install を実行し、package-lock.json を生成します。

prismaのインストール

次に、以下のコマンドでPrismaとPrismaクライアントをインストールします。

npm install prisma
npm install @prisma/client

インストールが完了し、node_modules が生成されたら、npx prisma init を実行してPrismaの初期設定を行い、prisma/ ディレクトリを作成します。

schema.prismaの実装

schema.prisma に、マイグレーションしたいデータモデルを記述します。以下は例です。

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
}

Dockerfileの作成

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 でクライアントを生成します。

index.jsの作成

最後にプロジェクトルートに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をデプロイします。詳細な手順は省略しますが、以下の流れで進めます。

  1. ECRへのDockerコンテナのプッシュ
    Dockerイメージをビルドし、ECRリポジトリにプッシュします。
  2. Lambdaへのデプロイ
    ECRリポジトリからLambda関数を作成します。
  3. 環境変数の設定
    Supabaseと連携するために、DATABASE_URL をLambda関数の環境変数として設定します。この値はSupabaseのコンソールから取得したConnection stringです。

スポンサーリンク

最後に

ここまで、LambdaからPrismaを経由してSupabaseにマイグレーションを実行する方法について紹介しました。

最初は難易度が高そうに感じていましたが、Dockerを利用することで、思ったよりも簡単に実装できました。

Dockerは偉大です。

ここまでお読みいただき、ありがとうございました。

スポンサーリンク

シェアする
フォローする
応援する
にほんブログ村人気ブログランキングFC2ブログランキング
BuyMeaCoffee
もしこの記事が役に立ったなら、
こちらから ☕ を一杯支援いただけると喜びます
ブログ運営者
筆者
あらた
  • 21歳
  • 千葉県在住
  • 文系大学生|26卒
  • 経営学部 マーケティング学科
  • Webエンジニアインターンに参加中
  • インターン:Vue.js, Laravel
  • 個人開発:Next.js

スポンサーリンク

スポンサーリンク

アーカイブ

スポンサーリンク