إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يتطلب نقل عبء عمل بدون خادم يستخدم Amazon Web Services (AWS) Lambda إلى دالات Azure تخطيطا وتنفيذا دقيقين. توفر هذه المقالة إرشادات أساسية لمساعدتك:
- تنفيذ عملية اكتشاف على حمل العمل الحالي.
- تعرف على كيفية تنفيذ أنشطة الترحيل الرئيسية مثل التخطيط المسبق وتقييم حمل العمل.
- تقييم وتحسين حمل العمل الذي تم ترحيله.
النطاق
تصف هذه المقالة ترحيل مثيل AWS Lambda إلى دالات Azure.
لا تتناول هذه المقالة:
- ترحيل إلى حل استضافة الحاويات الخاص بك، مثل من خلال Azure Container Apps.
- استضافة حاويات AWS Lambda في Azure.
- Azure أساسيات من أساليب التبني من قبل منظمتك، مثل Azure مناطق الهبوط أو مواضيع أخرى متناولة في Cloud Adoption Framework منهجية الانتقال.
انتقل باستخدام GitHub Copilot ومهارات Azure
GitHub Copilot مع Azure Skills يحتوي على دعم مدمج لتوجيه الهجرة من AWS Lambda إلى دالات Azure.
يمكنك استخدام Copilot لأتمتة معظم خطوات الترحيل بشكل تفاعلي، مع استخدام هذا المقال كمرجع لقرارات البنية، والتحقق، وجاهزية الإنتاج.
لاستخدام مهارات Azure في GitHub Copilot (بتقنية VS Code أو Copilot CLI)، اتبع الخطوات التالية:
المتطلبات المسبقه
- Node.js 18+ - مطلوب لخوادم MCP (تحميل Node.js)
- الوصول إلى اشتراك Azure لإنشاء واختبار تطبيق الوظائف المنقولة الخاص بك.
-
Azure CLI (
az) تم تثبيته والتحقق منه (تثبيت Azure CLI) (az login) -
Azure تم تثبيت ومصادقة مطور CLI (
azd) (تثبيت Azure المطور CLI) (azd auth login)
بالنسبة ل GitHub Copilot CLI
- تثبيت Copilot CLI
- أضف مصدر السوق (للمرة الأولى فقط):
/plugin marketplace add microsoft/azure-skills - تثبيت الإضافة:
/plugin install azure@azure-skills - بعد التثبيت، أعد تحميل خوادم MCP:
/mcp reload - التحقق من التثبيت:
يجب أن ترى خادم Azure MCP المدرج ويعمل./mcp status
For تعليمة Visual Studio برمجية
-
تثبيت امتداد Azure MCP من سوق كود VS (معرف الامتداد:
ms-azuretools.vscode-azure-mcp-server). - يقوم الإضافة بتثبيت إضافة مرافقة تلقائيا، GitHub Copilot for Azure، والتي تحتوي على مهارات Azure.
- افتح Copilot Chat (Ctrl+Shift+I / cmd+Shift+I).
- تأكد من أنك في وضع الوكيل (وليس وضع السؤال أو التحرير).
- افتح لوحة الأوامر (Ctrl+Shift+P) -> ابحث عن "MCP" -> تحقق من إدراج الخوادم وتشغيلها.
استخدم هذا الإشعار لبدء ومتابعة سير عمل الترحيل في Copilot:
Help me migrate my Lambda app to Azure Functions
يوجه هذا التوجيه الترحيل على مراحل: أولا إنشاء تقرير تقييم مفصل، ثم ترحيل الكود والتكوين، وأخيرا بناء الأصول المطلوبة للبنية التحتية كرمز (IaC) لنشرها إلى Azure.
مقارنة الوظائف
تربط هذه المقالة ميزات AWS Lambda بمعادلات دالات Azure للمساعدة في ضمان التوافق.
مهم
قد تختار تضمين التحسين في خطة الهجرة الخاصة بك، لكن Microsoft توصي بعملية من خطوتين. قم أولا بترحيل وظائف "الإشابه" إلى الإعجاب، ثم قيم فرص التحسين على Azure.
يجب أن تكون جهود التحسين مستمرة ويتم تشغيلها من خلال عمليات التحكم في التغيير الخاصة بفريق حمل العمل. الترحيل الذي يضيف المزيد من القدرات أثناء الترحيل ينطوي على مخاطر ويوسع العملية دون داع.
منظور حمل العمل
تركز هذه المقالة على كيفية نقل عبء عمل AWS Lambda إلى دالات Azure والتبعيات الشائعة لأحمال العمل بدون خوادم. قد تتضمن هذه العملية العديد من الخدمات لأن أحمال العمل تتضمن العديد من الموارد والعمليات لإدارة تلك الموارد. للحصول على استراتيجية شاملة، يجب عليك الجمع بين التوصيات المقدمة في هذه المقالة مع خطة أكبر تتضمن المكونات والعمليات الأخرى في حمل العمل الخاص بك.
تنفيذ عملية اكتشاف على حمل العمل الحالي
الخطوة الأولى هي إجراء عملية اكتشاف مفصلة لتقييم حمل عمل AWS Lambda الحالي. الهدف هو فهم ميزات وخدمات AWS التي يعتمد عليها حمل العمل الخاص بك. قم بتجميع مخزون شامل لوظائف AWS Lambda باستخدام أدوات AWS مثل SDKs الخاصة بالخدمة وواجهات برمجة التطبيقات وCloudTrail وAWS CLI لتقييم حمل العمل على AWS. يجب أن تفهم الجوانب الرئيسية التالية لمخزون AWS Lambda الخاص بك:
- حالات الاستخدام
- تكوينات
- إعدادات الأمان والشبكات
- آليات الأدوات والمراقبة والتسجيل والمراقبة
- التبعيات
- أهداف الموثوقية وحالة الموثوقية الحالية
- تكلفة الملكية
- أهداف الأداء والأداء الحالي
تنفيذ تخطيط ما قبل الهجرة
قبل أن تبدأ في ترحيل عبء العمل، يجب عليك ربط ميزات AWS Lambda ب دالات Azure لضمان التوافق وتطوير خطة ترحيل. ثم يمكنك تحديد أحمال العمل الرئيسية لإثبات المفهوم.
تحتاج أيضا إلى خريطة خدمات AWS التي تعتمد عليها لامبدا إلى التبعيات المكافئة في Azure.
Map AWS Lambda Features to دالات Azure
تقارن الجداول التالية مفاهيم AWS Lambda ومواردها وخصائصها مع نظيراتها على دالات Azure، وتحديدا خطة استضافة Flex Consumption.
- اللغات المدعومة
- نموذج البرمجة
- مشغلات الأحداث والروابط
- الأذونات
- عنوان URL للدالة
- الشبكات
- إمكانية المراقبة والمراقبة
- التحجيم والتزامن
- الحماية من البدء البارد
- التسعير
- تخزين التعليمات البرمجية المصدر
- التطوير المحلي
- نشر
- المهلة وحدود الذاكرة
- إدارة البيانات السرية
- إدارة الحالة
- التزامن ذي الحالة
- الاختلافات والاعتبارات الأخرى
اللغات المدعومة
| لغة البرمجة | الإصدارات المدعومة من AWS Lambda | دالات Azure الإصدارات المدعومة |
|---|---|---|
| Node.js | 20, 22 | 20, 22 |
| Python | 3.9, 3.10, 3.11, 3.12, 3.13 | 3.9, 3.10, 3.11, 3.12, 3.13 |
| Java | 8, 11, 17, 21 | 8, 11, 17, 21 |
| PowerShell | غير مدعوم | 7.4 |
| .NET | .نت 8 | .NET 8، .NET 9، إطار .NET 4.8.1 |
| ياقوت | 3.2, 3.3 | المعالجات المخصصة |
| ذهب | وقت تشغيل نظام التشغيل فقط | انطلق (معاينة) |
| صدأ | وقت تشغيل نظام التشغيل فقط | المعالجات المخصصة |
نموذج البرمجة
| الميزة | AWS لامدا | دالات Azure |
|---|---|---|
| أزرار التشغيل | يتكامل مع خدمات AWS الأخرى عبر مصادر الأحداث. يوفر طرقا تلقائية وبرنامجية لربط وظائف Lambda بمصادر الأحداث. | تشغيل دالة استنادا إلى أحداث معينة، مثل التحديثات في قاعدة بيانات أو رسالة جديدة في قائمة انتظار. على سبيل المثال، يتيح مشغل Azure Cosmos DB للدوال الاستجابة تلقائيا للإدخالات والتحديثات في حاوية Azure Cosmos DB. يتيح هذا الإجراء معالجة تغييرات البيانات في الوقت الفعلي. تتكامل Functions أيضا مع Azure Event Grid، بحيث يمكنها معالجة الأحداث من خدمات Azure مثل تخزين Azure و Azure Media Services، ومصادر الأحداث الخارجية. تعمل Event Grid كخدمة مركزية قابلة للتوسع لتوجيه الأحداث تكمل مشغلات الوظائف وتمكن من قابلية التوسع العالية وتغطية مصدر الحدث الواسعة. |
| الارتباطات | ليس لديه روابط. يستخدم AWS SDKs داخل وظائف Lambda لإدارة التفاعلات يدويا مع خدمات AWS الأخرى. | تمكن الروابط، التي تم تكوينها كإدخال أو إخراج، الاتصالات التعريفية بالخدمات، والتي تقلل من الحاجة إلى تعليمات SDK البرمجية الصريحة. على سبيل المثال، يمكنك تكوين الروابط لتقرأها من مخزن البيانات الثنائية الكبيرة، أو الكتابة إلى Azure Cosmos DB، أو إرسال رسائل البريد الإلكتروني عبر SendGrid دون إدارة التكاملات يدويا. |
مشغلات الأحداث والروابط
| مشغل أو خدمة AWS Lambda | دالات Azure trigger | الوصف |
|---|---|---|
| بوابة واجهة برمجة التطبيقات: طلبات HTTP | مشغل HTTP | تسمح لك هذه المشغلات بمعالجة طلبات HTTP مباشرة. |
| خدمة قائمة الانتظار البسيطة (SQS) | Azure Queue Storage المحفز أم ناقل خدمة Azure المحفز | يمكن لهذه المشغلات معالجة الرسائل في قوائم الانتظار. |
| خدمة الإعلامات البسيطة (SNS) | Event Grid trigger أو Service Bus trigger | تمكن هذه المشغلات معالجة الإعلامات. |
| Kinesis (تدفقات البيانات) | مشغل مراكز الأحداث | تستهلك هذه المشغلات تدفقات البيانات. |
| DynamoDB (تغييرات الجدول) | Azure Cosmos DB غير زناد التغذية | تستمع هذه المشغلات للتغييرات في الجداول. |
| أحداث CloudWatch أو EventBridge Scheduler | مشغل المؤقت | تعالج هذه المشغلات الوظائف المجدولة أو المستندة إلى الوقت. |
| S3 (أحداث الكائن) | مخزن البيانات الثنائية الكبيرة trigger | تتفاعل هذه المشغلات مع الأحداث في تخزين الكائن الثنائي كبير الحجم. |
| خدمة قاعدة البيانات العلائقية من أمازون (RDS) | Azure SQL trigger | تتفاعل هذه المشغلات مع تغييرات قاعدة البيانات. |
| البث المدار ل Apache Kafka (MSK) | مشغل Apache Kafka | تتفاعل هذه المشغلات مع رسائل موضوع Kafka. |
| أمازون ElastiCache | Azure ريديس trigger | تتفاعل هذه المشغلات مع الرسائل في Redis. |
| أمازون MQ | مشغل RabbitMQ | تتفاعل هذه المشغلات مع الرسائل في RabbitMQ. |
أذونات
| AWS لامدا | دالات Azure |
|---|---|
| يمنح دور تنفيذ Lambda أذونات وظائف Lambda للتفاعل مع خدمات AWS الأخرى. كل دالة Lambda لها دور إدارة الهوية والوصول (IAM) المقترن الذي يحدد أذوناته أثناء تشغيله. | توفر الهويات المدارة هوية لتطبيق الوظائف الخاص بك تسمح له بالمصادقة مع خدمات Azure الأخرى دون تخزين بيانات الاعتماد في الكود. يقوم التحكم في الوصول القائم على الأدوار بتعيين الأدوار المناسبة للهوية المدارة في Microsoft Entra ID لمنح الوصول إلى الموارد التي يحتاجها. |
| عبارات النهج المستندة إلى الموارد: - يمنح AWSLambda_FullAccess الوصول الكامل إلى جميع عمليات Lambda، بما في ذلك إنشاء الوظائف وتحديثها وحذفها. - يمنح AWSLambda_ReadOnlyAccess حق الوصول للقراءة فقط لعرض وظائف Lambda وتكويناتها. - نهج إدارة الهوية والوصول المخصصة. |
الأدوار المضمنة المستندة إلى الموارد: - يمنح دور المالك حق الوصول الكامل، بما في ذلك إدارة أذونات الوصول. - يمكن لدور المساهم إنشاء تطبيقات الوظائف وحذفها وتكوين الإعدادات ونشر التعليمات البرمجية. لا يمكنه إدارة الوصول. - يمكن لدور قارئ المراقبة منح حق الوصول للقراءة فقط إلى بيانات المراقبة والإعدادات. ويمكنه أيضا تخصيص أدوار مخصصة. |
عنوان URL للدالة
| AWS لامدا | دالات Azure |
|---|---|
https://<url-id>.lambda-url.<region>.on.aws |
-
<appname>.azurewebsites.net (اسم المضيف الافتراضي العمومي الأصلي) - <appname>-<randomhash>.<Region>.azurewebsites.net (اسم مضيف افتراضي جديد وفريد) |
الشبكات
| AWS لامدا | دالات Azure |
|---|---|
| تعمل جميع وظائف Lambda بشكل آمن داخل سحابة افتراضية خاصة مدارة من قبل النظام (VPC). يمكنك أيضا تكوين دالة Lambda للوصول إلى الموارد في VPC مخصص. | يمكن تأمين تطبيقات الوظائف للشبكة ويمكنها الوصول إلى خدمات أخرى داخل الشبكة. يمكن تقييد الوصول إلى الشبكة الواردة إلى قائمة جدار الحماية فقط من عناوين IP وإلى شبكة ظاهرية معينة عبر نقاط نهاية الخدمة أو نقاط النهاية الخاصة. يتم تمكين الوصول إلى الشبكة الصادرة من خلال ميزة تكامل الشبكة الظاهرية. يمكن أن يقتصر تطبيق الوظائف على كل نسبة استخدام الشبكة الخاصة به على الشبكة الفرعية للشبكة الظاهرية ويمكنه أيضا الوصول إلى الخدمات الأخرى داخل تلك الشبكة الظاهرية. |
إمكانية المراقبة والمراقبة
| AWS لامدا | دالات Azure |
|---|---|
| تساعد Amazon CloudWatch في المراقبة والمراقبة من خلال جمع المقاييس وتتبعها، وتجميع السجلات وتحليلها، وإعداد التنبيهات، وإنشاء لوحات معلومات مخصصة، وتنفيذ الاستجابات التلقائية للتغييرات في أداء الموارد والمقاييس. | يوفر Azure Monitor مراقبة شاملة وقابلية للملاحظة ل دالات Azure، لا سيما من خلال ميزة Application Insights الخاصة به. يجمع Application Insights بيانات تتبع الاستخدام مثل معدلات الطلب وأوقات الاستجابة ومعدلات الفشل. إنه يتصور علاقات مكونات التطبيق، ويراقب الأداء في الوقت الحقيقي، ويسجل التشخيصات التفصيلية، ويسمح بتتبع المقاييس المخصصة. تساعد هذه القدرات في الحفاظ على أداء وتوفر وموثوقية دالات Azure، مع تمكين لوحات معلومات مخصصة، وتنبيهات، وردود آلية. |
| يقوم AWS Lambda بإنشاء بيانات تتبع الاستخدام من استدعاءات الدالة الخاصة بك ويمكنه تصدير هذه البيانات باستخدام دلالات OpenTelemetry. يمكنك تكوين وظائف Lambda لإرسال بيانات تتبع الاستخدام هذه إلى أي نقطة نهاية متوافقة مع OpenTelemetry. يسمح هذا الإجراء بربط التتبعات والسجلات، وبيانات القياس عن بعد المتسقة المستندة إلى المعايير، والتكامل مع أدوات المراقبة الأخرى التي تدعم OpenTelemetry. | قم بتكوين تطبيق الوظائف لتصدير بيانات السجل وتتبعها بتنسيق OpenTelemetry. يمكنك تصدير بيانات تتبع الاستخدام إلى أي نقطة نهاية متوافقة باستخدام OpenTelemetry. يوفر OpenTelemetry فوائد مثل ارتباط التتبعات والسجلات، وبيانات القياس عن بعد المتسقة المستندة إلى المعايير، والتكامل مع موفري الخدمات الآخرين. يمكنك تمكين OpenTelemetry على مستوى تطبيق الوظائف في تكوين المضيف وفي مشروع التعليمات البرمجية لتحسين تصدير البيانات من التعليمات البرمجية للدالة. لمزيد من المعلومات، راجع استخدم OpenTelemetry مع دالات Azure. |
التحجيم والتزامن
| AWS لامدا | دالات Azure |
|---|---|
| يستخدم AWS نموذج تحجيم عند الطلب. قم بتحجيم عملية الدالة تلقائيا استجابة للطلب. التزامن، أو عدد الطلبات التي يعالجها مثيل، هو دائما 1. | تتم إضافة المثيلات وإزالتها ديناميكيا استنادا إلى عدد الأحداث الواردة والتزامن المكون لكل مثيل. يمكنك تكوين إعداد التزامن إلى القيمة المطلوبة. |
| التزامن هو دائما 1. | التزامن قابل للتكوين (#A0 1). |
| يدعم التحجيم إلى 0. | يدعم التحجيم إلى 0. |
الحماية من البدء البارد
| AWS لامدا | دالات Azure |
|---|---|
| يقلل التزامن المقدم من زمن الانتقال ويضمن أداء دالة يمكن التنبؤ به عن طريق التهيئة المسبقة لعدد مطلوب من مثيلات الدالة. التزامن المقدم يناسب التطبيقات الحساسة لزمن الانتقال ويتم تسعيره بشكل منفصل عن التزامن القياسي. | تسمح لك تطبيقات الوظائف بتكوين التزامن لكل مثيل، ما يدفع مقياسه. يمكن تشغيل وظائف متعددة بالتوازي في نفس مثيل التطبيق، ولا تتحمل الوظائف اللاحقة في المثيل البداية الأولية الباردة. تحتوي تطبيقات الوظائف أيضا على مثيلات جاهزة دائما . يمكن للعملاء تحديد عدد من المثيلات السابقة للتحزيم للقضاء على زمن انتقال البدء البارد وضمان أداء متسق. كما يتم توسيع نطاق تطبيقات الوظائف إلى المزيد من المثيلات بناء على الطلب، مع الحفاظ على المثيلات الجاهزة دائما. |
| يحدد التزامن المحجوز الحد الأقصى لعدد المثيلات المتزامنة التي يمكن أن تحتوي عليها الوظيفة. يضمن هذا الحد تخصيص جزء من الحصة النسبية للتزامن لحسابك حصريا لتلك الدالة. يتم توسيع نطاق AWS Lambda ديناميكيا للتعامل مع الطلبات الواردة حتى عند تعيين التزامن المحجوز، طالما أن الطلبات لا تتجاوز حد التزامن المحجوز المحدد. الحد الأدنى للتزامن المحجوز في AWS Lambda هو 1. يتم تحديد الحد الأعلى للتزامن المحجوز في AWS Lambda بواسطة حصة التزامن الإقليمية للحساب. بشكل افتراضي، هذا الحد هو 1000 عملية متزامنة لكل منطقة. | دالات Azure لا يمتلك ميزة مكافئة للالتزامن المحجوز. لتحقيق وظائف مماثلة، اعزل وظائف معينة في تطبيقات وظائف منفصلة وقم بتعيين الحد الأقصى للتوسيع لكل تطبيق. يقوم دالات Azure بتوسيع أو إضافة المزيد من الحالات بشكل ديناميكي، ويتكبير أو يزيل النسخ، ضمن مجموعة الحد المحدود. بشكل افتراضي، تبدأ التطبيقات التي تعمل في خطة استهلاك Flex بحد قابل للتكوين يبلغ 100 مثيل إجمالي. أدنى قيمة قصوى لعدد المثيلات هي 1، وأعلى قيمة كحد أقصى مدعوم لعدد المثيلات هي 1000. يمكن أن تحد الحصص النسبية لذاكرة الاشتراك الإقليمية أيضا من مقدار تطبيقات الوظائف التي يمكن توسيع نطاقها، ولكن يمكنك زيادة هذه الحصة عن طريق استدعاء الدعم. |
التسعير
| AWS لامدا | دالات Azure |
|---|---|
| - الدفع لكل استخدام لإجمالي عدد الاستدعاءات وGB/s لكل مثيل (مع تزامن ثابت من 1) - زيادة 1 مللي ثانية - طبقة مجانية 400,000 جيجابت في الثانية |
- الدفع لكل استخدام لإجمالي عدد الاستدعاءات وGB/s لكل مثيل (مع استدعاءات متزامنة قابلة للتكوين) - زيادة 100 مللي ثانية - مستوى مجاني 100,000 جيجابت في الثانية - التكاليف المستندة إلى الاستهلاك |
تخزين التعليمات البرمجية المصدر
| AWS لامدا | دالات Azure |
|---|---|
| تدير AWS Lambda تخزين التعليمات البرمجية للدالة في نظام التخزين المدار الخاص بها. لا تحتاج إلى توفير المزيد من التخزين. | تتطلب Functions حاوية مخزن البيانات الثنائية الكبيرة مقدمة من العميل للحفاظ على حزمة النشر التي تحتوي على كود تطبيقك. يمكنك تكوين الإعدادات لاستخدام نفس حساب التخزين أو حساب تخزين مختلف للنشر وإدارة أساليب المصادقة للوصول إلى الحاوية. |
التطوير المحلي
| ميزة AWS Lambda | دالات Azure feature |
|---|---|
| - SAM CLI - لوكال ستاك |
- دالات Azure Core Tools - تعليمة Visual Studio برمجية - Visual Studio - فضاءات الشيفرة في GitHub - VSCode.dev -مخضرم - كود واختبار دالات Azure محليا |
التوزيع
| الميزة | AWS لامدا | دالات Azure |
|---|---|---|
| حزمة التوزيع | - ملف ZIP - صورة الحاوية |
ملف ZIP (لنشر صورة الحاوية، استخدم SKU المخصص أو المميز.) |
| حجم ملف ZIP (وحدة التحكم) | 50 ميغابايت كحد أقصى | 500 ميغابايت كحد أقصى لنشر ZIP |
| حجم ملف ZIP (CLI/SDK) | 250 ميغابايت كحد أقصى لنشر ZIP، 500 ميغابايت كحد أقصى لإلغاء الضغط | 500 ميغابايت كحد أقصى لنشر ZIP |
| حجم صورة الحاوية | 10 غيغابايت كحد أقصى | دعم الحاويات مع التخزين المرن عبر Azure |
| معالجة البيانات الاصطناعية الكبيرة | استخدم صور الحاوية لإجراء عمليات نشر أكبر. | Attach مخزن البيانات الثنائية الكبيرة أو ملفات Azure Shares للوصول إلى ملفات كبيرة من التطبيق. |
| تجميع التبعيات الشائعة للوظائف | الطبقات | نشر. Zip، عند الطلب من التخزين، أو الحاويات (ACA، مخصصة، وحدات EP SKUs فقط) |
| النشر الأزرق والأخضر أو تعيين إصدار الدالة | استخدم مؤهلات الدالة للإشارة إلى حالة معينة من الدالة باستخدام إما رقم إصدار أو اسم مستعار. تمكن المؤهلات إدارة الإصدار واستراتيجيات النشر التدريجي. | استخدم التكامل المستمر وأنظمة التسليم المستمرة للنشر الأزرق والأخضر. |
المهلة وحدود الذاكرة
| الميزة | حدود AWS Lambda | حدود دالات Azure |
|---|---|---|
| مهلة التنفيذ | 900 ثانية (15 دقيقة) | المهلة الافتراضية هي 30 دقيقة. الحد الأقصى للمهلة غير مقيد. ومع ذلك، فإن فترة السماح الممنوحة لتنفيذ الوظيفة هي 60 دقيقة أثناء التحجيم و10 دقائق أثناء تحديثات النظام الأساسي. لمزيد من المعلومات، راجع مدة انتهاء مهلة تطبيق الوظائف. |
| ذاكرة قابلة للتكوين | 128 ميغابايت إلى 10240 ميغابايت، بزيادات 64 ميغابايت | تدعم الوظائف أحجام مثيل 2 غيغابايت و4 غيغابايت . كل منطقة في اشتراك معين لها حد ذاكرة يبلغ 512000 ميغابايت لجميع مثيلات التطبيقات، والتي يمكنك زيادتها عن طريق الاتصال بالدعم. يجب أن يظل إجمالي استخدام الذاكرة لجميع المثيلات عبر جميع تطبيقات الوظائف في منطقة ضمن هذه الحصة النسبية. على الرغم من أن 2 غيغابايت و4 غيغابايت هي خيارات حجم المثيل، يمكن أن يكون التزامن لكل مثيل أعلى من 1. لذلك، يمكن لمثيل واحد معالجة عمليات تنفيذ متزامنة متعددة، اعتمادا على التكوين. يمكن أن يساعد تكوين التزامن بشكل مناسب في تحسين استخدام الموارد وإدارة الأداء. من خلال موازنة تخصيص الذاكرة وإعدادات التزامن، يمكنك إدارة الموارد المخصصة لتطبيقات الوظائف بشكل فعال وضمان الأداء الفعال والتحكم في التكلفة. لمزيد من المعلومات، راجع الحصص النسبية لذاكرة الاشتراك الإقليمي. |
إدارة البيانات السرية
| AWS لامدا | دالات Azure |
|---|---|
| يسمح لك AWS Secrets Manager بتخزين البيانات السرية وإدارتها واستردادها مثل بيانات اعتماد قاعدة البيانات ومفاتيح واجهة برمجة التطبيقات والمعلومات الحساسة الأخرى. يمكن لوظائف Lambda استرداد الأسرار باستخدام AWS SDK. | نوصي باستخدام طرق سرية مثل الهويات المدارة لتمكين الوصول الآمن إلى موارد Azure دون الحاجة إلى ترميز بيانات الاعتماد. عندما تكون الأسرار مطلوبة، مثل الأنظمة الشريكة أو القديمة، يوفر Azure Key Vault حلا آمنا لتخزين وإدارة الأسرار والمفاتيح والشهادات. |
| AWS Systems Manager Parameter Store هي خدمة تخزن بيانات التكوين والأسرار. يمكن تشفير المعلمات باستخدام AWS KMS واستردادها بواسطة وظائف Lambda باستخدام AWS SDK. يمكن لوظائف Lambda تخزين إعدادات التكوين في متغيرات البيئة. يمكن تشفير البيانات الحساسة باستخدام مفتاح KMS للوصول الآمن. |
يستخدم دالات Azure إعدادات التطبيق لتخزين بيانات التكوين. تعين هذه الإعدادات مباشرة إلى متغيرات البيئة لسهولة الاستخدام داخل الدالة. يمكن تشفير هذه الإعدادات وتخزينها بأمان في تكوين "Azure App Service". للسيناريوهات الأكثر تقدما، يوفر تكوين Azure App ميزات قوية لإدارة عدة تكوينات. وهو يتيح وضع علامة على الميزات ويدعم التحديثات الديناميكية عبر الخدمات. |
إدارة الحالة
| AWS لامدا | دالات Azure |
|---|---|
| تتعامل AWS Lambda مع إدارة الحالات البسيطة باستخدام خدمات مثل Amazon S3 لتخزين الكائنات، وDynamoDB لتخزين حالات NoSQL السريع والقابل للتوسع، وSQS لمعالجة قوائم الرسائل. تضمن هذه الخدمات استمرارية البيانات واتساقها عبر عمليات تنفيذ وظائف Lambda. | يستخدم دالات Azure AzureWebJobsStorage لإدارة الحالة من خلال تمكين الروابط والمحفزات مع خدمات تخزين Azure مثل مخزن البيانات الثنائية الكبيرة، وتخزين الطابور، وتخزين الجدول. يسمح للوظائف بالقراءة والكتابة بسهولة الحالة. لإدارة الحالات الأكثر تعقيدا، يوفر Durable Functions تنسيق سير عمل متقدم وقدرات استمرارية الحالة باستخدام تخزين Azure. |
التزامن ذي الحالة
| AWS لامدا | دالات Azure |
|---|---|
| لا يوجد تنسيق حالة أصلية. استخدم وظائف خطوة AWS لسير العمل. | يساعد Durable Functions في إدارة الحالات المعقدة من خلال توفير تنسيق سير عمل دائم وكيانات ذات حالة. فهو يتيح العمليات طويلة الأمد، ونقاط التفتيش التلقائية، واستمرار الحالة الموثوق بها. تمكن هذه الميزات من إنشاء مهام سير عمل معقدة لضمان التسامح مع الخطأ وقابلية التوسع للتطبيقات ذات الحالة. |
الاختلافات والاعتبارات الأخرى
| الميزة | AWS لامدا | دالات Azure |
|---|---|---|
| دالات التجميع | كل دالة AWS Lambda هي كيان مستقل. | يعمل تطبيق الوظائف كحاوية لوظائف متعددة. يوفر سياق تنفيذ مشترك وتكوين للوظائف التي يحتوي عليها. التعامل مع وظائف متعددة ككيان واحد يبسط النشر والإدارة. تستخدم Functions أيضا استراتيجية التوسيع لكل وظيفة، حيث يتم تكبير كل وظيفة بشكل مستقل، باستثناء محفزات HTTP ومخزن البيانات الثنائية الكبيرة وDurable Functions. تتوسع هذه الوظائف التي تم تشغيلها في مجموعاتها الخاصة. |
| إضافة مجالات مخصصة | ممكن عبر بوابة واجهة برمجة التطبيقات | يمكنك تكوين النطاقات المخصصة مباشرة عبر تطبيق الوظائف أو على إدارة Azure API. |
| دعم الحاوية المخصصة | يدعم الحاويات المخصصة عبر Lambda Container Image | يدعم دالات Azure حاويات مخصصة تعمل في بيئة تطبيقات الحاويات. |
إنشاء خطة ترحيل
حدد أحمال العمل الرئيسية لإثبات المفهوم.
ابدأ بتحديد واحد إلى اثنين من أحمال العمل متوسطة الحجم وغير الهامة من إجمالي المخزون الخاص بك. تعمل أحمال العمل هذه كأساس لترحيل إثبات المفهوم الخاص بك. يمكنك اختبار العملية وتحديد التحديات المحتملة دون المخاطرة بتعطيل عملياتك بشكل كبير.
اختبر بشكل متكرر واجمع الملاحظات.
استخدم إثبات المفهوم لجمع الملاحظات وتحديد الثغرات وضبط العملية قبل التوسع إلى أحمال عمل أكبر. يضمن هذا النهج التكراري أنه بحلول الوقت الذي تنتقل فيه إلى الترحيل الكامل، يمكنك معالجة التحديات المحتملة وتحسين العملية.
إنشاء أصول الترحيل
هذه الخطوة هي مرحلة تطوير انتقالية. خلال هذه المرحلة، تقوم ببناء الشيفرة المصدرية، وقوالب البنية التحتية ككود (IaC)، وخطوط النشر لتمثيل عبء العمل في Azure. يجب عليك تكييف التعليمات البرمجية للدالة للتوافق وأفضل الممارسات قبل أن تتمكن من تنفيذ الترحيل.
- تكييف التعليمات البرمجية للدالة وملفات التكوين والبنية الأساسية كملفات تعليمات برمجية
- ضبط إعدادات التكوين
- إنشاء ملفات IaC
- استخدام أدوات لإعادة بناء التعليمات البرمجية
تكييف التعليمات البرمجية للدالة وملفات التكوين والبنية الأساسية كملفات تعليمات برمجية
لتحديث الكود الخاص بمتطلبات وقت التشغيل دالات Azure:
عدل كودك ليتوافق مع نموذج البرمجة دالات Azure. على سبيل المثال، قم بتكييف توقيعات الوظائف لتتناسب مع التنسيق الذي يتطلبه دالات Azure. لمزيد من المعلومات حول تعريف الدوال وسياق التنفيذ، راجع دالات Azure أدلة المطورين.
استخدم حزمة دالات Azure التوسعة للتعامل مع مختلف الروابط والمحفزات المشابهة لخدمات AWS. بالنسبة لتطبيقات .NET، يجب عليك استخدام حزم NuGet المناسبة بدلا من حزمة الإضافات.
استخدم حزمة الإضافات للتكامل مع خدمات Azure الأخرى مثل تخزين Azure وناقل خدمة Azure وAzure Cosmos DB دون الحاجة إلى تكوين كل ربط يدويا عبر SDKs. لمزيد من المعلومات، راجع Connect الدوال إلى خدمات Azure باستخدام bindings و دالات Azure أنماط ربط التعبير.
هذه المقتطفات هي أمثلة على رمز SDK الشائع. كود AWS Lambda يربط بالمشغلات أو الروابط أو مقتطفات كود SDK المقابلة في دالات Azure.
قراءة من أمازون S3 مقابل مساحة تخزين Azure Blob
رمز AWS Lambda (SDK)
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
exports.handler = async (event) => {
const params = {
Bucket: 'my-bucket',
Key: 'my-object.txt',
};
const data = await
s3.getObject(params).promise();
console.log('File content:',
data.Body.toString());
};
دالات Azure Code (trigger)
import { app } from '@azure/functions';
app.storageblob('blobTrigger', {
path: 'my-container/{blobName}',
connection: 'AzureWebJobsStorage',
}, async (context, myBlob) => {
context.log(`Blob content:
${myBlob.toString()}`);
});
الكتابة إلى خدمة أمازون البسيطة (SQS) مقابل Azure Queue Storage
رمز AWS Lambda (SDK)
const AWS = require('aws-sdk');
const sqs = new AWS.SQS();
exports.handler = async (event) => {
const params = {
QueueUrl:
'https://sqs.amazonaws.com/123456789012/MyQueue',
MessageBody: 'Hello, world!',
};
await
sqs.sendMessage(params).promise();
};
دالات Azure Code (trigger)
import { app } from '@azure/functions';
app.queue('queueTrigger', {
queueName: 'myqueue-items',
connection: 'AzureWebJobsStorage',
}, async (context, queueMessage) => {
context.log(`Queue message:
${queueMessage}`);
});
الكتابة إلى DynamoDB مقابل Azure Cosmos DB
رمز AWS Lambda (SDK)
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
const params = {
TableName: 'my-table',
Key: { id: '123' },
};
const data = await dynamoDb.get(params).promise();
console.log('DynamoDB record:', data.Item);
};
دالات Azure Code (trigger)
import { app } from '@azure/functions';
app.cosmosDB('cosmosTrigger', {
connectionStringSetting: 'CosmosDBConnection',
databaseName: 'my-database',
containerName: 'my-container',
leaseContainerName: 'leases',
}, async (context, documents) => {
documents.forEach(doc => {
context.log(`Cosmos DB document: ${JSON.stringify(doc)}`);
});
});
Amazon CloudWatch Events مقابل مشغل مؤقت Azure
رمز AWS Lambda (SDK)
exports.handler = async (event) => {
console.log('Scheduled event:', event);
};
دالات Azure Code (trigger)
import { app } from '@azure/functions';
app.timer('timerTrigger', { schedule: '0 */5 * * * *', // Runs every 5 minutes }, async (context, myTimer) => { if (myTimer.isPastDue) { context.log('Timer is running late!'); } context.log(Timer function executed at: ${new Date().toISOString()}); });
خدمة إشعارات أمازون البسيطة (SNS) مقابل مشغل Azure Event Grid
رمز AWS Lambda (SDK)
const AWS = require('aws-sdk');
const sns = new AWS.SNS();
exports.handler = async (event) => {
const params = {
Message: 'Hello, Event Grid!',
TopicArn: 'arn:aws:sns:us-east-1:123456789012:MyTopic',
};
await sns.publish(params).promise();
};
دالات Azure Code (trigger)
import { app } from '@azure/functions';
app.eventGrid('eventGridTrigger', {},
async (context, eventGridEvent) => {
context.log(`Event Grid event:
${JSON.stringify(eventGridEvent)}`);
});
Amazon Kinesis مقابل محفز مراكز أحداث Azure
رمز AWS Lambda (SDK)
const AWS = require('aws-sdk');
const kinesis = new AWS.Kinesis();
exports.handler = async (event) => {
const records =
event.Records.map(record =>
Buffer.from(record.kinesis.data,
'base64').toString());
console.log('Kinesis records:', records);
};
دالات Azure Code (trigger)
import { app } from '@azure/functions';
app.eventHub('eventHubTrigger', {
connection: 'EventHubConnection',
eventHubName: 'my-event-hub',
}, async (context, eventHubMessages) =>
{
eventHubMessages.forEach(message =>
{
context.log(`Event Hub message:
${message}`);
});
});
راجع مستودعات GitHub التالية لمقارنة كود AWS Lambda وكود دالات Azure:
- رمز AWS Lambda
- دالات Azure Code
- Azure مستودع العينات، والذي يشمل عينات البداية وIaC والعينات من الطرف إلى الطرف ل دالات Azure
ضبط إعدادات التكوين
تأكد من أن إعدادات timeout وإعدادات memory الخاصة بوظيفتك متوافقة مع دالات Azure. لمزيد من المعلومات حول الإعدادات القابلة للتكوين، راجع host.json المرجع ل دالات Azure.
اتبع أفضل الممارسات الموصى بها لتكوينات الأذونات والوصول والشبكات والتوزيع.
تكوين الأذونات
اتبع أفضل الممارسات عند إعداد الأذونات على تطبيقات الوظائف. لمزيد من المعلومات، راجع تكوين تطبيق الوظائف وحساب التخزين باستخدام الهوية المدارة.
main.bicep
// User-assigned managed identity that the function app uses to reach Storage and Service Bus
module processorUserAssignedIdentity './core/identity/userAssignedIdentity.bicep' = {
name: 'processorUserAssignedIdentity'
scope: rg
params: {
location: location
tags: tags
identityName: !empty(processorUserAssignedIdentityName) ? processorUserAssignedIdentityName : '${abbrs.managedIdentityUserAssignedIdentities}processor-${resourceToken}'
}
}
لمزيد من المعلومات، راجع rbac.bicep.
تكوين الوصول إلى الشبكة
يدعم دالات Azure virtual network integration، الذي يمنح تطبيق الوظيفة الوصول إلى الموارد في شبكتك الافتراضية. بعد التكامل، يوجه تطبيقك نسبة استخدام الشبكة الصادرة عبر الشبكة الظاهرية. ثم يمكن لتطبيقك الوصول إلى نقاط النهاية الخاصة أو الموارد باستخدام القواعد التي تسمح فقط بنسبة استخدام الشبكة من شبكات فرعية معينة. إذا كانت الوجهة عنوان IP خارج الشبكة الظاهرية، فإن عنوان IP المصدر هو أحد العناوين المدرجة في خصائص التطبيق، ما لم تقم بتكوين بوابة NAT.
عند تمكين تكامل الشبكة الظاهرية لتطبيقات الوظائف الخاصة بك، اتبع أفضل الممارسات في TSG لتكامل الشبكة الظاهرية لتطبيقات الويب وتطبيقات الوظائف.
main.bicep
// Virtual network and private endpoint
module serviceVirtualNetwork 'app/vnet.bicep' = {
name: 'serviceVirtualNetwork'
scope: rg
params: {
location: location
tags: tags
vNetName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}'
}
}
module servicePrivateEndpoint 'app/storage-PrivateEndpoint.bicep' = {
name: 'servicePrivateEndpoint'
scope: rg
params: {
location: location
tags: tags
virtualNetworkName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}'
subnetName: serviceVirtualNetwork.outputs.peSubnetName
resourceName: storage.outputs.name
}
}
لمزيد من المعلومات، راجع VNet.bicep و storage-PrivateEndpoint.bicep.
تكوين إعدادات النشر
تتبع عمليات التوزيع مسارا واحدا. بعد بناء كود مشروعك ووضعه في حزمة تطبيق، قم بنشره في حاوية مخزن البيانات الثنائية الكبيرة. عند بدء تشغيله، يحصل تطبيقك على الحزمة ويشغل التعليمات البرمجية للدالة منها. بشكل افتراضي، نفس حساب التخزين الذي يخزن بيانات تعريف المضيف الداخلية، مثل AzureWebJobsStorage، يعمل أيضا كحاوية التوزيع. ومع ذلك، يمكنك استخدام حساب تخزين بديل أو اختيار طريقة المصادقة المفضلة لديك عن طريق تكوين إعدادات نشر التطبيق. لمزيد من المعلومات، راجع تفاصيل تقنية التوزيعوتكوين إعدادات النشر.
إنشاء ملفات IaC
استخدم أدوات مثل Bicep أو قوالب Azure Resource Manager أو Terraform لإنشاء ملفات IaC لنشر موارد Azure.
حدد موارد مثل دالات Azure، حسابات التخزين، ومكونات الشبكة في ملفات IaC الخاصة بك.
استخدم هذا المستود><ع
IaC للعينات التي تستخدم دالات Azure التوصيات وأفضل الممارسات.
استخدام أدوات لإعادة بناء التعليمات البرمجية
استخدم أدوات مثل GitHub Copilot in VS Code للمساعدة في إعادة هيكلة الكود، أو إعادة هيكلة يدوية للتغييرات المحددة، أو وسائل ترحيل أخرى.
تقدم المقالات التالية أمثلة محددة وخطوات مفصلة لتسهيل عملية الترحيل:
تطوير عملية خطوة بخطوة لترحيل Day-0
تطوير استراتيجيات تجاوز الفشل وإرجاع الموارد لترحيلك واختبارها بدقة في بيئة ما قبل الإنتاج. نوصي بإجراء اختبار شامل قبل الانتقال النهائي من AWS Lambda إلى دالات Azure.
التحقق من صحة الوظيفة
اختبر كل وظيفة بدقة للتأكد من أنها تعمل كما هو متوقع. يجب أن تتضمن هذه الاختبارات الإدخال/الإخراج ومشغلات الأحداث والتحقق من الروابط.
استخدم أدوات مثل curl أو ملحقات عميل REST على VS Code لإرسال طلبات HTTP للوظائف التي يتم تشغيلها من قبل HTTP.
بالنسبة للمشغلات الأخرى، مثل المؤقتات أو قوائم الانتظار، تأكد من تشغيل المشغلات بشكل صحيح وتشغيل الوظائف كما هو متوقع.
التحقق من صحة الأداء
إجراء اختبار أداء لمقارنة نشر دالات Azure الجديد مع نشر AWS Lambda السابق.
مراقبة المقاييس مثل وقت الاستجابة ووقت التشغيل واستهلاك الموارد.
استخدم Application Insights للمراقبة وتحليل السجل واستكشاف الأخطاء وإصلاحها أثناء مرحلة الاختبار.
استكشاف الأخطاء وإصلاحها باستخدام ميزة تشخيص المشكلات وحلها
استخدم ميزة diagnose and solve problems في بوابة Azure لاستكشاف أخطاء تطبيق الوظائف لديك. توفر هذه الأداة مجموعة من ميزات التشخيص التي يمكن أن تساعدك على تحديد المشكلات الشائعة وحلها بسرعة، مثل تعطل التطبيق، وتدهور الأداء، ومشاكل التكوين. اتبع خطوات استكشاف الأخطاء وإصلاحها الإرشادية والتوصيات التي توفرها الأداة لمعالجة المشكلات التي تحددها.
تقييم الحالة النهائية لحمل العمل الذي تم ترحيله
قبل إيقاف تشغيل الموارد في AWS، تحتاج إلى أن تكون واثقا من أن النظام الأساسي يلبي توقعات حمل العمل الحالية وأنه لا شيء يمنع صيانة حمل العمل أو مزيد من التطوير.
توزيع الوظائف واختبارها للتحقق من أدائها وصحتها.
النشر إلى Azure
نشر أحمال العمل باستخدام ميزة نشر VS Code . يمكنك أيضا نشر أعباء العمل من سطر الأوامر باستخدام دالات Azure Core Tools أو Azure CLI. Azure DevOps و GitHub Actions يستخدمان أيضا One Deploy.
دالات Azure الأدوات الأساسية: نشر تطبيق الوظائف باستخدام دالات Azure Core Tools مع أمر
func azure functionapp publish <FunctionAppName>.أنابيب التكامل المستمر والنشر المستمر (CI/CD): قم بإعداد خط أنابيب CI/CD باستخدام خدمات مثل GitHub Actions، Azure DevOps، أو أداة CI/CD أخرى.
لمزيد من المعلومات، راجع التسليم المستمر باستخدام GitHub Actions أو التسليم المستمر مع Azure Pipelines.
استكشاف نماذج سيناريوهات الترحيل
استخدم مستودع MigrationGetStarted كقالب لبدء إثبات المفهوم الخاص بك. يتضمن هذا المستودع مشروع دالات Azure جاهز للنشر يحتوي على البنية التحتية وملفات الشيفرة المصدرية لمساعدتك على البدء.
إذا كنت تفضل استخدام Terraform، فاستخدم MigrationGetStarted-Terraform بدلا من ذلك.
تحسين ومراقبة أداء التطبيق على Azure
بعد ترحيل عبء العمل، نوصي باستكشاف المزيد من الميزات على Azure. قد تساعدك هذه الميزات على تلبية متطلبات حمل العمل المستقبلية وتساعد على سد الثغرات.
استخدام Application Insights للمراقبة واستكشاف الأخطاء وإصلاحها
تمكين Application Insights لتطبيق الوظائف الخاص بك لجمع بيانات تتبع الاستخدام التفصيلية للمراقبة واستكشاف الأخطاء وإصلاحها. يمكنك تفعيل Application Insights من خلال بوابة Azure أو في ملف التكوين host.json الخاص بتطبيق الوظيفة. بعد تمكين Application Insights، يمكنك:
جمع بيانات تتبع الاستخدام. يوفر Application Insights بيانات تتبع الاستخدام المختلفة مثل سجلات الطلبات ومقاييس الأداء والاستثناءات والتبعيات.
تحليل السجلات والمقاييس. يمكنك الوصول إلى لوحة تحكم Application Insights من بوابة Azure لعرض وتحليل السجلات والمقاييس وبيانات التليمترية الأخرى. استخدم الأدوات المضمنة لإنشاء استعلامات مخصصة وتصور البيانات للحصول على رؤى حول أداء تطبيق الوظائف وسلوكه.
إعداد التنبيهات. تكوين التنبيهات في Application Insights لإعلامك بالمشاكل الحرجة أو تدهور الأداء أو أحداث معينة. تساعدك هذه التنبيهات على مراقبة المشكلات والاستجابة لها بشكل استباقي.
تحسين التكلفة والأداء
التحجيم وتحسين الأداء:
استخدم ميزات التحجيم التلقائي للتعامل مع أحمال العمل المختلفة بكفاءة.
تحسين التعليمات البرمجية للوظيفة لتحسين الأداء عن طريق تقليل وقت التشغيل، وتحسين التبعيات، واستخدام ممارسات ترميز فعالة.
تنفيذ استراتيجيات التخزين المؤقت لتقليل المعالجة المتكررة وزمن الانتقال للبيانات التي يتم الوصول إليها بشكل متكرر.
إدارة التكاليف:
استخدم أدوات Microsoft Cost Management لمراقبة وتحليل تكاليف دالات Azure الخاصة بك.
إعداد تنبيهات الموازنة والتكلفة لإدارة النفقات والتنبؤ بها بفعالية.