Как сделать вызов шлюза aws api и лямбда-функции в реальном времени и обновить таблицу базы данных

У меня есть следующий скрипт, который выполняет вызов lambda function через API Gateway. Лямбда-функция, когда она вызывается, получает некоторые данные из базы данных (RDS), которая находится внутри AWS VPC, а затем обновляет некоторое значение.

snippet lambda


def handler(event, context):

   ...

    conn = pg2.connect(
        host=DATABASE_HOST,
        database=DATABASE_NAME,
        user=DATABASE_USER,
        password=DATABASE_PASSWORD,
    )

    try:

        cur = conn.cursor(cursor_factory=pg2extras.DictCursor)

        cur.execute("""
            SELECT users_user.id
            FROM users_user
            WHERE users_user.username = (%s)
        """, [username])

        ...

        cur.execute("""
            UPDATE person
            SET first_name = 'john'
            WHERE id = (%s)
        """, [user_id]) 
        ...

        conn.commit()

    except (Exception, pg2.DatabaseError) as e:
        if conn:
            conn.rollback()
        print("Error: {}".format(e))
        sys.exit((1))

    finally:
        if conn:
            response = {}

            response["statusCode"] = 200
            response["body"] = "OK"

            conn.close()

    return response

вызовы lambda и api gateway хранятся в aws cloudwatch log streams.

Теперь я заметил, что при первом обращении к этому api шлюзу, по какой-то причине, я должен ждать до второго обращения, чтобы обновление отобразилось, когда я запрашиваю данные из базы данных, то же самое происходит, когда я смотрю на поток журнала, я не могу увидеть журнал реального времени.

Когда я делаю вызов 1 на шлюз api, мне нужно сделать вызов 2, чтобы увидеть данные из вызова 1 в потоке журнала и обновленные в базе данных. поэтому если мне нужно увидеть изменения из вызова 2, мне нужно сделать вызов 3

Как я могу решить эту проблему, извините, если это может быть очень широко, потому что я никак не могу показать все инфраструктурные коды, написанные в terraform, а затем бэкенд с django.

Если кто-то сталкивался с подобным, используя aws api gateway и лямбду, пожалуйста, дайте мне знать, я совершенно не понимаю, почему так происходит

Вернуться на верх