Disabled Lambda Event Source Mapping (SQS) still triggers Lambda on every send_message
buggood first issue
## Description
In `moto/sqs/models.py`, `Queue.add_message()` loops over `lambda_event_source_mappings`
and invokes Lambda without checking `esm.enabled`.
Even when an ESM is created with `enabled=False` (or disabled via `update_event_source_mapping`),
Lambda is still invoked on every SQS message.
## Moto version
5.1.22
## Steps to reproduce
1. Create a Lambda function and an SQS queue
2. Create an Event Source Mapping with `enabled=False`
3. Send a message to the SQS queue
## Expected behavior
Lambda is NOT invoked (ESM is disabled).
## Actual behavior
Lambda is invoked despite the ESM being disabled.
## Root cause
In `moto/sqs/models.py`, `Queue.add_message()`:
```python
for arn, esm in self.lambda_event_source_mappings.items():
# esm.enabled is never checked
backend = sqs_backends[self.account_id][self.region]
messages = backend.receive_message(self.name, esm.batch_size, ...)
```
## Proposed fix
```python
for arn, esm in self.lambda_event_source_mappings.items():
if not esm.enabled:
continue
...
```
关闭于 2026-04-02 0 条评论