diff --git a/localstack-core/localstack/services/lambda_/event_source_mapping/pollers/sqs_poller.py b/localstack-core/localstack/services/lambda_/event_source_mapping/pollers/sqs_poller.py index 65953f13bd263..58ffa05d752e6 100644 --- a/localstack-core/localstack/services/lambda_/event_source_mapping/pollers/sqs_poller.py +++ b/localstack-core/localstack/services/lambda_/event_source_mapping/pollers/sqs_poller.py @@ -66,7 +66,9 @@ def poll_events(self) -> None: # https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes-sqs.html#pipes-sqs-scaling response = self.source_client.receive_message( QueueUrl=self.queue_url, - MaxNumberOfMessages=self.sqs_queue_parameters["BatchSize"], + MaxNumberOfMessages=min( + self.sqs_queue_parameters["BatchSize"], DEFAULT_MAX_RECEIVE_COUNT + ), # BatchSize cannot exceed 10 MessageAttributeNames=["All"], MessageSystemAttributeNames=[MessageSystemAttributeName.All], ) diff --git a/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py b/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py index 661364033a2a9..e45ad2f045a55 100644 --- a/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py +++ b/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py @@ -3,7 +3,7 @@ import pytest from botocore.exceptions import ClientError -from localstack_snapshot.snapshots.transformer import KeyValueBasedTransformer +from localstack_snapshot.snapshots.transformer import KeyValueBasedTransformer, SortingTransformer from localstack import config from localstack.aws.api.lambda_ import InvalidParameterValueException, Runtime @@ -15,6 +15,7 @@ from localstack.utils.testutil import check_expected_lambda_log_events_length, get_lambda_log_events from tests.aws.services.lambda_.functions import FUNCTIONS_PATH, lambda_integration from tests.aws.services.lambda_.test_lambda import ( + TEST_LAMBDA_EVENT_SOURCE_MAPPING_SEND_MESSAGE, TEST_LAMBDA_PYTHON, TEST_LAMBDA_PYTHON_ECHO, TEST_LAMBDA_PYTHON_ECHO_VERSION_ENV, @@ -1042,6 +1043,182 @@ def test_sqs_event_source_mapping( rs = aws_client.sqs.receive_message(QueueUrl=queue_url_1) assert rs.get("Messages", []) == [] + @pytest.mark.parametrize("batch_size", [15, 100, 1_000, 10_000]) + @markers.aws.validated + def test_sqs_event_source_mapping_batch_size( + self, + create_lambda_function, + sqs_create_queue, + sqs_get_queue_arn, + lambda_su_role, + snapshot, + cleanups, + aws_client, + batch_size, + ): + snapshot.add_transformer(snapshot.transform.sqs_api()) + snapshot.add_transformer(SortingTransformer("Records", lambda s: s["body"]), priority=-1) + + destination_queue_name = f"destination-queue-{short_uid()}" + function_name = f"lambda_func-{short_uid()}" + source_queue_name = f"source-queue-{short_uid()}" + mapping_uuid = None + + destination_queue_url = sqs_create_queue(QueueName=destination_queue_name) + create_lambda_function( + func_name=function_name, + handler_file=TEST_LAMBDA_EVENT_SOURCE_MAPPING_SEND_MESSAGE, + runtime=Runtime.python3_12, + envvars={"SQS_QUEUE_URL": destination_queue_url}, + role=lambda_su_role, + ) + + queue_url = sqs_create_queue(QueueName=source_queue_name) + queue_arn = sqs_get_queue_arn(queue_url) + + create_event_source_mapping_response = aws_client.lambda_.create_event_source_mapping( + EventSourceArn=queue_arn, + FunctionName=function_name, + MaximumBatchingWindowInSeconds=10 if is_aws_cloud() else 2, + BatchSize=batch_size, + ) + mapping_uuid = create_event_source_mapping_response["UUID"] + cleanups.append(lambda: aws_client.lambda_.delete_event_source_mapping(UUID=mapping_uuid)) + snapshot.match("create-event-source-mapping-response", create_event_source_mapping_response) + _await_event_source_mapping_enabled(aws_client.lambda_, mapping_uuid) + + reponse_batch_send_10 = aws_client.sqs.send_message_batch( + QueueUrl=queue_url, + Entries=[{"Id": f"{i}-0", "MessageBody": f"{i}-0-message-{i}"} for i in range(10)], + ) + snapshot.match("send-message-batch-result-10", reponse_batch_send_10) + + reponse_batch_send_5 = aws_client.sqs.send_message_batch( + QueueUrl=queue_url, + Entries=[{"Id": f"{i}-1", "MessageBody": f"{i}-1-message-{i}"} for i in range(5)], + ) + snapshot.match("send-message-batch-result-5", reponse_batch_send_5) + + batches = [] + + def get_msg_from_q(): + messages_to_delete = [] + receive_message_response = aws_client.sqs.receive_message( + QueueUrl=destination_queue_url, + MaxNumberOfMessages=10, + VisibilityTimeout=120, + WaitTimeSeconds=5 if is_aws_cloud() else 1, + ) + messages = receive_message_response.get("Messages", []) + for message in messages: + received_batch = json.loads(message["Body"]) + batches.append(received_batch) + messages_to_delete.append( + {"Id": message["MessageId"], "ReceiptHandle": message["ReceiptHandle"]} + ) + + aws_client.sqs.delete_message_batch( + QueueUrl=destination_queue_url, Entries=messages_to_delete + ) + assert sum([len(batch) for batch in batches]) == 15 + return [message for batch in batches for message in batch] + + events = retry(get_msg_from_q, retries=15, sleep=5) + snapshot.match("Records", events) + + # FIXME: this fails due to ESM not correctly collecting and sending batches + # where size exceeds 10 messages. + @markers.snapshot.skip_snapshot_verify(paths=["$..total_batches_received"]) + @markers.aws.validated + def test_sqs_event_source_mapping_batching_reserved_concurrency( + self, + create_lambda_function, + sqs_create_queue, + sqs_get_queue_arn, + lambda_su_role, + snapshot, + cleanups, + aws_client, + ): + snapshot.add_transformer(snapshot.transform.sqs_api()) + snapshot.add_transformer(SortingTransformer("Records", lambda s: s["body"]), priority=-1) + + destination_queue_name = f"destination-queue-{short_uid()}" + function_name = f"lambda_func-{short_uid()}" + source_queue_name = f"source-queue-{short_uid()}" + mapping_uuid = None + + destination_queue_url = sqs_create_queue(QueueName=destination_queue_name) + create_lambda_function( + func_name=function_name, + handler_file=TEST_LAMBDA_EVENT_SOURCE_MAPPING_SEND_MESSAGE, + runtime=Runtime.python3_12, + envvars={"SQS_QUEUE_URL": destination_queue_url}, + role=lambda_su_role, + ) + + # Prevent more than 2 Lambdas from being spun up at a time + put_concurrency_resp = aws_client.lambda_.put_function_concurrency( + FunctionName=function_name, ReservedConcurrentExecutions=2 + ) + snapshot.match("put_concurrency_resp", put_concurrency_resp) + + queue_url = sqs_create_queue(QueueName=source_queue_name) + queue_arn = sqs_get_queue_arn(queue_url) + + create_event_source_mapping_response = aws_client.lambda_.create_event_source_mapping( + EventSourceArn=queue_arn, + FunctionName=function_name, + MaximumBatchingWindowInSeconds=10, + BatchSize=20, + ScalingConfig={ + "MaximumConcurrency": 2 + }, # Prevent more than 2 concurrent SQS workers from being spun up at a time + ) + mapping_uuid = create_event_source_mapping_response["UUID"] + cleanups.append(lambda: aws_client.lambda_.delete_event_source_mapping(UUID=mapping_uuid)) + snapshot.match("create-event-source-mapping-response", create_event_source_mapping_response) + _await_event_source_mapping_enabled(aws_client.lambda_, mapping_uuid) + + for b in range(3): + aws_client.sqs.send_message_batch( + QueueUrl=queue_url, + Entries=[{"Id": f"{i}-{b}", "MessageBody": f"{i}-{b}-message"} for i in range(10)], + ) + + batches = [] + + def get_msg_from_q(): + messages_to_delete = [] + receive_message_response = aws_client.sqs.receive_message( + QueueUrl=destination_queue_url, + MaxNumberOfMessages=10, + VisibilityTimeout=120, + WaitTimeSeconds=5, + ) + messages = receive_message_response.get("Messages", []) + for message in messages: + received_batch = json.loads(message["Body"]) + batches.append(received_batch) + messages_to_delete.append( + {"Id": message["MessageId"], "ReceiptHandle": message["ReceiptHandle"]} + ) + + if messages_to_delete: + aws_client.sqs.delete_message_batch( + QueueUrl=destination_queue_url, Entries=messages_to_delete + ) + assert sum([len(batch) for batch in batches]) == 30 + return [message for batch in batches for message in batch] + + events = retry(get_msg_from_q, retries=15, sleep=5) + + # We expect to receive 2 batches where each batch contains some proportion of the + # 30 messages we sent through, divided by the 20 ESM batch size. How this is split is + # not determinable a priori so rather just snapshots the events and the no. of batches. + snapshot.match("batch_info", {"total_batches_received": len(batches)}) + snapshot.match("Records", events) + @markers.aws.validated @pytest.mark.parametrize( "filter, item_matching, item_not_matching", diff --git a/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.snapshot.json b/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.snapshot.json index dd4bf781ada96..7ff32c8fd5937 100644 --- a/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.snapshot.json +++ b/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.snapshot.json @@ -1662,5 +1662,2031 @@ } } } + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batch_size[15]": { + "recorded-date": "26-11-2024, 13:43:42", + "recorded-content": { + "create-event-source-mapping-response": { + "BatchSize": 15, + "EventSourceArn": "arn::sqs::111111111111:", + "EventSourceMappingArn": "arn::lambda::111111111111:event-source-mapping:", + "FunctionArn": "arn::lambda::111111111111:function:", + "FunctionResponseTypes": [], + "LastModified": "", + "MaximumBatchingWindowInSeconds": 10, + "State": "Creating", + "StateTransitionReason": "USER_INITIATED", + "UUID": "", + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 202 + } + }, + "send-message-batch-result-10": { + "Successful": [ + { + "Id": "0-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "1-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "2-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "3-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "4-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "5-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "6-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "7-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "8-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "9-0", + "MD5OfMessageBody": "", + "MessageId": "" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "send-message-batch-result-5": { + "Successful": [ + { + "Id": "0-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "1-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "2-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "3-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "4-1", + "MD5OfMessageBody": "", + "MessageId": "" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "Records": [ + { + "messageId": "", + "receiptHandle": "", + "body": "0-0-message-0", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "0-1-message-0", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-0-message-1", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-1-message-1", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-0-message-2", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-1-message-2", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-0-message-3", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-1-message-3", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-0-message-4", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-1-message-4", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "5-0-message-5", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "6-0-message-6", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "7-0-message-7", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "8-0-message-8", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "9-0-message-9", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + } + ] + } + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batching_reserved_concurrency": { + "recorded-date": "29-11-2024, 13:29:56", + "recorded-content": { + "put_concurrency_resp": { + "ReservedConcurrentExecutions": 2, + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "create-event-source-mapping-response": { + "BatchSize": 20, + "EventSourceArn": "arn::sqs::111111111111:", + "EventSourceMappingArn": "arn::lambda::111111111111:event-source-mapping:", + "FunctionArn": "arn::lambda::111111111111:function:", + "FunctionResponseTypes": [], + "LastModified": "", + "MaximumBatchingWindowInSeconds": 10, + "ScalingConfig": { + "MaximumConcurrency": 2 + }, + "State": "Creating", + "StateTransitionReason": "USER_INITIATED", + "UUID": "", + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 202 + } + }, + "batch_info": { + "total_batches_received": 2 + }, + "Records": [ + { + "messageId": "", + "receiptHandle": "", + "body": "0-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "0-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "0-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "5-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "5-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "5-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "6-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "6-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "6-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "7-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "7-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "7-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "8-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "8-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "8-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "9-0-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "9-1-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "9-2-message", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + } + ] + } + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batch_size[100]": { + "recorded-date": "26-11-2024, 13:44:40", + "recorded-content": { + "create-event-source-mapping-response": { + "BatchSize": 100, + "EventSourceArn": "arn::sqs::111111111111:", + "EventSourceMappingArn": "arn::lambda::111111111111:event-source-mapping:", + "FunctionArn": "arn::lambda::111111111111:function:", + "FunctionResponseTypes": [], + "LastModified": "", + "MaximumBatchingWindowInSeconds": 10, + "State": "Creating", + "StateTransitionReason": "USER_INITIATED", + "UUID": "", + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 202 + } + }, + "send-message-batch-result-10": { + "Successful": [ + { + "Id": "0-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "1-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "2-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "3-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "4-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "5-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "6-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "7-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "8-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "9-0", + "MD5OfMessageBody": "", + "MessageId": "" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "send-message-batch-result-5": { + "Successful": [ + { + "Id": "0-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "1-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "2-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "3-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "4-1", + "MD5OfMessageBody": "", + "MessageId": "" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "Records": [ + { + "messageId": "", + "receiptHandle": "", + "body": "0-0-message-0", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "0-1-message-0", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-0-message-1", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-1-message-1", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-0-message-2", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-1-message-2", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-0-message-3", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-1-message-3", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-0-message-4", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-1-message-4", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "5-0-message-5", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "6-0-message-6", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "7-0-message-7", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "8-0-message-8", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "9-0-message-9", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfBody": "", + "md5OfMessageAttributes": null, + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + } + ] + } + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batch_size[1000]": { + "recorded-date": "26-11-2024, 13:45:41", + "recorded-content": { + "create-event-source-mapping-response": { + "BatchSize": 1000, + "EventSourceArn": "arn::sqs::111111111111:", + "EventSourceMappingArn": "arn::lambda::111111111111:event-source-mapping:", + "FunctionArn": "arn::lambda::111111111111:function:", + "FunctionResponseTypes": [], + "LastModified": "", + "MaximumBatchingWindowInSeconds": 10, + "State": "Creating", + "StateTransitionReason": "USER_INITIATED", + "UUID": "", + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 202 + } + }, + "send-message-batch-result-10": { + "Successful": [ + { + "Id": "0-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "1-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "2-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "3-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "4-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "5-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "6-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "7-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "8-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "9-0", + "MD5OfMessageBody": "", + "MessageId": "" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "send-message-batch-result-5": { + "Successful": [ + { + "Id": "0-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "1-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "2-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "3-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "4-1", + "MD5OfMessageBody": "", + "MessageId": "" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "Records": [ + { + "messageId": "", + "receiptHandle": "", + "body": "0-0-message-0", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "0-1-message-0", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-0-message-1", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-1-message-1", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-0-message-2", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-1-message-2", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-0-message-3", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-1-message-3", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-0-message-4", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-1-message-4", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "5-0-message-5", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "6-0-message-6", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "7-0-message-7", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "8-0-message-8", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "9-0-message-9", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + } + ] + } + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batch_size[10000]": { + "recorded-date": "26-11-2024, 13:46:48", + "recorded-content": { + "create-event-source-mapping-response": { + "BatchSize": 10000, + "EventSourceArn": "arn::sqs::111111111111:", + "EventSourceMappingArn": "arn::lambda::111111111111:event-source-mapping:", + "FunctionArn": "arn::lambda::111111111111:function:", + "FunctionResponseTypes": [], + "LastModified": "", + "MaximumBatchingWindowInSeconds": 10, + "State": "Creating", + "StateTransitionReason": "USER_INITIATED", + "UUID": "", + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 202 + } + }, + "send-message-batch-result-10": { + "Successful": [ + { + "Id": "0-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "1-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "2-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "3-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "4-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "5-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "6-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "7-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "8-0", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "9-0", + "MD5OfMessageBody": "", + "MessageId": "" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "send-message-batch-result-5": { + "Successful": [ + { + "Id": "0-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "1-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "2-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "3-1", + "MD5OfMessageBody": "", + "MessageId": "" + }, + { + "Id": "4-1", + "MD5OfMessageBody": "", + "MessageId": "" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + }, + "Records": [ + { + "messageId": "", + "receiptHandle": "", + "body": "0-0-message-0", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "0-1-message-0", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-0-message-1", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "1-1-message-1", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-0-message-2", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "2-1-message-2", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-0-message-3", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "3-1-message-3", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-0-message-4", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "4-1-message-4", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "5-0-message-5", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "6-0-message-6", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "7-0-message-7", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "8-0-message-8", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + }, + { + "messageId": "", + "receiptHandle": "", + "body": "9-0-message-9", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "sent-timestamp", + "SenderId": "", + "ApproximateFirstReceiveTimestamp": "" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": null, + "md5OfBody": "", + "eventSource": "aws:sqs", + "eventSourceARN": "arn::sqs::111111111111:", + "awsRegion": "" + } + ] + } + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batching_behaviour[100]": { + "recorded-date": "26-11-2024, 14:23:08", + "recorded-content": {} } } diff --git a/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.validation.json b/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.validation.json index 0db9001a189f1..78db21ed15025 100644 --- a/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.validation.json +++ b/tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.validation.json @@ -30,7 +30,22 @@ "last_validated_date": "2024-10-12T13:43:31+00:00" }, "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping": { - "last_validated_date": "2024-10-12T13:38:01+00:00" + "last_validated_date": "2024-11-25T15:46:54+00:00" + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batch_size[10000]": { + "last_validated_date": "2024-11-26T13:46:45+00:00" + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batch_size[1000]": { + "last_validated_date": "2024-11-26T13:45:39+00:00" + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batch_size[100]": { + "last_validated_date": "2024-11-26T13:44:38+00:00" + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batch_size[15]": { + "last_validated_date": "2024-11-26T13:43:39+00:00" + }, + "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_batching_reserved_concurrency": { + "last_validated_date": "2024-11-29T13:29:53+00:00" }, "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::TestSQSEventSourceMapping::test_sqs_event_source_mapping_update": { "last_validated_date": "2024-10-12T13:45:43+00:00" @@ -48,7 +63,7 @@ "last_validated_date": "2024-10-12T13:43:40+00:00" }, "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::test_failing_lambda_retries_after_visibility_timeout": { - "last_validated_date": "2024-10-12T13:32:29+00:00" + "last_validated_date": "2024-11-25T12:12:47+00:00" }, "tests/aws/services/lambda_/event_source_mapping/test_lambda_integration_sqs.py::test_fifo_message_group_parallelism": { "last_validated_date": "2024-10-12T13:37:00+00:00" diff --git a/tests/aws/services/lambda_/functions/lambda_event_source_mapping_send_message.py b/tests/aws/services/lambda_/functions/lambda_event_source_mapping_send_message.py new file mode 100644 index 0000000000000..6ce293c92fe2f --- /dev/null +++ b/tests/aws/services/lambda_/functions/lambda_event_source_mapping_send_message.py @@ -0,0 +1,21 @@ +import json +import os + +import boto3 + + +def handler(event, context): + endpoint_url = os.environ.get("AWS_ENDPOINT_URL") + + region_name = ( + os.environ.get("AWS_DEFAULT_REGION") or os.environ.get("AWS_REGION") or "us-east-1" + ) + + sqs = boto3.client("sqs", endpoint_url=endpoint_url, verify=False, region_name=region_name) + + queue_url = os.environ.get("SQS_QUEUE_URL") + + records = event.get("Records", []) + sqs.send_message(QueueUrl=queue_url, MessageBody=json.dumps(records)) + + return {"count": len(records)} diff --git a/tests/aws/services/lambda_/test_lambda.py b/tests/aws/services/lambda_/test_lambda.py index 4127352842a26..d1a621229b0b4 100644 --- a/tests/aws/services/lambda_/test_lambda.py +++ b/tests/aws/services/lambda_/test_lambda.py @@ -101,6 +101,9 @@ ) TEST_LAMBDA_ENV = os.path.join(THIS_FOLDER, "functions/lambda_environment.py") +TEST_LAMBDA_EVENT_SOURCE_MAPPING_SEND_MESSAGE = os.path.join( + THIS_FOLDER, "functions/lambda_event_source_mapping_send_message.py" +) TEST_LAMBDA_SEND_MESSAGE_FILE = os.path.join(THIS_FOLDER, "functions/lambda_send_message.py") TEST_LAMBDA_PUT_ITEM_FILE = os.path.join(THIS_FOLDER, "functions/lambda_put_item.py") TEST_LAMBDA_START_EXECUTION_FILE = os.path.join(THIS_FOLDER, "functions/lambda_start_execution.py")