#python #amazon-web-services #aws-lambda #amazon-dynamodb #chalice
Вопрос:
Мне нужно использовать данные из Amazon DynamoDB в моем лямбда-коде. Я использовал чашу для развертывания выходных данных на сервере.
Однако я не всегда могу использовать команду «развернуть чашу» для получения новейших записей в Amazon DynamoDB, поэтому я хотел передавать таблицы Amazon DynamoDB в функцию Lambda, активируя ее каждый раз при появлении новой записи (любое изменение вообще должно вызывать функцию).
В существующих учебниках это звучит довольно просто, но на самом деле это не работает, и я не могу понять, почему. Я интегрировал следующие строки в свой код на python:
app = Chalice(app_name='AssessmentLambda')
app.debug = True
@app.on_dynamodb_record(stream_arn='arn:aws:dynamodb:eu-central-1:xxxxx/2021-10-25T12:39:36.985')
def handle_ddb_message(event):
for record in event:
app.log.debug("New: %s", record.new_image)
Я также устанавливал триггеры в AWS: я пробовал как устанавливать триггер в dynamodb, так и в самой лямбда-функции. Я думаю, проблема в том, что я действительно не понимаю весь процесс в функции «handle_ddb_message». Я что-то пропустил? Нужно ли мне что-то адаптировать, так как я скопировал код из примера?
Если я выполню тест для функции AssessmentLambda-dev-handle_ddb_message, я получу:
> { "errorMessage": "'Records'", "errorType": "KeyError",
> "stackTrace": [
> " File "/var/task/chalice/app.py", line 1595, in __call__n return self.handler(event_obj)n",
> " File "/var/task/app.py", line 4539, in handle_ddb_messagen for record in event:n",
> " File "/var/task/chalice/app.py", line 1924, in __iter__n for record in self._event_dict['Records']:n" ] }