ESEN

← Fine print by exam

Amazon Web Services · Associate

DVA-C02 · AWS Certified Developer - Associate (DVA-C02)

AWS Certified Developer - Associate

Retiring · 2026-11-30Replaced by: DVA-C03↗ Official guide🃏 Practice these gotchas

Scale-to-zero async worker with dead-letter

Reliability● verified 34 days ago◌ no external reviewer

The queue's visibility timeout must be at least 6 times the Lambda timeout

If the function takes longer than the visibility timeout, the message becomes visible again and another invocation picks it up while the first is still processing: guaranteed duplicates. AWS recommends a visibility timeout ≥ 6× the function timeout. The module computes and validates it.

⚑ Report outdated

See it in the pattern →

Reliability● verified 34 days ago◌ no external reviewer

Without ReportBatchItemFailures, one failed message retries the whole batch

By default, if the function fails the whole batch goes back to the queue, including already processed messages. With function_response_types = ["ReportBatchItemFailures"] the function returns only the failed IDs. In Azure and GCP acks are per message, so this problem doesn't exist in the same way.

⚑ Report outdated

See it in the pattern →

Reliability● verified 34 days ago◌ no external reviewer

In Standard queues, the message expires in the DLQ based on when it entered the original queue

When moving a message to the DLQ, SQS keeps the original enqueue timestamp (in FIFO it resets). If the DLQ has the same retention as the source queue, messages can vanish from the DLQ almost immediately. Set the DLQ retention longer than the source (the module uses the maximum, 14 days).

⚑ Report outdated

See it in the pattern →

Operations● verified 34 days ago◌ no external reviewer

Limit the event source mapping's concurrency, not just the function's

scaling_config.maximum_concurrency limits how many concurrent instances of the function the queue can invoke. It's an event source mapping setting, independent of the function's reserved concurrency and free of charge, and it keeps one queue from using all of the reserved concurrency or the account's concurrency quota. Note: the reserved concurrency must be greater than or equal to the sum of the maximums of all the function's event sources; otherwise Lambda might throttle your messages.

⚑ Report outdated

See it in the pattern →