hah*_*aha 10 deployment reactjs aws-lambda next.js
我正在使用 next.js9 开发一个项目。我有一些问题和疑问。我想将我的 next.js 9 项目部署到 AWS lambda。
官方 next.js 9 文档告诉我“页面目录中的每个页面都变成了无服务器 lambda。” 上面的库不像文档那样工作。如何从每个页面部署到每个 lambda?
什么是合理的部署方案?请在生产级别使用nextjs 9的人帮助我。
我正在使用这个库https://github.com/danielcondemarin/serverless-next.js。它运行良好。但所有选项都是固定的。我想将我的项目部署到东京地区。但我不知道如何更改区域。始终部署到弗吉尼亚北部地区。我已经检查过 doc 但我认为他们没有选择。并像这个 yml 文件一样进行测试。
无服务器.yml
myNextApplication:
component: serverless-next.js
region: ap-northeast-1
Run Code Online (Sandbox Code Playgroud)
但它不起作用。如果有人知道如何使用 serverless-next.js 更改区域。请帮我。
先感谢您
有一个 webpack 插件,可以帮助next-aws-lambda-webpack-plugin。
将 Next.js 部署到 AWS Lambda 需要一个抽象层,因为 Next.js 最初旨在用作 Node.js 服务器。
Vercel 使用一个叫做的东西来实现这一点now-node-bridge,它基本上在 Lambda 函数内启动一个本地 Node.js http 服务器,然后从 Lambda 调用事件创建一个请求。
这是一个简化的流程图,当您针对部署在 Vercel 上的 Next.js 应用程序运行请求时会发生什么:

虽然 Next.js 是开源的,但在 Vercel 上进行从 HTTP 请求到 Lambda 事件的转换的代理不是。这就是为什么将无服务器部署到 AWS 仍然是一项棘手的任务,而 Vercel 在内部也使用 AWS Lambda 进行部署。
虽然 Serverless 框架目前可能仍然是最受欢迎的选择,但我为此任务创建了一个简单易用的Terraform模块。Terraform 是一个开源 CLI 应用程序,用于管理 AWS 等提供商中的云资源。
安装 Terraform 后,它就像这样简单:
转到您的 Next.js 应用程序并安装此帮助程序:
npm i -D tf-next # npm or
yarn add -D tf-next # yarn
Run Code Online (Sandbox Code Playgroud)
将以下脚本添加tf-next到您package.json的 Next.js 应用程序中:
{
...
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start",
+ "tf-next": "tf-next build"
}
}
...
Run Code Online (Sandbox Code Playgroud)
main.tf在您的 旁边创建一个具有以下内容的新内容package.json:
# main.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
}
# Main region where the resources should be created in
provider "aws" {
region = "us-east-1"
}
module "tf_next" {
source = "dealmore/next-js/aws"
}
Run Code Online (Sandbox Code Playgroud)
创建一个AWS 访问密钥并在终端中公开它:
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Run Code Online (Sandbox Code Playgroud)
使用 terraform 构建应用程序并将其部署到 AWS:
terraform init # Only needed on the first time running Terraform
yarn tf-next # Build the next.js app
terraform plan # See what resources Terraform will create
terraform apply # Deploy the App to your AWS account
Run Code Online (Sandbox Code Playgroud)
您可以将 中的区域更改为支持Lambda 的main.tf任何 AWS 区域,您定义的区域是您的 Lambda 部署到的区域。
有关更多信息,请参阅 GitHub 页面:GitHub 上的AWS Next.js Terraform 模块
| 归档时间: |
|
| 查看次数: |
7607 次 |
| 最近记录: |