Supabase에서 서버리스 함수는 어떻게 작성하나요?
_____A1: Supabase의 서버리스 함수는 백엔드 로직을 작성하고 API 엔드포인트로 배포할 수 있는 경량 서버리스 환경입니다. Node.js 기반으로 작성되며, 별도의 서버 관리 없이 확장 가능합니다.
Q2: Supabase 서버리스 함수를 작성하려면 어떤 도구가 필요한가요?
A2: Supabase CLI가 필요합니다. 로컬에서 함수 작성, 테스트, 배포를 돕는 도구로, 공식 문서에서 설치 및 설정 방법을 안내합니다.
Q3: 함수 작성 기본 구조는 어떻게 되나요?
A3: 함수는 `index.ts` 또는 `index.js` 파일에 `export default` 형태로 HTTP 요청을 처리하는 함수를 작성합니다. 예:
```javascript
export default async function handler(req, res) {
res.status(200).json({ message: 'Hello from Supabase Function' });
}
```
Q4: Supabase CLI로 서버리스 함수 생성 방법은?
A4: 터미널에서 아래 명령으로 함수를 생성합니다.
```bash
supabase functions new
```
새 폴더가 생성되고 기본 템플릿 파일이 포함됩니다.
Q5: 함수를 로컬에서 테스트하려면 어떻게 하나요?
A5: 다음 명령어로 로컬 서버를 실행해 HTTP 요청 테스트가 가능합니다.
```bash
supabase functions serve
```
Q6: 서버리스 함수 배포는 어떻게 하나요?
```bash
supabase functions deploy
```
배포 이후 제공된 URL에서 함수가 실행됩니다.
Q7: 배포한 함수는 어떻게 호출하나요?
A7: Supabase 프로젝트 콘솔 또는 CLI 배포 완료 시 반환되는 URL을 통해 HTTP 요청(GET, POST 등)으로 호출할 수 있습니다.
Q8: 함수에서 Supabase 클라이언트를 사용하는 방법은?
A8: 함수 내에서 `@supabase/supabase-js` 패키지를 설치 후 아래처럼 초기화할 수 있습니다.
```javascript
import { createClient } from '@supabase/supabase-js'
const supabaseUrl = process.env.SUPABASE_URL
const supabaseKey = process.env.SUPABASE_SERVICE_ROLE_KEY
const supabase = createClient(supabaseUrl, supabaseKey)
```
환경 변수 설정이 필요합니다.
Q9: 환경 변수는 어떻게 설정하나요?
A9: 프로젝트 루트 `.env` 파일에 `SUPABASE_URL`, `SUPABASE_SERVICE_ROLE_KEY` 등의 변수를 설정하고, 함수에서 `process.env`로 접근합니다. 배포 시에도 환경 변수를 같이 설정해야 합니다.
Q10: Supabase 서버리스 함수의 제한 사항은 무엇인가요?
A10: 함수 실행 시간, 메모리 제한 등이 존재하며, 복잡한 연산이나 장시간 프로세스에는 적합하지 않습니다. 공식 문서의 리소스 제한 정책을 참고하세요.
---
요약: Supabase 서버리스 함수는 CLI로 생성 후 로컬 테스트, 그리고 CLI 명령으로 배포할 수 있으며, Node.js 방식으로 작성합니다. Supabase 클라이언트와 환경 변수를 활용해 데이터베이스와 연동 가능합니다.
Supabase는 이러한 저장 프로시저를 손쉽게 호출할 수 있는 API를 자동으로 생성합니다.
기본적인 절차는 다음과 같습니다: 1. Supabase 프로젝트 생성 Supabase 대시보드에 로그인 후 새로운 프로젝트를 생성합니다.
2. SQL Editor 열기 Supabase 대시보드의 좌측 메뉴에서 'SQL'을 선택하여 SQL 에디터를 엽니다.
3. 서버리스 함수 작성 서버리스 함수를 만들기 위해 `CREATE FUNCTION` 문을 사용하여 함수를 정의합니다.
예를 들어, 숫자를 더하는 간단한 함수를 만들어 보겠습니다.
```sql CREATE FUNCTION add_numbers(a integer, b integer) RETURNS integer AS $$ BEGIN RETURN a + b; END; $$ LANGUAGE plpgsql; ```
4. 함수 실행 및 테스트 저장 프로시저가 생성된 후, SQL 에디터에서 다음과 같이 함수를 호출하여 테스트할 수 있습니다.
```sql SELECT add_numbers(5,
3); ```
5. API 호출 Supabase는 작성한 함수를 API로 자동으로 노출합니다.
API를 통해 함수를 호출하려면 다음과 같은 형식의 HTTP POST 요청을 보낼 수 있습니다.
```http POST https://
```json { "a": 5, "b": 3 } ```
6. 인증 및 권한 설정 서버리스 함수를 호출하기 위해서는 적절한 인증 헤더를 포함해야 합니다.
Supabase 프로젝트의 'Authentication' 섹션에서 API 키를 확인하고, 이 키를 요청 헤더에 포함시켜야 합니다.
7. 관리 및 수정 함수를 수정하고 싶다면, `CREATE OR REPLACE FUNCTION` 문을 사용하여 기존 함수를 업데이트할 수 있습니다.
예를 들어, 기능을 확장하거나 버그를 수정할 때 유용합니다.
```sql CREATE OR REPLACE FUNCTION add_numbers(a integer, b integer) RETURNS integer AS $$ BEGIN RETURN a + b + 1; -- 기존 기능을 수정 END; $$ LANGUAGE plpgsql; ```
8. 문서화 및 유지보수 작성한 함수를 잘 문서화하고, 필요한 경우 주석을 추가하여 향후 유지보수 및 팀원들과의 협업 시 참고할 수 있도록 합니다.
Supabase의 서버리스 함수를 이용하면 데이터베이스 내에서 복잡한 로직을 처리하고, 이를 손쉽게 API로 제공받을 수 있어 매우 유용합니다.
작성자:
박지후 [비회원]
| 작성일자: 1년 전
2025-03-04 09:10:46
조회수: 168 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 168 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.