دوال Serverless بلغة Swift في AWS Lambda: دليل شامل

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

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

ابدأ الدورة

مقدمة في دوال Serverless بلغة Swift مع AWS Lambda

\n\n

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

\n\n

تتيح دوال Serverless تشغيل الكود دون إدارة الخوادم. أنت تدفع فقط مقابل وقت التنفيذ، ويتم التوسع تلقائيًا. يدعم AWS Lambda لغة Swift من خلال صور runtime الرسمية، مما يجعله خيارًا ممتازًا لمهام backend في نظام Apple البيئي.

\n\n

تحضير البيئة لتطوير Swift على AWS Lambda

\n\n

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

\n\n

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

\n\n
    \n
  • Swift 5.9+ — يمكن تنزيله من swift.org
  • \n
  • Docker — للبناء في بيئة Linux
  • \n
  • AWS CLI — للنشر
  • \n
  • Xcode 15+ (اختياري، لنظام macOS)
  • \n
\n\n

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

\n\n

لننشئ Swift Package جديدًا مع دعم AWS Lambda:

\n\n
mkdir MyLambdaFunction\ncd MyLambdaFunction\nswift package init --type executable
\n\n

افتح Package.swift وأضف التبعية إلى AWSLambdaRuntime:

\n\n
// swift-tools-version: 5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "MyLambdaFunction",\n    platforms: [.macOS(.v13)],\n    dependencies: [\n        .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "MyLambdaFunction",\n            dependencies: [\n                .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime")\n            ]\n        )\n    ]\n)
\n\n

كتابة أول دالة Serverless بلغة Swift

\n\n

الهيكل الأساسي لدالة Lambda

\n\n

لننشئ ملف Sources/MyLambdaFunction/main.swift بالمحتوى التالي:

\n\n
import AWSLambdaRuntime\nimport AWSLambdaEvents\n\n// تعريف هيكل الطلب\nstruct GreetingRequest: Codable {\n    let name: String\n}\n\n// تعريف هيكل الرد\nstruct GreetingResponse: Codable {\n    let message: String\n    let timestamp: String\n}\n\n// المعالج الرئيسي\n@main\nstruct MyLambdaHandler: SimpleLambdaHandler {\n    typealias Event = GreetingRequest\n    typealias Output = GreetingResponse\n    \n    func handle(_ event: GreetingRequest, context: LambdaContext) async throws -> GreetingResponse {\n        let dateFormatter = DateFormatter()\n        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"\n        \n        return GreetingResponse(\n            message: "مرحبًا، \\(event.name)! أهلاً بك في عالم Serverless بلغة Swift.",\n            timestamp: dateFormatter.string(from: Date())\n        )\n    }\n}
\n\n

معالجة طلبات HTTP (API Gateway)

\n\n

للعمل مع API Gateway، استخدم APIGatewayV2Request:

\n\n
import AWSLambdaRuntime\nimport AWSLambdaEvents\n\n@main\nstruct HTTPHandler: SimpleLambdaHandler {\n    typealias Event = APIGatewayV2Request\n    typealias Output = APIGatewayV2Response\n    \n    func handle(_ event: APIGatewayV2Request, context: LambdaContext) async throws -> APIGatewayV2Response {\n        // الحصول على البيانات من معاملات query\n        let name = event.queryStringParameters?["name"] ?? "ضيف"\n        \n        let responseBody = """\n        {\n            "message": "Hello, \\(name)!",\n            "path": "\\(event.rawPath)"\n        }\n        """\n        \n        return APIGatewayV2Response(\n            statusCode: .ok,\n                

المدونات

توصيات الكتب