Show / Hide Table of Contents

Class ALambdaApiGatewayFunction

ALambdaApiGatewayFunction is the abstract base class for API Gateway functions (both V1 and V2).

Inheritance
System.Object
ALambdaFunction
ALambdaApiGatewayFunction
Implements
ILambdaSharpLogger
Inherited Members
ALambdaFunction.Provider
ALambdaFunction.UtcNow
ALambdaFunction.Info
ALambdaFunction.ErrorReportGenerator
ALambdaFunction.Logger
ALambdaFunction.CurrentContext
ALambdaFunction.HttpClient
ALambdaFunction.DebugLoggingEnabled
ALambdaFunction.InitializeAsync(LambdaConfig)
ALambdaFunction.FunctionHandlerAsync(Stream, ILambdaContext)
ALambdaFunction.HandleFailedInitializationAsync(Stream)
ALambdaFunction.RecordFailedMessageAsync(LambdaLogLevel, ALambdaFunction.FailedMessageOrigin, String, Exception)
ALambdaFunction.DecryptSecretAsync(String, Dictionary<String, String>, CancellationToken)
ALambdaFunction.EncryptSecretAsync(String, String, Dictionary<String, String>, CancellationToken)
ALambdaFunction.AddPendingTask(Task)
ALambdaFunction.RunTask(Action, CancellationToken)
ALambdaFunction.RunTask(Func<Task>, CancellationToken)
ALambdaFunction.ForceLambdaColdStart(String)
ALambdaFunction.TerminateLambdaInstance(String)
ALambdaFunction.RecordErrorReport(LambdaErrorReport)
ALambdaFunction.RecordException(Exception)
ALambdaFunction.LogDebug(String, Object[])
ALambdaFunction.LogInfo(String, Object[])
ALambdaFunction.LogWarn(String, Object[])
ALambdaFunction.LogError(Exception)
ALambdaFunction.LogError(Exception, String, Object[])
ALambdaFunction.LogErrorAsInfo(Exception)
ALambdaFunction.LogErrorAsInfo(Exception, String, Object[])
ALambdaFunction.LogErrorAsWarning(Exception)
ALambdaFunction.LogErrorAsWarning(Exception, String, Object[])
ALambdaFunction.LogFatal(Exception, String, Object[])
ALambdaFunction.LogMetric(String, Double, LambdaMetricUnit)
ALambdaFunction.LogMetric(String, Double, LambdaMetricUnit, IEnumerable<String>, Dictionary<String, String>)
ALambdaFunction.LogMetric(IEnumerable<LambdaMetric>)
ALambdaFunction.LogMetric(IEnumerable<LambdaMetric>, IEnumerable<String>, Dictionary<String, String>)
ALambdaFunction.LogEvent<T>(T, IEnumerable<String>)
ALambdaFunction.LogEvent<T>(String, T, IEnumerable<String>)
ALambdaFunction.LogEvent<T>(String, String, T, IEnumerable<String>)
ALambdaFunction.ILambdaSharpLogger.DebugLoggingEnabled
ALambdaFunction.ILambdaSharpLogger.Info
ALambdaFunction.ILambdaSharpLogger.Log(LambdaLogLevel, Exception, String, Object[])
ALambdaFunction.ILambdaSharpLogger.LogRecord(ALambdaLogRecord)
Namespace: LambdaSharp.ApiGateway
Assembly: LambdaSharp.ApiGateway.dll
Syntax
public abstract class ALambdaApiGatewayFunction : ALambdaFunction, ILambdaSharpLogger
Remarks

If the Lambda function was configured for REST API or WebSocket routes with method invocations, then the Lambda function will act as a controller and route the incoming requests to the specified methods. Alternatively, a derived class can override ProcessProxyRequestAsync(APIGatewayProxyRequest) to process requests.

Constructors

ALambdaApiGatewayFunction(ILambdaJsonSerializer)

Initializes a new ALambdaApiGatewayFunction instance using the default implementation of ILambdaFunctionDependencyProvider.

Declaration
protected ALambdaApiGatewayFunction(ILambdaJsonSerializer serializer)
Parameters
Type Name Description
ILambdaJsonSerializer serializer

Custom implementation of ILambdaJsonSerializer.

ALambdaApiGatewayFunction(ILambdaJsonSerializer, ILambdaFunctionDependencyProvider)

Initializes a new ALambdaApiGatewayFunction instance using a custom implementation of ILambdaFunctionDependencyProvider.

Declaration
protected ALambdaApiGatewayFunction(ILambdaJsonSerializer serializer, ILambdaFunctionDependencyProvider provider)
Parameters
Type Name Description
ILambdaJsonSerializer serializer

Custom implementation of ILambdaJsonSerializer.

ILambdaFunctionDependencyProvider provider

Custom implementation of ILambdaFunctionDependencyProvider.

Properties

CurrentRequest

Retrieve the current Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest for the request.

Declaration
protected APIGatewayProxyRequest CurrentRequest { get; }
Property Value
Type Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest instance.

Remarks

This property is only set during the invocation of ProcessMessageAsync(APIGatewayProxyRequest). Otherwise, it returns null.

LambdaSerializer

An instance of ILambdaJsonSerializer used for serializing/deserializing JSON data.

Declaration
protected ILambdaJsonSerializer LambdaSerializer { get; }
Property Value
Type Description
ILambdaJsonSerializer

The ILambdaJsonSerializer instance.

Methods

Abort(APIGatewayProxyResponse)

The Abort(APIGatewayProxyResponse) method stops the request processing and sets the specified Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance as the response.

Declaration
protected virtual Exception Abort(APIGatewayProxyResponse response)
Parameters
Type Name Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse response

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance to use for the response.

Returns
Type Description
System.Exception

Nothing. See remarks.

Remarks

This method never returns as the abort exception is thrown immediately. The System.Exception instance is shown as returned to make it easier to tell the compiler the control flow.

Examples
throw Abort(new APIGatewayProxyResponse {
    StatusCode = 404,
    Body = "item not found"
});

AbortBadRequest(String)

The AbortBadRequest(String) stops the request processing with a 400 - Bad Request response.

Declaration
protected virtual Exception AbortBadRequest(string message)
Parameters
Type Name Description
System.String message

The response message.

Returns
Type Description
System.Exception

Nothing. See remarks.

Remarks

This method never returns as the abort exception is thrown immediately. The System.Exception instance is shown as returned to make it easier to tell the compiler the control flow.

Examples
throw AbortBadRequest("invalid selection");

AbortForbidden(String)

The AbortForbidden(String) stops the request processing with a 403 - Forbidden response.

Declaration
protected virtual Exception AbortForbidden(string message)
Parameters
Type Name Description
System.String message

The response message.

Returns
Type Description
System.Exception

Nothing. See remarks.

Remarks

This method never returns as the abort exception is thrown immediately. The System.Exception instance is shown as returned to make it easier to tell the compiler the control flow.

Examples
throw AbortForbidden("you are not authorized");

AbortNotFound(String)

The AbortNotFound(String) stops the request processing with a 404 - Not Found response.

Declaration
protected virtual Exception AbortNotFound(string message)
Parameters
Type Name Description
System.String message

The response message.

Returns
Type Description
System.Exception

Nothing. See remarks.

Remarks

This method never returns as the abort exception is thrown immediately. The System.Exception instance is shown as returned to make it easier to tell the compiler the control flow.

Examples
throw AbortNotFound("item not found");

CreateBadParameterResponse(APIGatewayProxyRequest, String, String)

The CreateBadParameterResponse(APIGatewayProxyRequest, String, String) method creates a Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance to report a 400 - Bad Request error, because a request parameter was invalid or missing.

Declaration
protected virtual APIGatewayProxyResponse CreateBadParameterResponse(APIGatewayProxyRequest request, string parameterName, string message)
Parameters
Type Name Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest request

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest instance.

System.String parameterName

The name of the parameter.

System.String message

The error message.

Returns
Type Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance.

CreateInvocationExceptionResponse(APIGatewayProxyRequest, Exception)

The CreateInvocationExceptionResponse(APIGatewayProxyRequest, Exception) method creates a Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance to report a 500 - Internal Server Error error, because an unhandled exception occurred during the request processing.

Declaration
protected virtual APIGatewayProxyResponse CreateInvocationExceptionResponse(APIGatewayProxyRequest request, Exception exception)
Parameters
Type Name Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest request

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest instance.

System.Exception exception

The raised exception.

Returns
Type Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance.

CreateInvocationTargetInstance(Type)

The CreateInvocationTargetInstance(Type) method is invoked to create instances for mapped method invocations. This is invoked only once per requested type.

Declaration
public virtual object CreateInvocationTargetInstance(Type type)
Parameters
Type Name Description
System.Type type

The requested type to instantiate.

Returns
Type Description
System.Object

The instance for the target method.

Remarks

If the requested type is the type of the Lambda function, this method returns the Lambda function instance. Otherwise, it attempts to instantiate the requested type using that Lambda function instance as the sole the constructor parmeter. This pattern allows the Lambda function to be the Dependency Provider for the created instance.

CreateResponse(Int32, String)

The CreateResponse(Int32, String) method creates a Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance set to the specified status code and message in the response body.

Declaration
protected virtual APIGatewayProxyResponse CreateResponse(int statusCode, string message)
Parameters
Type Name Description
System.Int32 statusCode

The HTTP status code of the response.

System.String message

The response mesage.

Returns
Type Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance.

Examples

For a REST API route, the response body looks as follows.

{
    "message": "item not found",
    "requestId": "123abc"
}

For a WebSocket route, the response body contains in addition the connection ID.

{
    "message": "item not found",
    "requestId": "123abc",
    "connectionId": "456def"
}

CreateRouteNotFoundResponse(APIGatewayProxyRequest, String)

The CreateRouteNotFoundResponse(APIGatewayProxyRequest, String) method creates the Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance to report a 404 - Not Found error for the requested REST API or WebSocket route.

Declaration
protected virtual APIGatewayProxyResponse CreateRouteNotFoundResponse(APIGatewayProxyRequest request, string route)
Parameters
Type Name Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest request

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest instance.

System.String route

The REST API or WebSocket route that could not be found.

Returns
Type Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse instance.

InitializeEpilogueAsync()

The InitializeEpilogueAsync() method is invoked to complet the initialization of the Lambda function. This is the last of three methods that are invoked to initialize the Lambda function.

Declaration
protected override async Task InitializeEpilogueAsync()
Returns
Type Description
System.Threading.Tasks.Task

The task object representing the asynchronous operation.

Overrides
ALambdaFunction.InitializeEpilogueAsync()

InitializePrologueAsync(ILambdaConfigSource)

The InitializePrologueAsync(ILambdaConfigSource) method is invoked to prepare the Lambda function for initialization. This is the first of three methods that are invoked to initialize the Lambda function.

Declaration
protected override async Task InitializePrologueAsync(ILambdaConfigSource envSource)
Parameters
Type Name Description
ILambdaConfigSource envSource

The ILambdaConfigSource instance from which to read the configuration settings.

Returns
Type Description
System.Threading.Tasks.Task

The task object representing the asynchronous operation.

Overrides
ALambdaFunction.InitializePrologueAsync(ILambdaConfigSource)

ProcessMessageAsync(APIGatewayProxyRequest)

The ProcessMessageAsync(APIGatewayProxyRequest) method provides specific behavior for this base class.

Declaration
public async Task<APIGatewayProxyResponse> ProcessMessageAsync(APIGatewayProxyRequest request)
Parameters
Type Name Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest request

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest instance.

Returns
Type Description
System.Threading.Tasks.Task<Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse>

The task object representing the asynchronous operation.

ProcessMessageStreamAsync(Stream)

The ProcessMessageStreamAsync(Stream) deserializes the request stream into a Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest instance and invokes the ProcessMessageAsync(APIGatewayProxyRequest) method.

Declaration
public sealed override async Task<Stream> ProcessMessageStreamAsync(Stream stream)
Parameters
Type Name Description
System.IO.Stream stream

The stream with the request payload.

Returns
Type Description
System.Threading.Tasks.Task<System.IO.Stream>

The task object representing the asynchronous operation.

Overrides
ALambdaFunction.ProcessMessageStreamAsync(Stream)
Remarks

This method is sealed and cannot be overridden.

ProcessProxyRequestAsync(APIGatewayProxyRequest)

The ProcessProxyRequestAsync(APIGatewayProxyRequest) method is invoked when the received request is not mapped to a method invocation.

Declaration
public virtual Task<APIGatewayProxyResponse> ProcessProxyRequestAsync(APIGatewayProxyRequest request)
Parameters
Type Name Description
Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest request

The Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest instance.

Returns
Type Description
System.Threading.Tasks.Task<Amazon.Lambda.APIGatewayEvents.APIGatewayProxyResponse>

The task object representing the asynchronous operation.

Remarks

The default implementation response with a 404 error.

Implements

ILambdaSharpLogger
In This Article
Back to top Generated by DocFX