Class CustomConfigExample
java.lang.Object
software.amazon.lambda.durable.DurableHandler<String,String>
software.amazon.lambda.durable.examples.CustomConfigExample
- All Implemented Interfaces:
com.amazonaws.services.lambda.runtime.RequestStreamHandler
Example demonstrating custom configuration with both custom HTTP client and custom SerDes. Shows how to configure a
custom Apache HTTP client for the Lambda client while maintaining automatic credentials detection and region
fallback, plus a custom SerDes with snake_case naming.
This example demonstrates:
- Custom Apache HTTP client configuration for improved performance
- Automatic region detection with fallback to us-east-1 for testing environments
- Environment variable credentials provider
- Custom SerDes with snake_case property naming
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classCustom data class with camelCase field names to demonstrate snake_case serialization. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected DurableConfigTemplate method for creating configuration.handleRequest(String input, DurableContext context) Handle the durable execution.Methods inherited from class software.amazon.lambda.durable.DurableHandler
createObjectMapper, getConfiguration, handleRequest
-
Constructor Details
-
CustomConfigExample
public CustomConfigExample()
-
-
Method Details
-
createConfiguration
Description copied from class:DurableHandlerTemplate method for creating configuration. Override this method to provide custom DurableExecutionClient, SerDes, or other configuration.The
LambdaDurableFunctionsClientis a wrapper that customers should use to inject their own configuredLambdaClient. This allows full control over AWS SDK configuration including credentials, region, HTTP client, and retry policies.Basic example with custom region and credentials:
@Override protected DurableConfig createConfiguration() { // Create custom Lambda client with specific configuration var lambdaClient = LambdaClient.builder() .region(Region.US_WEST_2) .credentialsProvider(ProfileCredentialsProvider.create("my-profile")) .build(); // Wrap the Lambda client with LambdaDurableFunctionsClient var durableClient = new LambdaDurableFunctionsClient(lambdaClient); return DurableConfig.builder() .withDurableExecutionClient(durableClient) .build(); }Advanced example with AWS CRT HTTP Client for high-performance scenarios:
@Override protected DurableConfig createConfiguration() { // Configure AWS CRT HTTP Client for optimal performance var crtHttpClient = AwsCrtAsyncHttpClient.builder() .maxConcurrency(50) .connectionTimeout(Duration.ofSeconds(30)) .connectionMaxIdleTime(Duration.ofSeconds(60)) .build(); // Create Lambda client with CRT HTTP client var lambdaClient = LambdaClient.builder() .region(Region.US_EAST_1) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .httpClient(crtHttpClient) .overrideConfiguration(ClientOverrideConfiguration.builder() .retryPolicy(RetryPolicy.builder() .numRetries(5) .build()) .build()) .build(); // Wrap with LambdaDurableFunctionsClient var durableClient = new LambdaDurableFunctionsClient(lambdaClient); return DurableConfig.builder() .withDurableExecutionClient(durableClient) .withSerDes(customSerDes) // Optional: custom SerDes for user data .withExecutorService(customExecutor) // Optional: custom thread pool .build(); }- Overrides:
createConfigurationin classDurableHandler<String,String> - Returns:
- DurableConfig with desired configuration
-
handleRequest
Description copied from class:DurableHandlerHandle the durable execution.- Specified by:
handleRequestin classDurableHandler<String,String> - Parameters:
input- User inputcontext- Durable context for operations- Returns:
- Result
-