I have my python code deployed to aws lambda where I get the same response no matter how many times I trigger it even with different inputs.
Here is my code:
handler.py
import lambdaLogicClass from “./lambdaLogicClass”
lgc = lgc.fetch_env()
def handler(event):
lgc.run_process(event)
lambdaLogicClass.py
Class lambdaLogicClass:
def __init__(self, env_value):
self.x = env_value
self.y = {}
@classmethod
def fetch_env(cls):
return cls(env_value=os.getenv(env_key)
def run_process():
#some_logic
I get the same value from my lambda which invokes run_process method defined in my Class. I debugged and checked that after every run the class variables x doesn’t change in next run of lambda trigger.
Move the following code inside your Lambda function handler:
lgc = lgc.fetch_env()
So, the code should be:
import lambdaLogicClass from “./lambdaLogicClass”
def handler(event):
lgc = lgc.fetch_env()
lgc.run_process(event)
As it stands, your lgc
variable will only be initialized during a cold start. Any subsequent warm start will reuse the previous Lambda invocation's globally-scoped variables.