2017-12-05 8 views
0

M2Crypto 라이브러리를 사용하여 간단한 AWS 람다 함수를 생성합니다. 배포 패키지를 만드는 단계는 here입니다. 람다 함수는 EC2 Linux 인스턴스 (AMI)에서 완벽하게 작동합니다.스크립트는 AWS EC2에서 작동하지만 AWS Lambda에서는 작동하지 않습니다.

이 제 기능 정의입니다 :

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

내가 람다를 실행하면, 나는 다음과 같은 문제와 I를 얻을 수/lib64 디렉토리에서 libcrypto.so.10을 포함하여 시도했지만 도움이되지 않았습니다.

문제 람다

를 실행

/var/task/M2Crypto/_m2crypto.so : 기호 sk_deep_copy이 버전 링크 타임에 파일 libcrypto.so.10에 정의되지 libcrypto.so.10 reference`

Python: 2.7 
M2Crypto: 0.27.0 
+0

당신이 내 대답을 표시하십시오 수 사용하려고하는 사람을 도움이 될 것입니다 희망? – mcepl

+0

예, 고마워요! 나는 나 자신과 같은 초심자를 위해 더 자세한 내용을 추가했다. – imechemi

+0

예, EC2에 대한 단서가 없으므로 매우 유용합니다. 고맙습니다. – mcepl

답변

0

@ mcepl의 대답에 대한 자세한 내용을 추가하고 싶습니다. 가장 중요한 점은 AWS Lambda의 OpenSSL 버전과 내 사례 인 ec2에서 M2Crypto 라이브러리를 빌드해야하는 환경이 일치해야한다는 것입니다.

이, 람다에있는 OpenSSL의 버전을 확인 핸들러에서 인쇄를 사용하려면 :

print(ssl.OPENSSL_VERSION) 

는 빌드 환경에서의 openssl 버전을 확인하려면 사용

$ openssl version 

가 일치되면, 그것은 작동합니다.

람다 환경과 일치하도록 빌드 환경에서 OpenSSL을 다운 그레이드하거나 업그레이드하는 것을 망설이지 마십시오. 람다 런타임 환경에 맞게 ec2에서 내 openssl을 다운 그레이드해야했습니다. 이 때문에 바랍니다 경우

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

는 그것을 허용으로 M2Crypto가 :