> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Mastra を AWS Lambda にデプロイする Docker コンテナと [AWS Lambda Web Adapter](https://github.com/awslabs/aws-lambda-web-adapter) を使用して、Mastra アプリケーションを AWS Lambda にデプロイします。この方法では、Mastra サーバーをコンテナ化された Lambda Function として自動スケーリングさせます。 > **情報:** このガイドでは、[Mastra サーバー](https://mastra.zisheng.pro/ja/docs/server/mastra-server)のデプロイについて説明します。[Server Adapter](https://mastra.zisheng.pro/ja/docs/server/server-adapters) または [Web フレームワーク](https://mastra.zisheng.pro/ja/docs/deployment/web-framework)を使用している場合は、そのフレームワークの通常の方法でデプロイしてください。 ## 始める前に 次のものが必要です。 - [Mastra アプリケーション](https://mastra.zisheng.pro/ja/guides/getting-started/quickstart) - Lambda、ECR、IAM の権限を持つ [AWS アカウント](https://aws.amazon.com/) - インストール済みの **[AWS CLI](https://aws.amazon.com/cli/)**:`aws configure` を実行して認証します - インストールされ、実行中の **[Docker](https://www.docker.com/)** > **警告:** AWS Lambda のファイルシステムは一時的なため、ローカルデータベースファイルは呼び出し間で失われます。[LibSQLStore](https://mastra.zisheng.pro/ja/reference/storage/libsql) でローカルファイルを使用している場合は、代わりに [Turso](https://turso.tech/) など、リモートの LibSQL 互換データベースを使用するよう設定してください。 ## 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 イメージをビルドしてプッシュする 1. デプロイ用の環境変数を設定します。リージョン間でリソースが表示されない問題を避けるため、すべての AWS サービス(ECR、Lambda)で同じリージョンを使用します。 ```bash 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 を無効にします。 ```bash export DOCKER_BUILDKIT=0 docker build --platform linux/arm64 -t "$PROJECT_NAME" . ``` > **注記:** BuildKit のデフォルトイメージ形式は、Lambda で互換性の問題を引き起こすことがあります。`DOCKER_BUILDKIT=0` を設定すると、Lambda が確実に受け入れられる形式のイメージを生成する従来の Builder が使用されます。 3. Docker イメージを保存する Amazon ECR リポジトリを作成します。 ```bash aws ecr create-repository --repository-name "$PROJECT_NAME" --region "$AWS_REGION" ``` 4. Amazon ECR にログインします。 ```bash 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 にプッシュします。 ```bash 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 を作成する 1. [AWS Lambda Console](https://console.aws.amazon.com/lambda/) に移動し、**Create function** をクリックします。ECR リポジトリを作成したリージョンと同じリージョンが選択されていることを確認してください。 2. **Container image** を選択し、Function を設定します。 - **Function name**:名前(`mastra-app` など)を入力 - **Container image URI**:**Browse images** をクリックし、ECR リポジトリと `latest` タグを選択 - **Architecture**:**arm64** を選択 **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_URL` と `TURSO_AUTH_TOKEN` など) **Save** をクリックします。 5. 外部アクセス用の Function URL を有効にします。**Configuration** > **Function URL** に移動して **Create function URL** をクリックします。 - **Auth type**:公開アクセスには **NONE** を選択 - **Additional settings** で **Configure cross-origin resource sharing (CORS)** にチェックを入れ、次のように設定 - **Allow origin**:`*` - **Allow headers**:`content-type`(CloudFront や API Gateway などのサービスと使用する場合は `x-amzn-request-context` も必要) - **Allow methods**:`*` **Save** をクリックします。 ## デプロイを確認する 1. Lambda Console から **Function URL** をコピーし、ブラウザーで `/api/agents` にアクセスします。Agent の一覧が JSON で表示されます。 2. これで、Mastra エンドポイントを HTTP 経由で呼び出せます。 > **警告:** 本番環境では、エンドポイントを公開する前に[認証](https://mastra.zisheng.pro/ja/docs/server/auth)を設定し、CORS のオリジンを信頼するドメインに制限してください。また、他の AWS サービスへの安全なアクセスには AWS IAM Role を使用し、機密性の高い環境変数は AWS Secrets Manager または Parameter Store に保存してください。 ## 次のステップ このガイドでは、Mastra を AWS Lambda にデプロイするためのクイックスタートを説明しました。本番ワークロードでは、Lambda Function の [CloudWatch モニタリング](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html)を有効にし、分散 Trace 用に [AWS X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html) を設定し、安定したパフォーマンスを得るために[プロビジョニング済み同時実行](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html)を設定することを検討してください。 ## 関連項目 - [Deployment の概要](https://mastra.zisheng.pro/ja/docs/deployment/overview) - [Mastra サーバー](https://mastra.zisheng.pro/ja/docs/server/mastra-server) - [Server Adapter](https://mastra.zisheng.pro/ja/docs/server/server-adapters) - [AWS Lambda ドキュメント](https://docs.aws.amazon.com/lambda/) - [AWS Lambda Web Adapter](https://github.com/awslabs/aws-lambda-web-adapter)