تخيل أنك بحاجة إلى تشغيل برنامج Python النصي على وظيفة AWS Lambda وحصلت على هذا الخطأ؟
{ "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas', "errorType": "Runtime.ImportModuleError" ... }
لا تقلق، هذا خطأ شائع ولن أطيل الأمر
هناك عدة طرق ولكني سأعطيك أسهل طريقة لاستيراد حيوانات الباندا في وظيفة AWS Lambda وهي إضافة طبقة Lambda؟
إنه ؟ طبقة الجبن في وظيفة Lambda تحتوي على تعليمات برمجية إضافية مثل المكتبات والتبعيات وما إلى ذلك.
تشبه طبقات AWS Lambda العناصر الأساسية لوظائفك. تخيل أنك بحاجة إلى أدوات إضافية (مثل مكتبة Pandas) لإكمال المشروع. بدلاً من تعبئة كل هذه الأدوات داخل كل مشروع على حدة (مما يهدر المساحة والوقت)، تتيح لك AWS إنشاء طبقات من الأدوات (المكتبات أو التبعيات أو التعليمات البرمجية المشتركة). تقع هذه الطبقات خارج وظيفتك الرئيسية ولكنها متاحة دائمًا عندما تحتاجها وظيفتك.
باختصار، تساعدك طبقات Lambda على:
توفير مساحة في التعليمات البرمجية الخاصة بك عن طريق فصل المنطق الرئيسي عن المكتبات الإضافية.
أعد استخدام المكتبات والتعليمات البرمجية عبر وظائف Lambda المتعددة.
قم بتحديث أو إدارة تبعياتك بسهولة دون تغيير رمز وظيفتك الأساسية.
فكر في الطبقات كصندوق تخزين إضافي متصل بوظيفة Lambda، حيث يحتوي على كل ما تحتاجه وظيفتك للعمل بسلاسة. يمكنك تكديس طبقات متعددة في وظيفتك دون تشويش الكود الرئيسي.
يستغرق الأمر 3 خطوات فقط لتشغيل Pandas في وظيفة Lambda بنجاح
كما ترون لدينا خيار الطبقات تحت اسم وظيفة Lambda، في حالتي، هو "import-pandas-function" وعدد الطبقات هو 0
تنقسم هذه الخطوة أيضًا إلى خطوتين لأننا نحتاج إلى إضافة برنامج Python النصي الذي يحتوي على بعض أكواد Pandas وكتابة حدث اختبار في JSON للتحقق مما إذا كان الكود يعمل بشكل صحيح.
import json import pandas as pd def lambda_handler(event, context): data = event.get('data', []) df = pd.DataFrame(data) if not df.empty: mean_value = df['column_name'].mean() result = { "mean_value": mean_value, "data_shape": df.shape, "summary": df.describe().to_dict() } else: result = { "message": "Empty DataFrame" } # Return the response return { 'statusCode': 200, 'body': json.dumps(result) }
{ "data": [ {"column_name": 10, "other_column": "A"}, {"column_name": 20, "other_column": "B"}, {"column_name": 30, "other_column": "C"}, {"column_name": 40, "other_column": "D"} ] }
اضغط على زر الاختبار ربما حصلت على الخطأ:-
"errorMessage": "غير قادر على استيراد الوحدة 'lambda_function': لا توجد وحدة باسم 'pandas'،
"errorType": "Runtime.ImportModuleError"
...
قم بالتمرير لأسفل إلى وظيفة Lambda، ربما يمكنك رؤية القسم المنفصل "الطبقات" في نهاية الصفحة
بعد النقر على "إضافة طبقة"، يمكنك رؤية الصفحة التي تحتوي على قسمين "إعدادات وقت التشغيل الوظيفي" و"اختيار طبقة"
يمكنك رؤية ثلاثة خيارات في قسم "اختيار طبقة"، انقر فوق "طبقات AWS".
بعد تحديد طبقات AWS، يمكنك رؤية القائمة المنسدلة ضمن "طبقات AWS".
في القائمة المنسدلة لطبقات AWS، حدد -> AWSSDKPandas-Python312
في القائمة المنسدلة "الإصدار"، حدد -> 13 (اختر الأكثر)
انقر فوق الزر "إضافة"
عندما يتم توجيه صفحتك إلى النظرة العامة على الوظيفة، يمكنك رؤية الطبقة المضافة أسفل اسم الوظيفة "import-pandas-function"
لقد حصلت على الاستجابة بنجاح "statusCode": 200
{ "statusCode": 200, "body": "{\"mean_value\": 25.0, \"data_shape\": [4, 2], \"summary\": {\"column_name\": {\"count\": 4.0, \"mean\": 25.0, \"std\": 12.909944487358056, \"min\": 10.0, \"25%\": 17.5, \"50%\": 25.0, \"75%\": 32.5, \"max\": 40.0}}}" }
استمر في البرمجة؟
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3