بناء CDK لنشر تطبيق NEXTJS باستخدام AWS 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 هنا بما في ذلك:
نحن في القناة المفتوحة #على Discord Serverless Stack.
ينشر موقع Static NextJS مع تقديم جانب الخادم ودعم API. يستخدم AWS Lambda و CloudFront.
يوجد وضع الإخراج المستقل الجديد (منذ 12) مستقل يستخدم تتبع الإخراج لإنشاء خادم بسيط وملفات ثابتة. يمكن تحويل هذا الخادم المستقل إلى توزيع CloudFront ومعالج Lambda الذي يتعامل مع SSR و API والتوجيه.
يتحقق الأصل الافتراضي CloudFront أولاً من S3 للملفات الثابتة ويعود إلى أصل HTTP باستخدام عنوان URL لدالة Lambda.
هذا النهج يتوافق مع ميزات NextJS الجديدة مثل تكوين ESM ، والبرامج الوسيطة ، ومكونات خادم القادمين ، وتفاعل الخادم ("appdir").
يستخدم مشروع @nextjs غير المقيد serverless الهدف الذي تم إهماله في NextJs Build الذي يمنع استخدام الميزات الجديدة. تم إنشاء هذا البناء لاستخدام بناء الإخراج standalone الجديد وميزات AWS الأحدث مثل عناوين URL لوظيفة Lambda وأصول العودة.
قد ترغب في إلقاء نظرة على المكدس بدون خادم وبناء NEXTJSSITE لتجربة مطور محسّنة إذا كنت تقوم بإنشاء تطبيقات بدون خادم على CDK.
تم تصميمه فوق القمة المفتوحة ، والذي تم بناؤه جزئيًا باستخدام النواة الأصلية لـ CDK-NextJS-Standalone.
انظر المساهمة.
انظر التغييرات الرئيسية.