Lambda (Python 3.7) 내에서 자체 버전의 boto3을 사용해야합니다. Lambda 기본 Python 3.7 env (1.9.42)에 포함 된 버전은 어떤 이유로 든 Textract 사용을 지원하지 않습니다.
이를 위해 가이드를 기반으로 다음을 수행했습니다 .
pip freeze > requirements.txt
이 파일을 생성합니다 :# requirements.txt
boto3==1.9.138
botocore==1.12.138
docutils==0.14
jmespath==0.9.4
python-dateutil==2.8.0
s3transfer==0.2.0
six==1.12.0
urllib3==1.24.2
mkdir build
pip3 install -r requirements.txt -t build/
cd build
zip -r ../boto3_layer.zip .
그런 다음 GUI를 사용하여 새 Lambda 레이어 (boto3Layer)를 업로드했습니다. 그런 다음 Lambda 함수에 레이어를 성공적으로 추가했습니다.
문제는 인라인 코드 편집기를 사용하여 해당 레이어를 코드로 가져 오는 방법을 알 수 없다는 것입니다.
다음 코드가 있습니다.
...
from boto3_layer as boto3
...
log.info(boto3)
오류가 발생합니다 "errorMessage": "Unable to import module 'lambda_function': No module named 'boto3_layer'"
또한 가져 오기를 시도했지만 boto3
잘못된 버전 (Lamda에서 사용하는 버전)임을 확인 했으므로 가져 오기가 재정의하지 않았습니다.
내 사용자 지정 레이어를 코드로 가져 오는 방법을 간단히 알고 싶습니다! 감사
편집 : 제안 시도 :
virtualenv python --python=python3.7
source python/bin/activate
그리고 pip3 install boto3
zip -r boto3_layer.zip python/lib/
boto3_layer.zip
Lambda 함수를 사용 하여 새 Lambda 레이어 생성 및 레이어 추가"errorMessage": "Unable to import module 'lambda_function': No module named 'boto3_layer'",
이것은 boto3
내 사용자 지정 이름 대신 가져 오기로 작동했습니다 .
import boto3
def lambda_handler(event, context):
textract = boto3.client('textract')
디렉토리는 모듈 / 패키지가 아닙니다. 사용중인 접근 방식이 작동하지 않습니다.
이 모든 것 대신 원하는 Python 버전을 사용하여 가상 환경을 작성하십시오. 가능하면 도커 내에서 패키지를 설치하십시오. 그런 다음 lib
압축을 풀 때 레이어가 디렉토리 구조를 생성하도록 가상 환경에서 폴더를 압축해야합니다.
python/
lib/
pythonx.y/
site-packages/
...
python
이것이 작동 하려면 최상위 디렉토리의 이름 을 지정해야합니다 .
이 작업을 올바르게 수행하면 boto3
정상적으로 버전을 가져올 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다