如何在AWS Amplify部署NestJS后端?需配置何种amplify.yml?
可行方案与amplify.yml配置指南
完全可以在AWS Amplify上部署NestJS后端,Amplify支持Node.js生态的应用部署,而NestJS基于Node.js,适配性良好。你可以选择单独创建Amplify应用部署后端,或者将前后端放在同一仓库,通过Amplify多应用部署同时托管前后端,以下是具体方案和配置:
一、核心部署前提
- 确保NestJS项目的
package.json中包含编译命令:"build": "nest build",用于将TypeScript代码编译到dist目录。 - 修改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
相关产品推荐
相关产品推荐

