본문으로 건너뛰기

Vercel에 Mastra 배포

사용@mastra/deployer-vercelVercel에서 Mastra 서버를 서버리스 기능으로 배포합니다. 배포자는 코드를 번들로 묶고.vercel/outputVercel을 따르는 디렉토리출력 API 빌드, 추가 구성 없이 배포 준비가 완료되었습니다.

정보

이 가이드에서는Mastra server. If you're using a server adapter or web framework, 해당 프레임워크에서 평소 사용하는 방식으로 배포합니다.

시작하기 전에
시작하기 전에에 대한 직접 링크

당신은Mastra application and a Vercel account.

경고

Vercel Functions는 임시 파일 시스템을 사용하므로 구성하는 모든 스토리지(관측성 스토리지 포함)는 외부에서 호스팅되어야 합니다. 당신이 사용하는 경우LibSQLStore 에서 파일 URL을 사용하는 경우 원격으로 호스팅되는 데이터베이스로 전환합니다.

설치
설치에 대한 직접 링크

추가@mastra/deployer-vercel package to your project:

npm install @mastra/deployer-vercel@latest

수입VercelDeployer 을 설치하고 Mastra 구성에서 deployer로 설정합니다:

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { VercelDeployer } from '@mastra/deployer-vercel'

export const mastra = new Mastra({
deployer: new VercelDeployer(),
})

배포
배포에 대한 직접 링크

  1. 프로젝트를 원격 Git Provider(예: GitHub)에 푸시하고 저장소를 Vercel에 연결하세요.

    기본적으로 Vercel은 실행됩니다.npm run build, which triggers mastra build. If you don't have a build script, add "build": "mastra build" to your package.json.

    노트

    애플리케이션을 실행하는 데 필요한 환경 변수(예:model provider API key).

  2. 준비가 되면 다음을 클릭하세요.Deploy 을 클릭하고 첫 번째 배포가 완료될 때까지 기다립니다.

  3. 배포를 확인하세요.https://<your-project>.vercel.app/api/agents, Agent의 JSON 목록이 반환되어야 합니다.

    Mastra 서버는 모든 엔드포인트 앞에 다음을 붙입니다./api, 요청할 때 URL에 이를 추가해야 합니다.

  4. 이제 HTTP를 통해 Mastra 엔드포인트를 호출할 수 있습니다.

    경고

    설정authentication before exposing your endpoints publicly.

사진관
사진관에 대한 직접 링크

배포할 수 있습니다.Studio alongside your API by enabling the studio 옵션을 사용합니다. Studio는 Vercel의 Edge CDN에서 제공되는 정적 애셋으로 배포되므로 함수 호출을 소비하지 않습니다.

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { VercelDeployer } from '@mastra/deployer-vercel'

export const mastra = new Mastra({
deployer: new VercelDeployer({
studio: true,
}),
})

배포 후 Studio는 루트 URL(https://<your-project>.vercel.app/) and the API remains at /api/*. Studio는 동일한 origin의 API에 자동으로 연결되므로 추가 환경 변수가 필요하지 않습니다.

Studio는 CDN의 자체 페이지를 제공하고 다른 모든 경로는 서버로 이동하므로 다음을 사용하여 추가하는 경로를 사용하세요.registerApiRoute() 은 각각의 경로에서 계속 접근할 수 있습니다. Studio에서 이미 사용하는 경로(예: /agents or /workflows), since Studio claims those first.

경고

Studio가 Mastra 서버에 연결되면 Agent, Workflow 및 Tool에 대한 전체 액세스 권한을 갖게 됩니다. 무단 액세스를 방지하려면 프로덕션 환경(예: 인증, VPN 등)에서 적절하게 보호해야 합니다.

선택적 재정의
선택적 재정의에 대한 직접 링크

Vercel 배포자는 Vercel 출력 API 기능 구성에 기록되는 구성 옵션을 지원합니다. 참조VercelDeployer reference for available options like maxDuration, memory, and regions.

Observability
Observability에 대한 직접 링크

서버리스 함수는 응답 반환 후 즉시 종료될 수 있습니다. 원격 분석 전송과 같은 보류 중인 비동기 작업은 완료되기 전에 종료될 수 있습니다. 대기 중flush() 은 함수가 종료되기 전에 모든 Trace가 전송되도록 보장합니다.

api/chat.ts
import type { VercelRequest, VercelResponse } from '@vercel/node'
import { mastra } from '../src/mastra'

export default async function handler(req: VercelRequest, res: VercelResponse) {
const { message } = req.body
const agent = mastra.getAgent('myAgent')
const result = await agent.generate([{ role: 'user', content: message }])

await mastra.observability.flush()

return res.json(result)
}
경고

Vercel 배포자는 다음을 포함하지 않습니다.flush 호출에는 적용되지 않습니다. 이 기능이 필요하다면 응답을 반환하기 전에 해당 로직을 추가하도록 handler를 직접 래핑해야 합니다. 또는 다음과 같이 장시간 실행되는 서버에 배포합니다: virtual machine where this isn't an issue.