|
1 | 1 | locals { |
2 | 2 | security_group_ids = var.use_default_security_group == false ? var.security_group_ids : [data.aws_security_group.default[0].id] |
| 3 | + |
| 4 | + datadog_extension_layers_available = { |
| 5 | + x86_64 = "arn:aws:lambda:${data.aws_region.current.region}:464622532012:layer:Datadog-Extension:${var.datadog_extension_layer_version}" |
| 6 | + arm64 = "arn:aws:lambda:${data.aws_region.current.region}:464622532012:layer:Datadog-Extension-ARM:${var.datadog_extension_layer_version}" |
| 7 | + } |
| 8 | + datadog_lambdajs_layers_available = { |
| 9 | + "nodejs18.x" = "arn:aws:lambda:${data.aws_region.current.region}:464622532012:layer:Datadog-Node18-x:${var.datadog_lambdajs_layer_version}" |
| 10 | + "nodejs20.x" = "arn:aws:lambda:${data.aws_region.current.region}:464622532012:layer:Datadog-Node20-x:${var.datadog_lambdajs_layer_version}" |
| 11 | + "nodejs22.x" = "arn:aws:lambda:${data.aws_region.current.region}:464622532012:layer:Datadog-Node22-x:${var.datadog_lambdajs_layer_version}" |
| 12 | + } |
| 13 | + datadog_install_extension = var.datadog_metrics != "none" |
| 14 | + datadog_install_lambdajs = var.datadog_metrics == "lambdajs" |
| 15 | + datadog_extension_layer = local.datadog_install_extension ? [local.datadog_extension_layers_available[var.architectures[0]]] : [] |
| 16 | + datadog_extension_env = local.datadog_install_extension ? { |
| 17 | + DD_SITE = "datadoghq.com" |
| 18 | + DD_API_KEY_SECRET_ARN = data.aws_secretsmanager_secret.datadog_api_key.arn |
| 19 | + } : {} |
| 20 | + datadog_lambdajs_layer = local.datadog_install_lambdajs ? [local.datadog_lambdajs_layers_available[var.runtime]] : [] |
| 21 | + datadog_lambdajs_env = local.datadog_install_lambdajs ? { |
| 22 | + DD_LAMBDA_HANDLER = var.handler |
| 23 | + } : {} |
| 24 | +} |
| 25 | + |
| 26 | +data "aws_region" "current" { |
3 | 27 | } |
4 | 28 |
|
5 | 29 | data "aws_security_group" "default" { |
6 | | - count = var.use_default_security_group == true ? 1 : 0 |
7 | | - name = "${terraform.workspace}-default-lambda-sg" |
| 30 | + count = var.use_default_security_group == true ? 1 : 0 |
| 31 | + name = "${terraform.workspace}-default-lambda-sg" |
8 | 32 | vpc_id = var.vpc_id |
9 | 33 | } |
10 | 34 |
|
| 35 | +data "aws_secretsmanager_secret" "datadog_api_key" { |
| 36 | + name = "${terraform.workspace == "live" ? "live" : "dev"}/datadog-agent-service" |
| 37 | +} |
11 | 38 |
|
12 | 39 | resource "aws_lambda_function" "lambda_function" { |
13 | | - image_uri = var.image_uri |
14 | | - s3_bucket = var.s3_bucket |
15 | | - s3_key = var.s3_key |
16 | | - function_name = var.function_name |
17 | | - role = aws_iam_role.iam_for_lambda.arn |
18 | | - handler = var.handler |
19 | | - runtime = var.runtime |
20 | | - timeout = var.timeout |
21 | | - memory_size = var.memory_size |
22 | | - reserved_concurrent_executions = var.reserved_concurrent_executions |
23 | | - tags = var.tags |
24 | | - package_type = var.image_uri != null ? "Image" : "Zip" |
25 | | - layers = var.layers |
26 | | - architectures = var.architectures |
| 40 | + image_uri = var.image_uri |
| 41 | + s3_bucket = var.s3_bucket |
| 42 | + s3_key = var.s3_key |
| 43 | + function_name = var.function_name |
| 44 | + role = aws_iam_role.iam_for_lambda.arn |
| 45 | + handler = local.datadog_install_lambdajs ? "/opt/nodejs/node_modules/datadog-lambda-js/handler.handler" : var.handler |
| 46 | + runtime = var.runtime |
| 47 | + timeout = var.timeout |
| 48 | + memory_size = var.memory_size |
| 49 | + reserved_concurrent_executions = var.reserved_concurrent_executions |
| 50 | + tags = var.tags |
| 51 | + package_type = var.image_uri != null ? "Image" : "Zip" |
| 52 | + layers = concat(var.layers, local.datadog_lambdajs_layer, local.datadog_extension_layer) |
| 53 | + architectures = var.architectures |
27 | 54 |
|
28 | 55 | dynamic "image_config" { |
29 | 56 | for_each = var.image_uri != null ? [1] : [] |
30 | | - content { |
31 | | - command = var.image_config_command |
32 | | - entry_point = var.image_config_entry_point |
33 | | - working_directory = var.image_config_working_directory |
| 57 | + content { |
| 58 | + command = var.image_config_command |
| 59 | + entry_point = var.image_config_entry_point |
| 60 | + working_directory = var.image_config_working_directory |
34 | 61 | } |
35 | 62 | } |
36 | 63 |
|
37 | | - dynamic vpc_config { |
38 | | - for_each = local.security_group_ids != null ? [1] : [] |
39 | | - content { |
40 | | - subnet_ids = var.subnet_ids |
41 | | - security_group_ids = local.security_group_ids |
42 | | - } |
| 64 | + dynamic "vpc_config" { |
| 65 | + for_each = local.security_group_ids != null ? [1] : [] |
| 66 | + content { |
| 67 | + subnet_ids = var.subnet_ids |
| 68 | + security_group_ids = local.security_group_ids |
| 69 | + } |
43 | 70 | } |
44 | 71 |
|
45 | 72 | environment { |
46 | | - variables = var.lambda_env |
| 73 | + variables = merge(var.lambda_env, local.datadog_extension_env, local.datadog_lambdajs_env) |
47 | 74 | } |
48 | 75 |
|
49 | 76 | tracing_config { |
|
0 commit comments