Как сделать вызов шлюза 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 и лямбду, пожалуйста, дайте мне знать, я совершенно не понимаю, почему так происходит