我的Cognito用户池触发自定义消息Lambda函数。此Lambda函数使用SQLAlchemy和pymysql连接器获取对象并更新该对象。在Lambda控制台中通过手动测试运行时,一切正常。但是,当Cognito触发该函数时,将成功检索该对象,但不会提交对该对象的更新。
我已经尝试了其他用于Python的MySQL驱动程序。我已经在本地和通过Lambda控制台测试了相同的脚本,并且两种方法都能正常工作。
DB = {...}
def get_orm_session():
connection_string = f'mysql+pymysql://{DB["user"]}:{DB["password"]}@{DB["host"]}:3306/{DB["database"]}'
engine = create_engine(connection_string, echo=True)
Session = sessionmaker(bind=engine)
session = Session()
return session, engine
def handle(cognito_event, context):
source = cognito_event['triggerSource']
email = user_attributes['email']
if source == 'CustomMessage_SignUp':
session, engine = get_orm_session()
obj = session.query(UsersIndividual).filter(UsersIndividual.email==email).first()
obj.code = 'abc123'
session.commit()
session.close()
engine.dispose()
return cognito_event
我希望obj.code的更改能够提交,但是在Cognito触发时不会生效。
更新:我从AWS支持团队那里得到消息,由Cognito触发的Lambda功能期望在5秒内得到响应。我相信这是数据库提交未通过的原因。