1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Supabaseのデータを毎朝自動削除する!GitHub Actionsでバッチ処理を組んでみた

Posted at

はじめに

Supabaseでテスト用のユーザーデータを扱っていると、
「古いデータを毎回手動で消すのが面倒だな…」と思ったことはありませんか?

そこで今回は、GitHub Actions と ts-node を使って、
毎朝6時に「前日のユーザー情報を自動削除」する仕組みを作りました。

この仕組みを作る中で学んだのは、Supabaseの操作をスクリプトから実行する方法、GitHub Actionsの自動スケジュール(cron)設定、Secretsを使った安全なキー管理でした。

学んだこと

  1. Supabaseはスクリプトからも簡単に操作できる

createClient() で接続し、.from('table').delete() で簡単にデータ操作が可能。

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(process.env.URL!, process.env.KEY!)

await supabase
  .from('users')
  .delete()
  .lt('created_at', `${yesterday}T23:59:59`)

2.GitHub Actionsで毎朝6時に自動実行できる

on.schedule.cron を使えば、毎日決まった時間にジョブを動かせる。
日本時間6時は、UTCだと21:00に設定。

on:
  schedule:
    - cron: "0 21 * * *"   # JST 6:00

3.Secretsでキーを安全に扱う

SupabaseのURLとAPIキーをGitHub Secretsに登録して、
env: に渡すことで安全に環境変数として利用できる。

env:
  VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
  VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }}
  1. テストはまず手動実行で確認

workflow_dispatch を入れておけば、cronを待たずに「Run workflow」ボタンからすぐ実行テストできる。

まとめ

Supabaseのデータ削除はSDKで簡単にスクリプト化できる

GitHub Actionsを使えば、毎日自動実行が可能

Secretsを活用すれば、安全にAPIキーを管理できる

自動化すると「手動で消す時間」や「ミスのリスク」がなくなる

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?