Deno 기반 Edge Function을 작성하고 배포하며, 환경변수와 호출 방법을 배운다.
Edge Functions와 배포
Edge Functions는 Supabase에서 서버 로직을 실행하는 방법입니다. Deno 런타임 위에서 동작하며, 사용자와 가까운 엣지에 배포되어 빠르게 응답합니다. 결제 처리, 외부 API 호출, service_role 키가 필요한 작업처럼 클라이언트에서 직접 하기 어려운 로직에 적합합니다. 이 강의에서 함수 작성부터 배포, 호출까지 다룹니다.
학습 목표
- Edge Function의 역할과 Deno 런타임을 이해한다.
- CLI로 함수를 만들고 로컬에서 실행한다.
- 함수를 배포하고 환경변수를 설정한다.
- 클라이언트에서 함수를 호출한다.
CLI 준비
Edge Functions는 Supabase CLI로 다룹니다. 프로젝트를 CLI와 연결합니다.
npm install -g supabase
supabase login
supabase link --project-ref your-project-ref
함수 생성
functions new로 새 함수 폴더를 만듭니다.
supabase functions new hello
supabase/functions/hello/index.ts가 생성됩니다. Deno 환경이므로 표준 Deno.serve로 요청을 처리합니다.
Deno.serve(async (req) => {
const { name } = await req.json();
return new Response(
JSON.stringify({ message: `안녕하세요, ${name}님` }),
{ headers: { 'Content-Type': 'application/json' } },
);
});
💡 TIP — Edge Functions는 Node가 아닌 Deno에서 동작합니다. 외부 모듈은
npm:또는 URL import로 가져오며,Deno.env로 환경변수를 읽습니다.
로컬 실행
배포 전에 로컬에서 테스트합니다.
supabase functions serve hello
다른 터미널에서 요청을 보내 동작을 확인합니다.
curl -X POST http://localhost:54321/functions/v1/hello \
-H "Content-Type: application/json" \
-d '{"name":"세계"}'
배포
준비가 되면 functions deploy로 배포합니다.
supabase functions deploy hello
배포된 함수는 https://<project-ref>.supabase.co/functions/v1/hello에서 호출할 수 있습니다.
환경변수(시크릿) 설정
비밀 키는 코드에 넣지 말고 시크릿으로 등록한 뒤 Deno.env로 읽습니다.
supabase secrets set STRIPE_KEY=sk_live_xxx
const stripeKey = Deno.env.get('STRIPE_KEY');
⚠️ 주의 — service_role 키처럼 강력한 키는 클라이언트에 둘 수 없습니다. RLS를 우회해야 하는 관리 작업은 Edge Function 안에서 시크릿으로 안전하게 처리하세요.
클라이언트에서 호출
supabase.functions.invoke로 함수를 호출합니다. 로그인 토큰이 자동으로 첨부됩니다.
const { data, error } = await supabase.functions.invoke('hello', {
body: { name: '연욱' },
});
console.log(data); // { message: '안녕하세요, 연욱님' }
| 단계 | 명령 |
|---|---|
| 생성 | supabase functions new <name> |
| 로컬 실행 | supabase functions serve <name> |
| 배포 | supabase functions deploy <name> |
| 시크릿 설정 | supabase secrets set KEY=value |
요약
- Edge Functions는 Deno 런타임에서 동작하는 서버 로직 실행 환경입니다.
- CLI의
functions new,serve,deploy로 생성·테스트·배포합니다. - 비밀 키는
supabase secrets set으로 등록하고Deno.env로 읽습니다. - 클라이언트에서는
supabase.functions.invoke로 호출합니다.
연습문제
- Edge Functions는 어떤 런타임 위에서 실행되는가?
- 새 함수를 생성하고 로컬에서 실행하는 CLI 명령은 각각 무엇인가?
- 함수 안에서 환경변수(시크릿)를 읽는 코드는?
- 클라이언트에서 배포된 함수를 호출하는 메서드는?
힌트 — Deno 런타임의 특징과
functions네임스페이스를 떠올리세요.
💡 연습문제 풀이
불러오는 중…
댓글 0
“Supabase” 강좌에 대한 댓글입니다.