aws-samples / aws-secrets-manager-rotation-lambdas

Contains Lambda functions to be used for automatic rotation of secrets stored in AWS Secrets Manager
MIT No Attribution
327 stars 280 forks source link

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'pg' #68

Closed hemantproTR closed 1 year ago

hemantproTR commented 3 years ago

Hi, in CloudWatch getting this error:

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'pg' Traceback (most recent call last): --
whygoyal commented 2 years ago

Thank you for opening this issue - we are looking into it.

babuknb commented 2 years ago

Please let me know if any updates. Thanks.

nomadme commented 2 years ago

@whygoyal Any update on this?

Monikaa7 commented 1 year ago

I had the same issue with pymysql, fixed it by installing the package and zipping it with the function itself. You can follow up the AWS documentation for this - https://docs.aws.amazon.com/lambda/latest/dg/python-package.html

veelenga commented 1 year ago

Is there anything required in order to fix this problem when lambda is deployed as part of RotationSchedule ?

RotationSchedule:
  Type: AWS::SecretsManager::RotationSchedule
  Properties:
    HostedRotationLambda:
      RotationLambdaName: DBSecretRotationScheduleLambda
      RotationType: PostgreSQLSingleUser
      # ...

Logged error message is basically the same:

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named '_pg'
luchees commented 1 year ago

sudo apt-get install libpq-dev

add requirements.txt:

PyGreSQL == 5.0.7

pip3 install --target ./package -r requirements.txt

include the package directory with the lambda_function.py in a zip file use that as the lambda zip file

veelenga commented 1 year ago

@luchees this is doable if the lambda is a part of the cloudformation template, but in my case, it is a hosted one, meaning cloud formation creates a substack automatically when a rotation schedule is created. I don't have any control over the lambda dependencies.

However, my problem was solved by re-creating RotationSchedule. Not sure why it was broken.

nicholasgriffintn commented 1 year ago

Don't want to plus one this, but I've had this same issue today, on one AWS account, our function was working properly, for some reason, on the other, it was not.

Exporting from the working AWS account to the none working resolved it, but they were the same size before and after, so I'm not actually sure what that changed.

One of those creepy magic fixes....

To note: This occurred after a PG version update, but only on one of our AWS accounts, despite being updated in the same way, via CloudFormation.

rstevens011 commented 1 year ago

Hello everyone! Please review https://repost.aws/knowledge-center/secrets-manager-lambda-rotation. TLDR, if this is still impacting your lambda function, add the Runtime key to your AWS::SecretsManager::RotationSchedule resource (see docs here) with the version of python that the binary .so files are compiled against.