Add LambdaRuntime initializer with LambdaHandler directly with Codable support #581
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add convenience initializer for
LambdaRuntimeto acceptLambdaHandlerinstances directlyMotivation:
When using the Swift AWS Lambda Runtime with custom handler types that conform to
LambdaHandler, developers previously had two options to initializeLambdaRuntime:Manually wrap their handler with
LambdaCodableAdapterandLambdaHandlerAdapter:Use a closure-based initializer that indirectly calls the handler:
Both approaches are verbose and don't provide a clean, ergonomic API for the common case of initializing
LambdaRuntimewith a customLambdaHandlerinstance. The closure approach also creates an unnecessary indirection layer, wrapping the handler in aClosureHandlerbefore adapting it, or usingLambdaCodableAdapter.Modifications:
Added a new convenience initializer to
LambdaRuntimeinLambda+JSON.swiftthat accepts aLambdaHandlerinstance directly:This initializer handles the wrapping of the
LambdaHandlerwith the necessary adapters internally, matching the pattern already established for closure-based handlers.Result:
Developers can now initialize
LambdaRuntimewith aLambdaHandlerinstance using a clean, direct API:This provides:
StreamingLambdaHandlercan be usedClosureHandlerorLambdaCodableAdapterEventandOutputtypes from the handler