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?