विषय पर बढ़ें

pydantic AWS लैम्ब्डा फ़ंक्शंस के साथ अच्छी तरह से एकीकृत होता है। इस गाइड में, हम चर्चा करेंगे कि AWS लैम्ब्डा फ़ंक्शन के लिए pydantic कैसे सेटअप किया जाए।

AWS लैम्ब्डा फ़ंक्शंस के लिए पायथन लाइब्रेरी स्थापित करना

AWS लैम्ब्डा फ़ंक्शंस में पायथन लाइब्रेरीज़ का उपयोग करने के कई तरीके हैं। जैसा कि AWS लैम्ब्डा दस्तावेज़ में बताया गया है, सबसे आम तरीकों में शामिल हैं:

इन सभी दृष्टिकोणों का उपयोग pydantic के साथ किया जा सकता है। आपके लिए सर्वोत्तम दृष्टिकोण आपकी विशिष्ट आवश्यकताओं और बाधाओं पर निर्भर करेगा। हम यहां पहले दो मामलों को अधिक गहराई से कवर करेंगे, क्योंकि कंटेनर छवि के साथ निर्भरता प्रबंधन अधिक सरल है। यदि आप एक कंटेनर छवि का उपयोग कर रहे हैं, तो आपको यह टिप्पणी pydantic स्थापित करने के लिए उपयोगी लग सकती है।

!!! टिप यदि आप कई कार्यों में pydantic उपयोग करते हैं, तो आप एडब्ल्यूएस लैम्ब्डा लेयर्स पर विचार करना चाह सकते हैं, जो कई कार्यों में पुस्तकालयों के निर्बाध साझाकरण का समर्थन करता है।

आपके द्वारा चुने गए निर्भरता प्रबंधन दृष्टिकोण के बावजूद, एक सुचारू निर्भरता प्रबंधन प्रक्रिया सुनिश्चित करने के लिए इन दिशानिर्देशों का पालन करना फायदेमंद है।

AWS लैम्ब्डा फ़ंक्शंस के लिए pydantic इंस्टॉल करना

जब आप अपने कोड और निर्भरता के साथ अपना .zip फ़ाइल संग्रह बना रहे हैं या लैम्ब्डा लेयर के लिए अपनी .zip फ़ाइल को व्यवस्थित कर रहे हैं, तो आप संभवतः अपनी निर्भरता को स्थापित और प्रबंधित करने के लिए एक स्थानीय वर्चुअल वातावरण का उपयोग करेंगे। यदि आप pip उपयोग कर रहे हैं तो यह थोड़ा मुश्किल हो सकता है क्योंकि pip आपके स्थानीय प्लेटफ़ॉर्म के लिए संकलित पहियों को स्थापित करता है, जो लैम्ब्डा वातावरण के साथ संगत नहीं हो सकता है।

इस प्रकार, हमारा सुझाव है कि आप निम्नलिखित के समान एक कमांड का उपयोग करें:

pip install \
    --platform manylinux2014_x86_64 \  # (1)!
    --target=<your_package_dir> \  # (2)!
    --implementation cp \  # (3)!
    --python-version 3.10 \  # (4)!
    --only-binary=:all: \  # (5)!
    --upgrade pydantic  # (6)!
  1. अपने लैम्ब्डा रनटाइम के अनुरूप प्लेटफ़ॉर्म का उपयोग करें।
  2. वह निर्देशिका निर्दिष्ट करें जहाँ आप पैकेज स्थापित करना चाहते हैं (अक्सर लैम्ब्डा लेयर्स के लिए python )।
  3. सीपीथॉन कार्यान्वयन का उपयोग करें।
  4. पायथन संस्करण लैम्ब्डा रनटाइम के साथ संगत होना चाहिए।
  5. यह ध्वज सुनिश्चित करता है कि पैकेज में पूर्व-निर्मित बाइनरी व्हील स्थापित हैं।
  6. pydantic का नवीनतम संस्करण स्थापित किया जाएगा।

समस्या निवारण

no module named 'pydantic_core._pydantic_core'

no module named `pydantic_core._pydantic_core`

त्रुटि एक सामान्य समस्या है जो इंगित करती है कि आपने pydantic गलत तरीके से स्थापित किया है। इस समस्या को डीबग करने के लिए, आप निम्न चरणों का प्रयास कर सकते हैं (असफल आयात से पहले):

  1. स्थापित pydantic-core पैकेज की सामग्री की जाँच करें। क्या संकलित पुस्तकालय और उसके प्रकार के स्टब्स दोनों मौजूद हैं?

    from importlib.metadata import files print([file for file in files('pydantic-core') if file.name.startswith('_pydantic_core')]) """ [PackagePath('pydantic_core/_pydantic_core.pyi'), PackagePath('pydantic_core/_pydantic_core.cpython-312-x86_64-linux-gnu.so')] """

आपको ऊपर छपी फाइलों जैसी दो फाइलें देखने की उम्मीद करनी चाहिए। कंपाइल लाइब्रेरी फ़ाइल एक .so या .pyd होगी जिसका नाम OS और Python संस्करण के अनुसार अलग-अलग होगा।

  1. जांचें कि आपके लैम्ब्डा का पायथन संस्करण ऊपर पाए गए संकलित लाइब्रेरी संस्करण के साथ संगत है।

    import sysconfig print(sysconfig.get_config_var("EXT_SUFFIX"))

    > '.cpython-312-x86_64-linux-gnu.so'

आपको यहां संकलित लाइब्रेरी के समान प्रत्यय देखने की उम्मीद करनी चाहिए, उदाहरण के लिए यहां हम इस प्रत्यय को देखते हैं .cpython-312-x86_64-linux-gnu.so वास्तव में मेल खाता है _pydantic_core.cpython-312-x86_64-linux-gnu.so .

यदि ये दोनों चेक मेल नहीं खाते हैं, तो आपके निर्माण चरणों ने आपके लैम्ब्डा के लक्ष्य प्लेटफ़ॉर्म के लिए सही मूल कोड स्थापित नहीं किया है। आपको स्थापित लाइब्रेरी के संस्करण को बदलने के लिए अपने निर्माण चरणों को समायोजित करना चाहिए जो इंस्टॉल हो जाता है।

सबसे अधिक संभावित त्रुटियाँ:

  • आपका OS या CPU आर्किटेक्चर बेमेल है (उदाहरण के लिए डार्विन बनाम x86_64-linux-gnu)। अपनी लैम्ब्डा निर्भरता स्थापित करते समय pip install पर सही --platform तर्क पारित करने का प्रयास करें, या सही प्लेटफ़ॉर्म के लिए एक linux docker कंटेनर के अंदर निर्माण करें। इस समय संभावित प्लेटफार्मों में शामिल हैं --platform manylinux2014_x86_64 या --platform manylinux2014_aarch64 , लेकिन भविष्य में पाइडेंटिक प्रमुख रिलीज़ के साथ ये बदल सकते हैं।

  • आपका पायथन संस्करण बेमेल है (उदाहरण के लिए cpython-310 बनाम cpython-312 )। pip install पर सही --python-version तर्क पारित करने का प्रयास करें, या अन्यथा अपने निर्माण पर उपयोग किए गए Python संस्करण को बदलें।

email-validator के लिए कोई पैकेज मेटाडेटा नहीं मिला

email-validator का कौन सा संस्करण स्थापित है, यह जांचने के लिए पाइडेंटिक importlib.metadata से version का उपयोग करता है। यह पैकेज वर्जनिंग तंत्र AWS लैम्ब्डा के साथ कुछ हद तक असंगत है, भले ही यह पायथन में पैकेज वर्जनिंग के लिए उद्योग मानक है। इस समस्या को ठीक करने के कुछ तरीके हैं:

यदि आप अपने लैम्ब्डा को सर्वर रहित ढांचे के साथ तैनात कर रहे हैं, तो संभव है कि email-validator पैकेज के लिए उपयुक्त मेटाडेटा आपके परिनियोजन पैकेज में शामिल नहीं किया जा रहा है। उपकरण जैसे serverless-python-requirements पैकेज का आकार कम करने के लिए मेटाडेटा हटाएँ। आप अपनी serverless.yml फ़ाइल में slim सेटिंग को गलत पर सेट करके इस समस्या को ठीक कर सकते हैं:

pythonRequirements:
    dockerizePip: non-linux
    slim: false
    fileName: requirements.txt

आप इस सुधार और अन्य slim सेटिंग्स के बारे में यहां अधिक पढ़ सकते हैं जो प्रासंगिक हो सकती हैं।

यदि आप अपने कोड और/या निर्भरता के लिए .zip संग्रह का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपके पैकेज में आवश्यक संस्करण मेटाडेटा शामिल है। ऐसा करने के लिए, सुनिश्चित करें कि आपने email-validator पैकेज के लिए अपने .zip संग्रह में dist-info निर्देशिका शामिल की है।

यह समस्या jsonschema जैसी अन्य लोकप्रिय पायथन लाइब्रेरीज़ के लिए रिपोर्ट की गई है, इसलिए आप समस्या और संभावित समाधानों के बारे में वहां भी अधिक पढ़ सकते हैं।

अतिरिक्त संसाधन

अधिक डिबगिंग युक्तियाँ

यदि आप अभी भी अपने AWS लैम्ब्डा के लिए pydantic स्थापित करने में संघर्ष कर रहे हैं, तो आप इस मुद्दे पर परामर्श ले सकते हैं, जिसमें अन्य डेवलपर्स द्वारा सामना की जाने वाली विभिन्न समस्याओं और समाधानों को शामिल किया गया है।

event और context डेटा का सत्यापन

AWS लैम्ब्डा फ़ंक्शंस में event और context डेटा को मान्य करने के लिए pydantic उपयोग करने के तरीके के बारे में अधिक जानने के लिए हमारा ब्लॉग पोस्ट देखें।


本文总阅读量