دوال Serverless بلغة Swift: AWS Lambda من الألف إلى الياء

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في Serverless باستخدام Swift مع AWS Lambda



أصبحت بنية Serverless معيارًا في التطوير السحابي الحديث. بفضل AWS Lambda، يمكن للمطورين تشغيل التعليمات البرمجية دون إدارة الخوادم، مع الدفع فقط مقابل وقت التنفيذ الفعلي. حتى وقت قريب، كانت لغة Swift بعيدة عن عالم Serverless، ولكن مع ظهور الدعم الرسمي لـ Swift على AWS Lambda، تغير الوضع جذريًا.



في هذه المقالة، سنستعرض دورة العمل الكاملة لدوال Serverless بلغة Swift: بدءًا من إعداد البيئة وصولاً إلى النشر في بيئة الإنتاج. ستتعلم كيفية استخدام خبرتك في تطوير iOS/macOS لإنشاء حلول سحابية فعالة.



لماذا Swift لـ Serverless؟



Swift ليست مجرد لغة للتطبيقات المحمولة. نقاط قوتها تجعلها خيارًا ممتازًا لـ Serverless:



  • أمان الأنواع — يكتشف المترجم الأخطاء في مرحلة البناء
  • أداء عالٍ — التعليمات البرمجية الأصلية تعمل أسرع من اللغات المفسرة
  • بناء جملة حديث — سهولة قراءة التعليمات البرمجية وصيانتها
  • قاعدة تعليمات برمجية مشتركة — يمكن إعادة استخدام النماذج والمنطق من مشاريع iOS/macOS


لتشغيل Swift على AWS Lambda، يتم استخدام الصورة الرسمية Amazon Linux 2 مع Swift 5.10 المثبت مسبقًا. وهذا يضمن التوافق الكامل وأقل وقت بدء تشغيل بارد.



إعداد البيئة وإنشاء أول دالة



تثبيت الأدوات اللازمة



قبل البدء، تأكد من تثبيت ما يلي:



  • Swift 5.10 أو أحدث
  • Docker (للبناء في بيئة Linux)
  • AWS CLI مع بيانات الاعتماد (credentials) المهيأة
  • Homebrew (لنظام macOS)


# تثبيت Swift عبر Homebrewbrew install swift

# التحقق من الإصدارswift --version

# تثبيت AWS CLIbrew install awscli

# إعداد AWSaws configure


إنشاء مشروع Swift Package



لننشئ حزمة Swift قابلة للتنفيذ جديدة:



mkdir MyLambdaFunctioncd MyLambdaFunctionswift package init --type executable


الآن، سنقوم بتحديث ملف Package.swift للعمل مع AWS Lambda Runtime:



// swift-tools-version:5.10import PackageDescription

let package = Package( name: "MyLambdaFunction", platforms: [.macOS(.v13)], dependencies: [ .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0") ], targets: [ .executableTarget( name: "MyLambdaFunction", dependencies: [ .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime") ]), .testTarget( name: "MyLambdaFunctionTests", dependencies: ["MyLambdaFunction"]), ])


كود دالة المعالج



سنستبدل محتوى ملف Sources/MyLambdaFunction/main.swift:



import AWSLambdaRuntime

// تعريف هيكل الطلبstruct Request: Codable { let name: String let age: Int}

// تعريف هيكل الاستجابةstruct Response: Codable { let message: String let isAdult: Bool}

// المعالج الرئيسي@mainstruct MyHandler: SimpleLambdaHandler { typealias Event = Request typealias Output = Response

func handle(_ event: Request, context: LambdaContext) async throws -> Response { let isAdult = event.age >= 18 return Response( message: "مرحبًا، \\(event.name)!", isAdult: isAdult ) }}


البناء والنشر على AWS Lambda



البناء لنظام Linux



نظرًا لأن Swift على macOS يقوم ببناء ملفات ثنائية لنظام macOS، نحتاج إلى استخدام Docker:



# إنشاء Dockerfilecat << EOF > DockerfileFROM swift:5.10-amazonlinux2 AS buildWORKDIR /appCOPY . .RUN swift build -c release --                

المدونات

توصيات الكتب