Почему функция AWS Lambda создает разные ключи через событие и получает SQS? ⇐ Python
Почему функция AWS Lambda создает разные ключи через событие и получает SQS?
Когда я локально тестирую функцию AWS Python Lambda, я использую SQS, подобный этому:
если LOCAL_DEVELOPMENT: ответ = sqs.receive_message( QueueUrl=SQS_URI_ACCOUNT_UPDATE_RECEIPTS, AttributeNames=[ 'Все' ], МаксКоличествоСообщений=10, MessageAttributeNames=[ 'Все' ], VisibilityTimeout=30, WaitTimeSeconds=5 ) message_list = response.get('Messages', None) # локальный еще: message_list = event.get('Records', None) # производство Я использую MessageId для получения идентификатора message, но когда он развертывается как фактическая функция, я получаю ошибку, поскольку ключ сообщения event равен затем вызывается messageId.
То же самое появляется, когда я получаю тело сообщения. Мне нужно использовать Body, когда я использую получение SQS против тела, когда это происходит через функции event.
Пример события['Records'], показывающего body и messageId. Нет никакого смысла в том, что это противоречиво.
{ "messageId":"6288112e-cd71-459c-97dd-6a15374b83a7", "receiptHandle":"asdkljfhp98sdaufkjherf9p8yasdfiugh3948qfyoihfrea9d8yfvp9834qufoijadsfp09yerp98gy", "body":"{\"account_id\": 13005067466}", "атрибуты":{ "ApproximateReceiveCount":"18", "AWSTraceHeader":"Root=1-345gdfgdfgdfg-daferqt3465dfgdfs;Parent=44595adsdfa23sdf3d4f79;Sampled=0;Lineage=1123scv:0", "SentTimestamp":"6253012341170429", "SequenceNumber":"1448036761613488830439", "MessageGroupId":"067461302345056", "SenderId":"040634420219", "MessageDeduplicationId":"a0adbd82e598b1dasdf4767311311sdf277f71178", "ApproximateFirstReceiveTimestamp":"1704364222347612" }, "messageAttributes":{ "updated_at":{ "stringValue":"01-03-2024 15:37:00", "stringListValues":[ ], "binaryListValues":[ ], "dataType":"Строка" }, "webhook_type":{ "stringValue":"компания", "stringListValues":[ ], "binaryListValues":[ ], "dataType":"Строка" }, "fg_id":{ "stringValue":"13001234342", "stringListValues":[ ], "binaryListValues":[ ], "dataType":"Число" }, "создан в":{ "stringValue":"03-04-2023 17:35:04", "stringListValues":[ ], "binaryListValues":[ ], "dataType":"Строка" } }, "md5OfBody":"354342152345", "md5OfMessageAttributes":"23452345345", "eventSource":"aws:sqs", "eventSourceARN":"arn:aws:sqs:fifo", "awsRegion":"eu-west-2" } Есть ли какой-то метод, который мне следует использовать для преобразования между ними, или альтернативный способ локального тестирования с фактическими данными о событиях, поскольку во время тестирования он заканчивается несколькими операторами if else.
Когда я локально тестирую функцию AWS Python Lambda, я использую SQS, подобный этому:
если LOCAL_DEVELOPMENT: ответ = sqs.receive_message( QueueUrl=SQS_URI_ACCOUNT_UPDATE_RECEIPTS, AttributeNames=[ 'Все' ], МаксКоличествоСообщений=10, MessageAttributeNames=[ 'Все' ], VisibilityTimeout=30, WaitTimeSeconds=5 ) message_list = response.get('Messages', None) # локальный еще: message_list = event.get('Records', None) # производство Я использую MessageId для получения идентификатора message, но когда он развертывается как фактическая функция, я получаю ошибку, поскольку ключ сообщения event равен затем вызывается messageId.
То же самое появляется, когда я получаю тело сообщения. Мне нужно использовать Body, когда я использую получение SQS против тела, когда это происходит через функции event.
Пример события['Records'], показывающего body и messageId. Нет никакого смысла в том, что это противоречиво.
{ "messageId":"6288112e-cd71-459c-97dd-6a15374b83a7", "receiptHandle":"asdkljfhp98sdaufkjherf9p8yasdfiugh3948qfyoihfrea9d8yfvp9834qufoijadsfp09yerp98gy", "body":"{\"account_id\": 13005067466}", "атрибуты":{ "ApproximateReceiveCount":"18", "AWSTraceHeader":"Root=1-345gdfgdfgdfg-daferqt3465dfgdfs;Parent=44595adsdfa23sdf3d4f79;Sampled=0;Lineage=1123scv:0", "SentTimestamp":"6253012341170429", "SequenceNumber":"1448036761613488830439", "MessageGroupId":"067461302345056", "SenderId":"040634420219", "MessageDeduplicationId":"a0adbd82e598b1dasdf4767311311sdf277f71178", "ApproximateFirstReceiveTimestamp":"1704364222347612" }, "messageAttributes":{ "updated_at":{ "stringValue":"01-03-2024 15:37:00", "stringListValues":[ ], "binaryListValues":[ ], "dataType":"Строка" }, "webhook_type":{ "stringValue":"компания", "stringListValues":[ ], "binaryListValues":[ ], "dataType":"Строка" }, "fg_id":{ "stringValue":"13001234342", "stringListValues":[ ], "binaryListValues":[ ], "dataType":"Число" }, "создан в":{ "stringValue":"03-04-2023 17:35:04", "stringListValues":[ ], "binaryListValues":[ ], "dataType":"Строка" } }, "md5OfBody":"354342152345", "md5OfMessageAttributes":"23452345345", "eventSource":"aws:sqs", "eventSourceARN":"arn:aws:sqs:fifo", "awsRegion":"eu-west-2" } Есть ли какой-то метод, который мне следует использовать для преобразования между ними, или альтернативный способ локального тестирования с фактическими данными о событиях, поскольку во время тестирования он заканчивается несколькими операторами if else.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
AWS Lambda (.NET) + SQS: ошибка преобразования полезных данных JSON события Lambda в строку
Anonymous » » в форуме C# - 0 Ответы
- 85 Просмотры
-
Последнее сообщение Anonymous
-
-
-
MassTransit в AWS Lambda SQS не помещает сообщение в очередь ошибок на исключение
Anonymous » » в форуме C# - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-