How to include a file for importing objects in aws lambda that is a custom resource for cdk v2?

248 Views Asked by At

I am using python 3.8 as the lambda runtime for my lambda function which I am trying to deploy using cdk v2. This is a lambda as a custom resource that runs every time the stack deploys.

This is the folder structure

 /Dynamics/cust_resource/__init__.py
 /Dynamics/cust_resource/data_objects.py
 /Dynamics/cust_resource/lambda.py
 /Dynamics/cust_resource/requirements.txt
 /Dynamics/__init__.py
 /Dynamics/dyna_stack.py
 app.py

This is the lambda code

import os
import boto3
import sys
 
print('before lambda import') 

from data_objects import poco_data

This is how I am creating the function in the stack

cust_res_lambda = _lambda.Function(
    self, 'crLambda',
    runtime=_lambda.Runtime.PYTHON_3_8,
    code=_lambda.Code.from_asset('Dynamics/cust_resource',
                                 bundling=BundlingOptions(
                                        image=_lambda.Runtime.PYTHON_3_8.bundling_image,
                                        command=["bash", "-c", "pip install -r requirements.txt -t /asset-output && cp -au . /asset-output"]
                                     )),
    handler='lambda.lambda_handler',
    function_name='crlambdaFn',
    
)

The lambda executes and I see the line before lambda import in cloudwatch logs followed by.

[ERROR] RuntimeError: generator didn't stop after throw()
Traceback (most recent call last):
  File "/var/lang/lib/python3.8/imp.py", line 234, in load_module
    return load_source(name, filename, file)
  File "/var/lang/lib/python3.8/imp.py", line 171, in load_source
    module = _load(spec)
  File "<frozen importlib._bootstrap>", line 702, in _load
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/var/task/lambda.py", line 12, in <module>
    from data_objects import poco_data
  File "/var/task/data_objects.py", line 1, in <module>
    from aws_cdk import (
  File "/var/task/aws_cdk/__init__.py", line 1257, in <module>
    from ._jsii import *
  File "/var/task/aws_cdk/_jsii/__init__.py", line 13, in <module>
    import constructs._jsii
  File "/var/task/constructs/__init__.py", line 43, in <module>
    from ._jsii import *
  File "/var/task/constructs/_jsii/__init__.py", line 13, in <module>
    __jsii_assembly__ = jsii.JSIIAssembly.load(
  File "/var/task/jsii/_runtime.py", line 54, in load
    _kernel.load(assembly.name, assembly.version, os.fspath(assembly_path))
  File "/var/lang/lib/python3.8/contextlib.py", line 162, in __exit__
    raise RuntimeError("generator didn't stop after throw()")
[ERROR] RuntimeError: generator didn't stop after throw() Traceback (most recent call last):   File "/var/lang/lib/python3.8/imp.py", line 234, in load_module     return load_source(name, filename, file)   File "/var/lang/lib/python3.8/imp.py", line 171, in load_source     module = _load(spec)   File "<frozen importlib._bootstrap>", line 702, in _load   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked   File "<frozen importlib._bootstrap_external>", line 843, in exec_module   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed   File "/var/task/lambda.py", line 12, in <module>     from data_objects import poco_data   File "/var/task/data_objects.py", line 1, in <module>     from aws_cdk import (   File "/var/task/aws_cdk/__init__.py", line 1257, in <module>     from ._jsii import *   File "/var/task/aws_cdk/_jsii/__init__.py", line 13, in <module>     import constructs._jsii   File "/var/task/constructs/__init__.py", line 43, in <module>     from ._jsii import *   File "/var/task/constructs/_jsii/__init__.py", line 13, in <module>     __jsii_assembly__ = jsii.JSIIAssembly.load(   File "/var/task/jsii/_runtime.py", line 54, in load     _kernel.load(assembly.name, assembly.version, os.fspath(assembly_path))   File "/var/lang/lib/python3.8/contextlib.py", line 162, in __exit__     raise RuntimeError("generator didn't stop after throw()")

What does this error mean and how to fix it?

0

There are 0 best solutions below