You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Amplify部署NestJS后端?需配置何种amplify.yml?

可行方案与amplify.yml配置指南

完全可以在AWS Amplify上部署NestJS后端,Amplify支持Node.js生态的应用部署,而NestJS基于Node.js,适配性良好。你可以选择单独创建Amplify应用部署后端,或者将前后端放在同一仓库,通过Amplify多应用部署同时托管前后端,以下是具体方案和配置:

一、核心部署前提

  1. 确保NestJS项目的package.json中包含编译命令:"build": "nest build",用于将TypeScript代码编译到dist目录。
  2. 修改NestJS的main.ts,让服务监听0.0.0.0并读取环境变量端口(Amplify会自动分配端口),同时配置CORS允许前端域名访问:
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.enableCors({
    origin: "你的前端Amplify域名",
    credentials: true,
  });
  const port = process.env.PORT || 3000;
  await app.listen(port, "0.0.0.0");
}
bootstrap();

二、单独部署NestJS后端的amplify.yml配置

如果后端是独立仓库,使用以下配置文件:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm install
    build:
      commands:
        - npm run build # 编译TypeScript到dist目录
  artifacts:
    baseDirectory: dist
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
backend:
  phases:
    deploy:
      commands:
        - npm start # 启动NestJS服务

三、前后端同仓库的amplify.yml配置

如果前后端在同一仓库(例如前端在client文件夹,后端在server文件夹),使用多应用部署配置:

version: 1
applications:
  # 前端React应用配置
  - frontend:
      phases:
        preBuild:
          commands:
            - cd client && npm install
        build:
          commands:
            - cd client && npm run build
      artifacts:
        baseDirectory: client/build
        files:
          - '**/*'
      cache:
        paths:
          - client/node_modules/**/*
    appRoot: client

  # 后端NestJS应用配置
  - backend:
      phases:
        preBuild:
          commands:
            - cd server && npm install
        build:
          commands:
            - cd server && npm run build
      artifacts:
        baseDirectory: server/dist
        files:
          - '**/*'
      cache:
        paths:
          - server/node_modules/**/*
    appRoot: server
    env:
      variables:
        PORT: 3000

四、额外注意事项

  • 后端所需的环境变量(如数据库连接字符串、密钥等),可在Amplify控制台的「环境变量」页面添加,NestJS通过process.env.变量名读取即可。
  • 部署完成后,Amplify会为后端分配独立域名,可在控制台获取,用于前端接口调用。
  • 若需自定义域名,可在Amplify控制台的「域名管理」中配置,支持前后端域名统一或分开设置。

内容的提问来源于stack exchange,提问作者Devlydexter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:10:29