Skip to content

Commit

Permalink
[ESM] Add table for feature-specific coverage (#1594)
Browse files Browse the repository at this point in the history
  • Loading branch information
gregfurman authored Dec 16, 2024
1 parent 2a0c192 commit 82e4896
Showing 1 changed file with 48 additions and 11 deletions.
59 changes: 48 additions & 11 deletions content/en/user-guide/aws/lambda/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,20 +165,57 @@ The product of 10 and 10 is 100%
[Lambda event source mappings](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html) allows you to connect Lambda functions to other AWS services.
The following event sources are supported in LocalStack:

- [Simple Queue Service (SQS)](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html)
- [DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html)
- [Kinesis](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html)
- [Managed Streaming for Apache Kafka (MSK)](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html)
- [Simple Queue Service (SQS)](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html)
- [Managed Streaming for Apache Kafka (MSK)](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html) ⭐️
- [Self-Managed Apache Kafka](https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html) ⭐️

### Behaviour Coverage

The table below shows feature coverage for all supported event sources for the latest version of LocalStack.

Unlike [API operation coverage](https://docs.localstack.cloud/references/coverage/coverage_lambda/), this table illustrates the **functional and behavioural coverage** of LocalStack's Lambda Event Source Mapping implementation.

Where necessary, footnotes are used to provide additional context.

{{< callout >}}
Feature availability and coverage is categorized with the following system:
- ⭐️ Only Available in LocalStack Pro image
- 🟒 Fully Implemented
- 🟑 Partially Implemented
- 🟠 Not Implemented
- βž– Not Applicable (Not Supported by AWS)
{{</callout >}}

The limitations compared to AWS include:
- Lambda Success Destinations are not supported.
- Only basic validations are performed upon creating and updating ESM.
- Streaming Pollers for Kinesis and DynamoDB do not implement the following batching behavior configurations:
- `BisectBatchOnFunctionError`
- `MaximumBatchingWindowInSeconds`
- `ParallelizationFactor`
- `ScalingConfig`
- `TumblingWindowInSeconds`.
| | <th colspan="2" style="text-align:center;">SQS</th> <th colspan="2" style="text-align:center;">Stream</th> <th colspan="2" style="text-align:center;">Kafka ⭐️</th>
|--------------------------------|-------------------------------------------------|:--------:|:----:|:---------:|:----------:|:----------:|:------------:|
| **Parameter** | **Description** | **Standard** | **FIFO** | **Kinesis** | **DynamoDB** | **Amazon MSK** | **Self-Managed** |
| BatchSize | Batching events by count. | 🟑 [^1] | 🟒 | 🟒 | 🟒 | 🟒 | 🟒 |
| *Not Configurable* | Batch when β‰₯ 6 MB limit. | 🟠 | 🟠 | 🟠 | 🟠 | 🟒 | 🟒 |
| MaximumBatchingWindowInSeconds | Batch by Time Window. | 🟠 | βž– | 🟠 | 🟠 | 🟒 | 🟒 |
| MaximumRetryAttempts | Discard after N retries. | βž– | βž– | 🟒 | 🟒 | βž– | βž– |
| MaximumRecordAgeInSeconds | Discard records older than time `t`. | βž– | βž– | 🟒 | 🟒 | βž– | βž– |
| Enabled | Enabling/Disabling. | 🟒 | 🟒 | 🟒 | 🟒 | 🟒 | 🟒 |
| FilterCriteria | Filter pattern evaluating. [^2] [^3] | 🟒 | 🟒 | 🟒 | 🟒 | 🟒 | 🟒 |
| FunctionResponseTypes | Enabling ReportBatchItemFailures. | 🟒 | 🟒 | 🟒 | 🟒 | βž– | βž– |
| BisectBatchOnFunctionError | Bisect a batch on error and retry. | βž– | βž– | 🟠 | 🟠 | βž– | βž– |
| ScalingConfig | The scaling configuration for the event source. | 🟠 | 🟠 | βž– | βž– | βž– | βž– |
| ParallelizationFactor | Parallel batch processing by shard. | βž– | βž– | 🟠 | 🟠 | βž– | βž– |
| DestinationConfig.OnFailure | SQS Failure Destination. | βž– | βž– | 🟒 | 🟒 | 🟒 | 🟒 |
| | SNS Failure Destination. | βž– | βž– | 🟒 | 🟒 | 🟒 | 🟒 |
| | S3 Failure Destination. | βž– | βž– | 🟠 | 🟠 | 🟠 | 🟠 |
| DestinationConfig.OnSuccess | Success Destinations. | βž– | βž– | βž– | βž– | βž– | βž– |
| MetricsConfig | CloudWatch metrics. | 🟠 | 🟠 | 🟠 | 🟠 | 🟠 | 🟠 |
| ProvisionedPollerConfig | Control throughput via min-max limits. | βž– | βž– | βž– | βž– | 🟠 | 🟠 |
| StartingPosition | Position to start reading from. | βž– | βž– | 🟒 | 🟒 | 🟒 | 🟒 |
| StartingPositionTimestamp | Timestamp to start reading from. | βž– | βž– | 🟒 | βž– | 🟒 | 🟒 |
| TumblingWindowInSeconds | Duration (seconds) of a processing window. | βž– | βž– | 🟠 | 🟠 | βž– | βž– |
| Topics ⭐️ | Kafka topics to read from. | βž– | βž– | βž– | βž– | 🟒 | 🟒 |

[^1]: SQS event-source mappings are limited to sending batches of up to `10` records at a time when invoking Lambda functions.
[^2]: Read more at [Control which events Lambda sends to your function](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html)
[^3]: The available Metadata properties may not have full parity with AWS depending on the event source (read more at [Understanding event filtering basics](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-basics)).

Create a [GitHub issue](https://github.com/localstack/localstack/issues/new/choose) or reach out to [LocalStack support](https://docs.localstack.cloud/getting-started/help-and-support/) if you experience any challenges.

Expand Down

0 comments on commit 82e4896

Please sign in to comment.