Setting up and Configuring Lambda Queries on AWS

Running queries on AWS Lambda can result in lower costs and better performance, here's how to set up and configure a lambda function to run queries using an Application Load Balancer and update the Helm Chart deployment to use this load balancer.

The Lambda container images can only be deployed from Elastic Container Registry in your AWS Account and therefore the image has to be copied first.

Note: Lambda Query Functions installation only applies to Axiom Self-Host installs. If you are using Axiom Cloud, you already benefit from scalable query functions!


Prerequisites

Copy the Docker image

  1. Pull the Axiom lambda function image from Docker hub

docker pull axiomhq/axiom-lambda-func:latest

  1. Tag the Axiom lambda image in your Private ECR registry on AWS

docker tag axiomhq/axiom-lambda-func:latest <private_ecr>/axiom-lambda-func:latest

  1. Push the image to your private registry

docker push <private_ecr>/axiom-lambda-func:latest

  • Note: For production use of the query function, use specific version of the image (for example, 1.20.4), not latest. The image needs to match your Axiom version.

Create Lambda Function

  1. Create a Lambda function from the image pushed.
  • In your AWS console, click on Lambda and select Create function from Container image

Lambda overview


  • In your Lambda function configuration, select Environment variables, click Edit and add an environment variable with key AXIOM_STORAGE and value s3://your S3 bucket name

Lambda overview


Create and Attach Lambda Role

  • Create and attach this Lambda policy to your Lambda role.

Lambda overview

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket-name>/*"
            ]
        }
    ]
}

Where: bucket-name is the name of your S3 bucket.


Edit function configuration

  1. You need to bump the the memory configuration of your lambda function in AWS Console, click on Configuration, select General Configuration and click Edit

Lambda overview

  • Change Memory Size to a minimum of 1024MB, but we recommend size 1536MB

  • Change Timeout to 30 seconds.

Lambda overview

Create a Target group

  1. Create a target group on AWS and associate it to the Lambda function you created in step 4. The target group will tell the load balancer were to direct traffic to. The traffic will be routed to your Lambda function.

Target group overview


Create an Application Load Balancer

  1. Create an Application Load Balancer for the target group you created in step 6, select the internal load balancer route under the scheme section. The application load balancer will trigger the lambda function.

Load balancer overview

  • Associate your loadbalancer to it in the listeners and routing section.

Load balancer overview

  1. Copy the DNS name of your load balancer and paste it as lambdaUrl in your Helm chart values.

DNS name


  • Back in your Lmbda function console, you can see the Application Load balancer has been attached as a trigger.

DNS name

Was this page helpful?