This package contains classes that can be used as requests and responses for Lambda functions that process Elastic Load Balancing's Application Load Balancers.
The ApplicationLoadBalancerRequest class contains information relating to the request coming from an Application Load Balancer.
ELB Lambda Target Groups can be enabled to support multiple values for headers and querystring parameters. If support is enabled and a
client sends a request with multiple values then the MultiValueHeaders
and MultiValueQueryStringParameters
collections should be used
instead of Headers
and QueryStringParameters
collection.
Either Headers
or MultiValueHeaders
collection will be set, never both. The Lambda function can check to see which collection
has values and then use that collection from then on.
The following is a sample class and Lambda function that receives an Application Load Balancer request as an input, writes some of the record data to CloudWatch Logs, and responds with a 200 status and the same body as the request. (Note that by default anything written to Console will be logged as CloudWatch Logs events.)
public class Function
{
public ApplicationLoadBalancerResponse Handler(ApplicationLoadBalancerRequest request)
{
Console.WriteLine($"Processing request data for request {request.RequestContext.RequestId}.");
Console.WriteLine($"Body size = {request.Body.Length}.");
var headerNames = string.Join(", ", request.Headers.Keys);
Console.WriteLine($"Specified headers = {headerNames}.");
return new ApplicationLoadBalancerResponse
{
Body = request.Body,
StatusCode = 200,
};
}
}