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/のようなトップレベルのフォルダーの下にある可能性のあるすべての資産を含めることをお勧めします。オープンネクストドキュメントの詳細については、こちらをご覧ください。 コンストラクトハブで利用可能。
以下を含むここでCDKアプリの例を参照してください
私たちは、サーバーレススタックの不一致の#オープンネクストチャンネルにいます。
サーバー側のレンダリングとAPIサポートを使用して、NextJS静的サイトを展開します。 AWSラムダとクラウドフロントを使用します。
出力トレースを使用して最小サーバーと静的ファイルを生成する新しい(次の12以降)スタンドアロン出力モードがあります。このスタンドアロンサーバーは、SSR、API、およびルーティングを処理するクラウドフロントディストリビューションとラムダハンドラーに変換できます。
CloudFrontのデフォルトオリジンは、最初にS3を静的ファイルをチェックし、Lambda関数URLを使用してHTTPオリジンに戻ります。
このアプローチは、ESM構成、ミドルウェア、Next-Auth、React Serverコンポーネント(「AppDir」)などの新しいNextJS機能と最も互換性があります。
未成年の @ServerLess-NextJSプロジェクトは、新しい機能の使用を防ぐ、削除されたserverless NextJSビルドターゲットを使用します。このコンストラクトは、新しいstandalone出力ビルドと、Lambda機能URLやフォールバックの起源などの新しいAWS機能を使用するために作成されました。
CDKにサーバーレスアプリケーションを構築している場合は、サーバーレススタックとそのNextJSSiteコンストラクトを検討して、開発者エクスペリエンスを改善するために見ることができます。
Open-Nextの上に構築されており、CDK-NextJS-Standaloneの元のコアを使用して部分的に構築されました。
貢献を参照してください。
大きな変更を参照してください。