मैं M2Crypto लाइब्रेरी का उपयोग करके एक साधारण AWS लैम्ब्डा फ़ंक्शन बना रहा हूं। मैंने यहां. लैम्ब्डा फ़ंक्शन ईसी 2 लिनक्स इंस्टेंस (एएमआई) पर पूरी तरह से काम करता है।

यह मेरी कार्य परिभाषा है:

CloudOAuth.py

from M2Crypto import BIO, RSA, EVP
def verify(event, context):
  pem = "-----BEGIN PUBLIC KEY-----\n{0}\n-----END PUBLIC KEY-----".format("hello")
  bio = BIO.MemoryBuffer(str.encode(pem))
  print(bio)
  return 

परिनियोजन पैकेज संरचना:

Lambda Deployment Package skeleton

जब मैं लैम्ब्डा चलाता हूं, तो मुझे निम्न समस्या मिलती है और मैंने /lib64 निर्देशिका से libcrypto.so.10 को भी शामिल करने का प्रयास किया, लेकिन मदद नहीं की।

लैम्ब्डा चलाते समय समस्या

/var/task/M2Crypto/_m2crypto.so: प्रतीक sk_deep_copy, संस्करण libcrypto.so.10 लिंक समय संदर्भ के साथ libcrypto.so.10 फ़ाइल में परिभाषित नहीं है'

Python: 2.7
M2Crypto: 0.27.0
0
Tenzin Chemi 5 पद 2017, 15:34

2 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि M2Crypto को लैम्ब्डा की तुलना में ओपनएसएसएल के विभिन्न संस्करणों के साथ बनाया गया था। देखें प्रासंगिक कोड। अगर नहीं (अपस्ट्रीम मेंटेनर यहां बोल रहा है), तो कृपया https://gitlab.com/ पर एक बग फाइल करें। m2crypto/m2crypto/मुद्दे

1
mcepl 6 पद 2017, 13:01

मैं सिर्फ @ mcepl के उत्तर पर कुछ और विवरण जोड़ना चाहता हूं। सबसे महत्वपूर्ण यह है कि एडब्ल्यूएस लैम्ब्डा और पर्यावरण (मेरे मामले में ec2) पर ओपनएसएसएल संस्करण जहां आप अपनी एम 2 क्रिप्टो लाइब्रेरी बनाते हैं, मेल खाना चाहिए।

लैम्ब्डा पर ओपनएसएल संस्करण की जांच करने के लिए, अपने हैंडलर में प्रिंट का उपयोग करें:

print(ssl.OPENSSL_VERSION)

अपने निर्माण वातावरण पर ओपनएसएल संस्करण की जांच करने के लिए, उपयोग करें:

$ openssl version

एक बार जब वे मेल खाते हैं, तो यह काम करता है।

लैम्ब्डा पर्यावरण से मेल खाने के लिए अपने निर्माण पर्यावरण पर ओपनएसएसएल को डाउनग्रेड या अपग्रेड करने में संकोच न करें। लैम्ब्डा रनटाइम पर्यावरण से मेल खाने के लिए मुझे ec2 पर अपने ओपनएसएल को डाउनग्रेड करना पड़ा।

sudo yum -y downgrade openssl-devel-1.0.1k openssl-1.0.1k

आशा है कि यह M2Crypto का उपयोग करने की कोशिश करने वाले किसी भी व्यक्ति की मदद करेगा :)

1
imechemi 14 पद 2017, 17:05