AWS Lambda에서 보안 암호를 교체하지 못할 때 AWS Secrets Manager Lambda 함수 로그의 ‘pg module not found’ 오류를 해결하고 싶습니다.
간략한 설명
Lambda 함수가 Python 3.7에서 최신 버전으로 자동 업그레이드된 경우 ‘pg module not found’ 오류가 발생할 수 있습니다. Python 3.9와 같은 최신 버전은 필수 모듈을 지원하지 않을 수 있습니다. Lambda의 Python 버전 전반에서 지원되는 모듈 및 라이브러리에 대한 자세한 내용은 지원되는 런타임을 참조하십시오.
해결 방법
Lambda 함수 Python 버전 확인
다음 단계를 완료하십시오.
-
Lambda 콘솔을 엽니다.
-
탐색 창에서 함수를 선택한 다음, 교체하지 않은 Lambda의 이름을 선택합니다.
-
코드 탭을 선택합니다.
-
런타임 설정에서 Python 버전을 기록해 둡니다.
-
작업을 선택하고 함수 내보내기를 선택한 다음, 배포 패키지 다운로드를 선택합니다.
-
압축 해제된 .zip 파일의 디렉터리에서 다음 find Linux 명령을 실행합니다.
find ./ -name “*cpython-*-x86_64-linux-gnu.so”
-
Python 런타임 버전이 .so 파일 이름에 있는지 확인합니다.
예를 들어, _cffi_backend.cpython-37m-x86_64-linux-gnu.so입니다.
참고: Python 3.7 .so 파일이 있는데 Lambda 런타임에 최신 버전이 표시되면 버전 불일치가 있는 것입니다. CloudFormation 템플릿 업데이트 프로세스를 통해 이 불일치를 해결해야 합니다.
AWS CloudFormation 템플릿 업데이트
Lambda 함수 오류를 해결하려면 다음 단계를 완료하십시오.
- Lambda 함수를 생성하는 데 사용한 스택 템플릿을 업데이트합니다.
- 런타임 속성을 AWS::SecretsManager::RotationSchedule HostedRotationLambda의 HostedRotationLambda 객체에 추가합니다.
- CloudFormation 스택을 재배포하여 변경 사항을 적용합니다.
CloudFormation이 Lambda 교체 함수를 Python 3.7로 다시 변경합니다.
참고: Python 3.7의 경우, 런타임 키 값은 python3.7여야 합니다.
관련 정보
기존 교체 함수를 Python 3.7에서 3.9로 업그레이드