함수 (Functions)
서버리스 함수 호출 API입니다. 함수 ID(fn_xxx)는 콘솔에서 함수를 만들면 발급됩니다.
invoke (전체 응답)
함수 실행 결과와 메타데이터를 모두 반환합니다.
typescript
// cb.functions.invoke(functionId, payload?, timeout?)
const response = await cb.functions.invoke('fn_send_email', {
to: '[email protected]',
subject: '안녕하세요',
body: '메일 내용입니다.'
})
console.log(response.success) // boolean
console.log(response.execution_id) // 실행 ID
console.log(response.status) // 'success' | 'error' | 'timeout'
console.log(response.result) // 함수가 return 한 값 (Record<string, unknown>)
console.log(response.duration) // 실행 시간 (밀리초)
console.log(response.error) // 실패 시 에러 메시지 (선택)call (결과만)
응답에서 result 만 추출하는 경량 래퍼입니다.
typescript
// 타입 지정 가능
interface EmailResult {
message_id: string
status: 'sent' | 'failed'
}
const data = await cb.functions.call<EmailResult>('fn_send_email', {
to: '[email protected]',
subject: '안녕하세요'
})
console.log(data.message_id, data.status)타임아웃 설정
세 번째 인자에 초 단위 타임아웃을 전달합니다.
typescript
// 60초 타임아웃
const response = await cb.functions.invoke('fn_long_task', { id: 1 }, 60)에러 처리
typescript
import { ApiError } from 'connectbase-client'
try {
const data = await cb.functions.call('fn_xxx', { input: 'test' })
} catch (e) {
if (e instanceof ApiError) {
if (e.statusCode === 404) console.error('함수를 찾을 수 없음')
else if (e.statusCode === 408) console.error('실행 타임아웃')
else console.error('함수 에러:', e.statusCode, e.message)
}
}