数据库更新不适用于AWS Lambda

时间:2019-07-23 21:38:15

标签: python mysql sqlalchemy aws-lambda

我的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秒内得到响应。我相信这是数据库提交未通过的原因。

0 个答案:

没有答案