Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions testdata/function/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
exports.handler = async (event) => {
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};

89 changes: 89 additions & 0 deletions tf/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
provider "aws" {
region = var.aws_region
}

provider "ec" {}

data "ec_stack" "latest" {
version_regex = "latest"
region = var.ec_region
}

resource "ec_deployment" "ec_aws_lambda_minimal" {
name = "aws-lambda-smoke-testing-deployment"
region = var.ec_region
version = data.ec_stack.latest.version
deployment_template_id = var.ec_deployment_template

elasticsearch {
autoscale = "false"

topology {
id = "hot_content"
size = "1g"
zone_count = 1
}
}
}

resource "ec_deployment" "basic_datasource" {
name = "aws-lambda-smoke-testing-deployment-data"
region = var.ec_region
version = data.ec_stack.latest.version
deployment_template_id = var.ec_deployment_template

elasticsearch {
topology {
id = "hot_content"
size = "1g"
zone_count = 1
}
}

kibana {}

apm {}

observability {
deployment_id = ec_deployment.ec_aws_lambda_minimal.id
}
}

module "lambda_function" {
source = "terraform-aws-modules/lambda/aws"

function_name = "smoke-testing-test"
description = "Example Lambda function for smoke testing"
handler = "index.handler"
runtime = "nodejs16.x"

source_path = "../testdata/function/"

layers = [
module.lambda_layer_local.lambda_layer_arn,
"arn:aws:lambda:${var.aws_region}:267093732750:layer:elastic-apm-node-ver-3-38-0:1",
]

environment_variables = {
NODE_OPTIONS = "-r elastic-apm-node/start"
ELASTIC_APM_LOG_LEVEL = var.log_level
ELASTIC_APM_LAMBDA_APM_SERVER = ec_deployment.basic_datasource.apm[0].https_endpoint
ELASTIC_APM_SECRET_TOKEN = ec_deployment.basic_datasource.apm_secret_token
}

tags = {
Name = "my-lambda"
}
}

module "lambda_layer_local" {
source = "terraform-aws-modules/lambda/aws"

create_layer = true

layer_name = "apm-lambda-extension-smoke-testing"
description = "AWS Lambda Extension Layer for Elastic APM - smoke testing"
compatible_runtimes = ["nodejs16.x"]

source_path = "../bin/"
}
12 changes: 12 additions & 0 deletions tf/providers.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = ">=4.28.0"
}
ec = {
source = "elastic/ec"
version = ">=0.4.1"
}
}
}
23 changes: 23 additions & 0 deletions tf/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
variable "aws_region" {
type = string
description = "aws region"
default = "eu-central-1"
}

variable "log_level" {
type = string
description = "lambda extension log level"
default = "trace"
}

variable "ec_region" {
type = string
description = "ec region"
default = "aws-eu-central-1"
}

variable "ec_deployment_template" {
type = string
description = "ec deployment template"
default = "aws-storage-optimized-v2"
}