← スキル一覧に戻る

supabase-edge-function
by jj8127
⭐ 0🍴 0📅 2026年1月21日
SKILL.md
name: supabase-edge-function description: Supabase Edge Function 작성 가이드. Edge Function 생성, 수정, 또는 Supabase Functions 관련 질문 시 사용. allowed-tools: Read, Write, Edit, Bash, Grep, Glob
Supabase Edge Function 작성 가이드
이 프로젝트의 Edge Function 패턴과 규칙을 따릅니다.
디렉토리 구조
supabase/functions/
├── _shared/ # 공유 유틸리티
│ └── board.ts # 게시판 관련 공유 함수
├── function-name/
│ └── index.ts # 각 함수의 진입점
필수 패턴
1. CORS 헤더 처리
import { serve } from 'https://deno.land/std@0.224.0/http/server.ts';
const CORS_HEADERS = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization, apikey, x-client-info',
};
serve(async (req: Request) => {
// OPTIONS 프리플라이트 요청 처리
if (req.method === 'OPTIONS') {
return new Response('ok', { headers: CORS_HEADERS });
}
// ... 로직
});
2. 응답 형식
// 성공 응답
return new Response(
JSON.stringify({ ok: true, data: result }),
{ status: 200, headers: { ...CORS_HEADERS, 'Content-Type': 'application/json' } }
);
// 에러 응답
return new Response(
JSON.stringify({ ok: false, code: 'error_code', message: '에러 메시지' }),
{ status: 400, headers: { ...CORS_HEADERS, 'Content-Type': 'application/json' } }
);
3. Actor 검증 패턴
type Payload = {
actor?: {
role: 'admin' | 'manager' | 'fc';
residentId: string;
displayName?: string;
};
// ... 기타 필드
};
// actor 필수 검증
if (!body.actor?.role || !body.actor?.residentId) {
return json({ ok: false, code: 'unauthorized', message: 'Actor required' }, 401, origin);
}
// 역할 기반 권한 검증
if (!['admin', 'manager'].includes(body.actor.role)) {
return json({ ok: false, code: 'forbidden', message: 'Admin or manager only' }, 403, origin);
}
4. Supabase 클라이언트 사용
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2';
const supabase = createClient(
Deno.env.get('SUPABASE_URL')!,
Deno.env.get('SUPABASE_SERVICE_ROLE_KEY')! // service role 사용
);
보안 규칙
- 주민번호(resident_id): 절대 평문 저장 금지, AES-GCM 암호화 필수
- 비밀번호: PBKDF2 + salt 해싱 (100,000 iterations)
- 서비스 역할 키: Edge Function에서만 사용, 클라이언트 노출 금지
배포
# 로컬 테스트
supabase functions serve function-name --env-file .env.local
# 배포
supabase functions deploy function-name
참고 파일
기존 Edge Function 예시:
supabase/functions/board-list/index.ts- 목록 조회 패턴supabase/functions/board-create/index.ts- 생성 패턴supabase/functions/_shared/board.ts- 공유 유틸리티
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です