testing/benchmarking/main.tf (91 lines of code) (raw):

terraform { required_version = ">= 1.1.8, < 2.0.0" required_providers { aws = { source = "hashicorp/aws" version = "~> 5.18.1" } null = { source = "hashicorp/null" version = ">=3.1.1" } ec = { source = "elastic/ec" version = ">=0.4.0" } } } locals { load_req_path = "/test" name_from_runtime = replace(var.lambda_runtime, ".", "_") lambda_function_zip = "../build/${local.name_from_runtime}.zip" lambda_function_name = "${var.resource_prefix}_${local.name_from_runtime}_apm_aws_lambda" runtimeVars = { "python3.9" = { "handler" = "main.handler" "layers" = ["arn:aws:lambda:${var.aws_region}:267093732750:layer:elastic-apm-python-ver-6-18-0:1"] "envvars" = { "AWS_LAMBDA_EXEC_WRAPPER" = "/opt/python/bin/elasticapm-lambda" } } "go1.x" = { "handler" = "main" "layers" = [] "envvars" = {} } } } provider "ec" {} provider "aws" { region = var.aws_region default_tags { tags = module.tags.tags } } module "tags" { source = "../tf-modules/tags" project = "lambda-extension-benchmarks" build = var.github_workflow_id } module "ec_deployment" { source = "github.com/elastic/apm-server/testing/infra/terraform/modules/ec_deployment" region = var.ess_region stack_version = var.stack_version deployment_template = var.deployment_template deployment_name_prefix = "${var.resource_prefix}_aws_lambda_test" elasticsearch_size = var.elasticsearch_size elasticsearch_zone_count = var.elasticsearch_zone_count integrations_server = true apm_server_expvar = false apm_server_pprof = false tags = module.tags.tags } module "lambda_deployment" { source = "../tf-modules/lambda_deployment" resource_prefix = var.resource_prefix apm_aws_extension_path = var.lambda_apm_aws_extension_path lambda_runtime = var.lambda_runtime lambda_memory_size = var.lambda_memory_size lambda_function_zip = local.lambda_function_zip lambda_function_name = local.lambda_function_name lambda_invoke_path = local.load_req_path additional_lambda_layers = local.runtimeVars[var.lambda_runtime]["layers"] lambda_handler = local.runtimeVars[var.lambda_runtime]["handler"] environment_variables = local.runtimeVars[var.lambda_runtime]["envvars"] custom_lambda_extension_arn = var.custom_lambda_extension_arn apm_server_url = module.ec_deployment.apm_url apm_secret_token = module.ec_deployment.apm_secret_token } module "artillery_deployment" { source = "../tf-modules/artillery_deployment" depends_on = [ module.ec_deployment, module.lambda_deployment, ] resource_prefix = var.resource_prefix machine_type = var.machine_type load_duration = var.load_duration load_arrival_rate = var.load_arrival_rate load_base_url = module.lambda_deployment.base_url load_req_path = local.load_req_path }