وظائف Serverless بلغة TypeScript: AWS Lambda من الألف إلى الياء

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

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

ابدأ الدورة

مقدمة في وظائف Serverless بلغة TypeScript مع AWS Lambda

\n\n

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

\n\n

وظائف Serverless مثالية للخدمات المصغرة، ومعالجة الأحداث، وخطافات الويب، والمهام الخلفية. يجعل TypeScript الكود أكثر أمانًا وقابلية للتنبؤ، وهو أمر بالغ الأهمية لحلول الإنتاج.

\n\n

1. إعداد البيئة لـ AWS Lambda بلغة TypeScript

\n\n

قبل البدء، قم بتثبيت الأدوات اللازمة. ستحتاج إلى Node.js (الإصدار 18+) و npm و AWS CLI.

\n\n

1.1. تثبيت التبعيات

\n\n
npm init -y\nnpm install -D typescript @types/node @aws-sdk/client-lambda\nnpm install aws-lambda @types/aws-lambda\n
\n\n

1.2. تكوين TypeScript

\n\n

أنشئ ملف tsconfig.json مع إعدادات Lambda:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "lib": ["ES2020"],\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true,\n    "forceConsistentCasingInFileNames": true,\n    "resolveJsonModule": true,\n    "declaration": true,\n    "declarationMap": true,\n    "sourceMap": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist"]\n}\n
\n\n

1.3. تثبيت AWS CLI

\n\n

قم بتنزيل وتكوين AWS CLI من المصدر الرسمي. بعد التثبيت، نفذ:

\n\n
aws configure\n
\n\n

أدخل Access Key ID و Secret Access Key والمنطقة (مثل us-east-1) وتنسيق الإخراج (json).

\n\n

2. إنشاء أول وظيفة serverless بلغة TypeScript

\n\n

يجب أن يبدو هيكل المشروع كالتالي:

\n\n
my-lambda-project/\n├── src/\n│   └── handler.ts\n├── dist/\n├── tsconfig.json\n├── package.json\n└── .gitignore\n
\n\n

2.1. معالج Lambda الأساسي

\n\n

أنشئ ملف src/handler.ts مع وظيفة بسيطة:

\n\n
import { Context, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';\n\ninterface HelloResponse {\n  message: string;\n  timestamp: string;\n  eventType: string;\n}\n\nexport const handler = async (\n  event: APIGatewayProxyEvent,\n  context: Context\n): Promise<APIGatewayProxyResult> => {\n  console.log('Event:', JSON.stringify(event, null, 2));\n  console.log('Context:', context);\n\n  const response: HelloResponse = {\n    message: 'Hello from AWS Lambda with TypeScript!',\n    timestamp: new Date().toISOString(),\n    eventType: event.httpMethod || 'UNKNOWN'\n  };\n\n  return {\n    statusCode: 200,\n    headers: {\n      'Content-Type': 'application/json',\n      'Access-Control-Allow-Origin': '*'\n    },\n    body: JSON.stringify(response)\n  };\n};\n
\n\n

2.2. ترجمة TypeScript

\n\n

أضف البرامج النصية في package.json:

\n\n
"scripts": {\n  "build": "tsc",\n  "watch": "tsc --watch",\n  "clean": "rm -rf dist"\n}\n
\n\n

نفذ عملية البناء:

\n\n
npm run build\n
\n\n

تحقق من ظهور ملف handler.js في مجلد dist.

\n\n

3. نشر وظيفة Lambda على AWS

\n\n

هناك عدة طرق للنشر. سننظر في أبسطها - عبر AWS CLI.

\n\n

3.1. حزم الوظيفة

\n\n

أنشئ أرشيف ZIP مع الكود:

\n\n
cd dist\nzip -r ../function.zip .\ncd ..\n
\n\n

3.2. إنشاء وظيفة Lambda

\n\n

نفذ أمر AWS CLI:

\n\n
aws lambda create-function \\\n  --function-name hello-typescript \\\n  --runtime nodejs18.x \\\n  --role arn:aws:iam::Y                

المدونات

توصيات الكتب