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
LambdaRuntime
to acceptLambdaHandler
instances 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
LambdaCodableAdapter
andLambdaHandlerAdapter
: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
LambdaRuntime
with a customLambdaHandler
instance. The closure approach also creates an unnecessary indirection layer, wrapping the handler in aClosureHandler
before adapting it, or usingLambdaCodableAdapter
.Modifications:
Added a new convenience initializer to
LambdaRuntime
inLambda+JSON.swift
that accepts aLambdaHandler
instance directly:This initializer handles the wrapping of the
LambdaHandler
with the necessary adapters internally, matching the pattern already established for closure-based handlers.Result:
Developers can now initialize
LambdaRuntime
with aLambdaHandler
instance using a clean, direct API:This provides:
StreamingLambdaHandler
can be usedClosureHandler
orLambdaCodableAdapter
Event
andOutput
types from the handler