Introduction to Integration Request Templates in API Gateway

APIs are essential for modern applications, and efficient header management is crucial for optimizing their performance. In AWS API Gateway, Integration Request Templates allow developers to streamline extracting and handling headers within API requests. These templates define how incoming requests are transformed before they reach backend services like AWS Lambda. With Integration Request Templates, you can easily map, modify, and access request headers, improving the overall flow of your API processing.

This guide will walk you through extracting headers with AWS API Gateway and Lambda using Integration Request Templates. By the end, you will have a fully functional API that can handle custom headers and pass them to a Lambda function for further processing.

Creating and Configuring Integration Request Templates

First, you must create an Integration Request Template within the API Gateway. This template is a blueprint for how the incoming request data, including headers, will be handled before being forwarded to AWS Lambda. Here’s how to set it up:

  1. Create or open your API Gateway in the AWS Management Console.
  2. Navigate to the ‘Resources’ section, where you’ll define your method (e.g., GET, POST).
  3. Select your method and choose ‘Integration Request’ from the Method Execution screen.
  4. Under the ‘Mapping Templates’ section, select application/json or the appropriate content type.
  5. Create a new mapping template using the following format to extract the headers:

{

  “headers”: {

    “CustomHeader”: “$input.params(‘CustomHeader’)”

  }

}

This template maps the custom headers from the request, such as “CustomHeader,” into the JSON object that will be passed to your Lambda function.

Deploying Your API with Enhanced Header Handling

Once your Integration Request Template is configured, it’s time to deploy the API. Deployment ensures your changes are published and accessible to clients.

  1. In the API Gateway console, click on the Actions dropdown.
  2. Select Deploy API.
  3. Choose an existing stage or create a new one for your API deployment.
  4. After deployment, your API will be live, and headers will be extracted as defined in the template.

Each time a request with the specified headers is made to the API, it will be processed and made available for use in your Lambda function.

Accessing Processed Headers in AWS Lambda Functions

With your API now deployed, you must ensure the Lambda function can access and utilize the headers processed by the Integration Request Template. Here’s how to access the headers within the Lambda function:

  1. Open the Lambda console and select the function tied to your API Gateway.
  2. In the function’s code, use the following logic to capture the incoming headers:

import json

def lambda_handler(event, context):

    # Extract headers from the event object

    headers = event[‘headers’]

    custom_header_value = headers.get(‘CustomHeader’, ‘No header found’)

    

    return {

        ‘statusCode’: 200,

        ‘body’: json.dumps({

            ‘message’: ‘Header extracted successfully!’,

            ‘CustomHeader’: custom_header_value

        })

    }

The event object contains the headers passed from the API Gateway. The Lambda function accesses the headers and processes them accordingly.

Testing and Verifying Header Extraction

With the API deployed and the Lambda function configured, it’s essential to test the setup to ensure the headers are being extracted correctly. You can use tools like Postman or cURL to send requests to your API with custom headers.

Here’s a sample cURL command to test your API:

curl -X GET “https://your-api-id.execute-api.region.amazonaws.com/stage/resource” \

-H “CustomHeader: TestValue”

In the response, you should see a JSON output confirming that the “CustomHeader” has been extracted and processed by your Lambda function:

{

  “message”: “Header extracted successfully!”,

  “CustomHeader”: “TestValue”

}

This confirms that your API Gateway and Lambda setup successfully handles and processes the headers from incoming API requests.

Conclusion

By integrating request templates in API Gateway, you can streamline the handling of headers and other incoming data. This setup simplifies API workflows, enhances data manipulation before it reaches your backend, and optimizes header management. Once deployed, the API can efficiently handle header extraction and pass the data to your Lambda functions for further processing.

References

Use API Gateway Lambda authorizers

Amazon API Gateway API request and response data mapping reference