メインコンテンツへ移動

Mastra を AWS Lambda にデプロイする

Docker コンテナと AWS Lambda Web Adapter を使用して、Mastra アプリケーションを AWS Lambda にデプロイします。この方法では、Mastra サーバーをコンテナ化された Lambda Function として自動スケーリングさせます。

情報

このガイドでは、Mastra サーバーのデプロイについて説明します。Server Adapter または Web フレームワークを使用している場合は、そのフレームワークの通常の方法でデプロイしてください。

始める前に
始める前にへの直接リンク

次のものが必要です。

警告

AWS Lambda のファイルシステムは一時的なため、ローカルデータベースファイルは呼び出し間で失われます。LibSQLStore でローカルファイルを使用している場合は、代わりに Turso など、リモートの LibSQL 互換データベースを使用するよう設定してください。

Dockerfile を作成する
Dockerfile を作成するへの直接リンク

プロジェクトルートに Dockerfile を作成します。

Dockerfile
FROM node:22-alpine

WORKDIR /app

# Install dependencies
COPY package*.json ./
RUN npm ci

# Copy source and build Mastra
COPY src ./src
RUN npx mastra build

# Alpine compatibility for some native deps
RUN apk add --no-cache gcompat

# Add the Lambda Web Adapter
COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.9.1 /lambda-adapter /opt/extensions/lambda-adapter

# Run as non-root
RUN addgroup -g 1001 -S nodejs && \
adduser -S mastra -u 1001 && \
chown -R mastra:nodejs /app

USER mastra

# Adapter / app configuration
ENV PORT=8080
ENV NODE_ENV=production
ENV AWS_LWA_READINESS_CHECK_PATH="/api"

# Start the Mastra server
CMD ["node", ".mastra/output/index.mjs"]
注記

この Dockerfile では npm を使用します。pnpm、yarn、その他のパッケージマネージャーを使用する場合は、コマンドを適宜変更してください(たとえば npm ci は pnpm のロックファイルでは動作しません)。

Docker イメージをビルドしてプッシュする
Docker イメージをビルドしてプッシュするへの直接リンク

  1. デプロイ用の環境変数を設定します。リージョン間でリソースが表示されない問題を避けるため、すべての AWS サービス(ECR、Lambda)で同じリージョンを使用します。

    export PROJECT_NAME="your-mastra-app"
    export AWS_REGION="us-east-1"
    export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
  2. Docker イメージをビルドします。Lambda のコンテナランタイムとの互換性を確保するため、BuildKit を無効にします。

    export DOCKER_BUILDKIT=0
    docker build --platform linux/arm64 -t "$PROJECT_NAME" .
    注記

    BuildKit のデフォルトイメージ形式は、Lambda で互換性の問題を引き起こすことがあります。DOCKER_BUILDKIT=0 を設定すると、Lambda が確実に受け入れられる形式のイメージを生成する従来の Builder が使用されます。

  3. Docker イメージを保存する Amazon ECR リポジトリを作成します。

    aws ecr create-repository --repository-name "$PROJECT_NAME" --region "$AWS_REGION"
  4. Amazon ECR にログインします。

    aws ecr get-login-password --region "$AWS_REGION" | \
    docker login --username AWS --password-stdin \
    "$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com"
  5. イメージにタグを付けて ECR にプッシュします。

    docker tag "$PROJECT_NAME":latest \
    "$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$PROJECT_NAME":latest

    docker push \
    "$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$PROJECT_NAME":latest

Lambda Function を作成する
Lambda Function を作成するへの直接リンク

  1. AWS Lambda Console に移動し、Create function をクリックします。ECR リポジトリを作成したリージョンと同じリージョンが選択されていることを確認してください。

  2. Container image を選択し、Function を設定します。

    • Function name:名前(mastra-app など)を入力
    • Container image URIBrowse images をクリックし、ECR リポジトリと latest タグを選択
    • Architecturearm64 を選択

    Create function をクリックして Lambda Function を作成します。

  3. Memory と Timeout を設定します。Configuration > General configuration に移動して Edit をクリックします。

    • Memory:512 MB(アプリケーションの要件に応じて調整)
    • Timeout:1 分以上(デフォルトの 3 秒では、ほとんどの Mastra アプリケーションに短すぎます)

    Save をクリックします。

  4. 環境変数を追加します。Configuration > Environment variables に移動して Edit をクリックし、Mastra アプリケーションに必要な変数を追加します。

    • OPENAI_API_KEY:OpenAI の API キー(OpenAI を使用する場合)
    • ANTHROPIC_API_KEY:Anthropic の API キー(Anthropic を使用する場合)
    • 必要に応じて、Provider 固有のその他の API キー(LibSQL と Turso を使用する場合の TURSO_DATABASE_URLTURSO_AUTH_TOKEN など)

    Save をクリックします。

  5. 外部アクセス用の Function URL を有効にします。Configuration > Function URL に移動して Create function URL をクリックします。

    • Auth type:公開アクセスには NONE を選択
    • Additional settingsConfigure cross-origin resource sharing (CORS) にチェックを入れ、次のように設定
      • Allow origin*
      • Allow headerscontent-type(CloudFront や API Gateway などのサービスと使用する場合は x-amzn-request-context も必要)
      • Allow methods*

    Save をクリックします。

デプロイを確認する
デプロイを確認するへの直接リンク

  1. Lambda Console から Function URL をコピーし、ブラウザーで <your-function-url>/api/agents にアクセスします。Agent の一覧が JSON で表示されます。

  2. これで、Mastra エンドポイントを HTTP 経由で呼び出せます。

    警告

    本番環境では、エンドポイントを公開する前に認証を設定し、CORS のオリジンを信頼するドメインに制限してください。また、他の AWS サービスへの安全なアクセスには AWS IAM Role を使用し、機密性の高い環境変数は AWS Secrets Manager または Parameter Store に保存してください。

次のステップ
次のステップへの直接リンク

このガイドでは、Mastra を AWS Lambda にデプロイするためのクイックスタートを説明しました。本番ワークロードでは、Lambda Function の CloudWatch モニタリングを有効にし、分散 Trace 用に AWS X-Ray を設定し、安定したパフォーマンスを得るためにプロビジョニング済み同時実行を設定することを検討してください。