【发布时间】:2022-04-08 00:39:35
【问题描述】:
我想使用 AWS CDK 在 AWS 上部署 NextJS 以实现 POC,并且正在寻找选项。在 NextJS 文档中,它说我们可以创建一个实例并运行npm run build && npm start,它将为我们启动服务。但是,这并不是最优化的部署方式。
如何使用 AWS 做同样的事情?如何通过 Cloudfront CDN 提供静态资产和页面,并通过 Lambda 或 ECS 提供服务器端呈现的页面和 API?我可以按照分步指南来拆分构建文件吗?
我探索的其他选项
- AWS Amplify:由于它是一项高级服务,我觉得自己做这一切会便宜很多,并且在 CDK 中给我更多的灵活性(我不确定 Amplify 如何在幕后工作以部署 nextjs 资产S3 + Cloudfront + Lambda 堆栈)
- 无服务器框架:有一个插件可以部署nextjs。但是,我想完全控制部署并且不想依赖任何外部框架。想要使用 AWS CDK 以本机方式完成。
使用 AWS CDK 本地执行此操作的任何指针都会有所帮助。谢谢。
【问题讨论】:
-
我一直在 AWS amplify 上部署我的 Next.js 应用程序,它运行良好。构建/部署时间比 Vercel 长一点,我觉得 Amplify 上的日志记录与 Vercel 相比有所欠缺,但我发现它是一个易于使用且很好的替代方案
-
是的。放大很容易。但是,它很贵。此外,我们必须等待 Amplify 支持更新版本的 NextJS(我认为目前它支持 10.x)。因此,我想通过 AWS Cloudformation 或 CDK 自己完成 Amplify 所做的所有事情,而无需使用 AWS Amplify CDK 构造。
-
我不能说它在 Next 12 中的表现如何,我使用的是最新版本的 Next,但没有使用许多新功能,一个是新的编译器。但是我正在尝试更改为 Vercel 的案例,在其上部署 Next 应用程序真是太好了
-
小心放大,就像其他“罐装”AWS 服务(例如 Beanstalk)一样,您无法配置/自定义专业项目所需的许多区域。例如,我上次使用它时,您的路由 + 重写选项有限,而且它们不支持查询字符串。除了非常基本的博客/静态网站用例之外,我不推荐它。
标签: amazon-web-services next.js aws-cdk vercel