AWS CDK를 사용하여 NextJS 앱을 배포하려는 CDK 구성. 지원되는 Nextjs 버전 :> = 12.3.0+ (13.0.0+ 포함)
독립형 출력 빌드 모드를 사용합니다.
import { App , Stack , StackProps } from 'aws-cdk-lib' ;
import { Construct } from 'constructs' ;
import { Nextjs } from 'cdk-nextjs-standalone' ;
class WebStack extends Stack {
constructor ( scope : Construct , id : string , props ?: StackProps ) {
super ( scope , id , props ) ;
const nextjs = new Nextjs ( this , 'Nextjs' , {
nextjsPath : './web' , // relative path from your project root to NextJS
} ) ;
new CfnOutput ( this , "CloudFrontDistributionDomain" , {
value : nextjs . distribution . distributionDomain ,
} ) ;
}
}
const app = new App ( ) ;
new WebStack ( app , 'web' ) ; public/ 폴더의 각 최상층 파일 또는 디렉토리에 대해 캐시 동작이 생성됩니다. Cloudfront의 소프트 한계는 분포 당 25 개의 캐시 동작입니다. 따라서 public/static/ 과 같은 최고 수준의 폴더 아래에있을 수있는 모든 자산을 포함하는 것이 좋습니다. 여기에서 Open-Next 문서에서 자세한 내용을 알아보십시오. Construct Hub에서 사용할 수 있습니다.
여기를 포함한 CDK 앱 예제를 참조하십시오.
우리는 Serverless Stack Discord의 #Open-Next 채널에 있습니다.
서버 측 렌더링 및 API 지원이 포함 된 NextJS 정적 사이트를 배포합니다. AWS Lambda 및 Cloudfront를 사용합니다.
출력 추적을 사용하여 최소 서버 및 정적 파일을 생성하는 새로운 (다음 12 이후) 독립형 출력 모드가 있습니다. 이 독립형 서버는 SSR, API 및 라우팅을 처리하는 Cloudfront 배포 및 Lambda 핸들러로 변환 할 수 있습니다.
Cloudfront 기본 원점은 먼저 정적 파일을 확인하고 Lambda 함수 URL을 사용하여 HTTP 원점으로 돌아갑니다.
이 접근법은 ESM 구성, 미들웨어, Next-Auth 및 React Server 구성 요소 ( "AppDir")와 같은 새로운 NextJS 기능과 가장 호환됩니다.
비 인정되지 않은 @serverless-nextjs 프로젝트는 더 이상 사용되지 않은 serverless Nextjs 빌드 대상을 사용하여 새로운 기능의 사용을 방지합니다. 이 구성은 새로운 standalone 출력 빌드 및 Lambda Function URL 및 폴백 기원과 같은 최신 AWS 기능을 사용하도록 만들어졌습니다.
CDK에서 서버리스 애플리케이션을 구축하는 경우 Serverless Stack 및 NextJssite Construct를 개선 할 수 있습니다.
Open-Next 위에 제작되었으며 CDK-NextJS-Standalone의 원래 코어를 사용하여 부분적으로 제작되었습니다.
기여를보십시오.
주요 변경 사항을 참조하십시오.