Skip to content

Commit 48553f7

Browse files
enhanced monitoring
1 parent d22e0e3 commit 48553f7

File tree

4 files changed

+42
-18
lines changed

4 files changed

+42
-18
lines changed

infrastructure/modules/lambda/lambda.tf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ resource "aws_lambda_function" "eligibility_signposting_lambda" {
1111

1212
source_code_hash = filebase64sha256(var.file_name)
1313

14-
runtime = "python3.13"
14+
runtime = var.runtime
1515
timeout = 30
1616
memory_size = 2048
1717

@@ -37,6 +37,10 @@ resource "aws_lambda_function" "eligibility_signposting_lambda" {
3737
target_arn = aws_sqs_queue.lambda_dlq.arn
3838
}
3939

40+
layers = compact([
41+
var.environment == "prod" ? "arn:aws:lambda:${var.region}:580247275435:layer:LambdaInsightsExtension:${var.lambda_insights_extension_version}" : null
42+
])
43+
4044
tracing_config {
4145
mode = "Active"
4246
}

infrastructure/modules/lambda/variables.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ variable "lambda_func_name" {
1313
type = string
1414
}
1515

16+
variable "runtime" {
17+
description = "runtime of the Lambda function"
18+
type = string
19+
}
20+
21+
1622
variable "vpc_intra_subnets" {
1723
description = "vpc private subnets for lambda"
1824
type = list(string)
@@ -62,3 +68,8 @@ variable "provisioned_concurrency_count" {
6268
description = "Number of prewarmed Lambda instances"
6369
type = number
6470
}
71+
72+
variable "lambda_insights_extension_version" {
73+
description = "version number of LambdaInsightsExtension"
74+
type = number
75+
}

infrastructure/stacks/api-layer/iam_policies.tf

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,13 @@ resource "aws_iam_role_policy_attachment" "lambda_logs_policy_attachment" {
189189
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
190190
}
191191

192+
#Attach CloudWatchLambdaInsightsExecutionRolePolicy to lambda for enhanced monitoring
193+
resource "aws_iam_role_policy_attachment" "lambda_insights_policy" {
194+
count = var.environment == "prod" ? 1 : 0
195+
role = aws_iam_role.eligibility_lambda_role.name
196+
policy_arn = "arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy"
197+
}
198+
192199
# Policy doc for S3 Audit bucket
193200
data "aws_iam_policy_document" "s3_audit_bucket_policy" {
194201
statement {

infrastructure/stacks/api-layer/lambda.tf

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,23 @@ data "aws_subnet" "private_subnets" {
1111
}
1212

1313
module "eligibility_signposting_lambda_function" {
14-
source = "../../modules/lambda"
15-
eligibility_lambda_role_arn = aws_iam_role.eligibility_lambda_role.arn
16-
eligibility_lambda_role_name = aws_iam_role.eligibility_lambda_role.name
17-
workspace = local.workspace
18-
environment = var.environment
19-
lambda_func_name = "${terraform.workspace == "default" ? "" : "${terraform.workspace}-"}eligibility_signposting_api"
20-
security_group_ids = [data.aws_security_group.main_sg.id]
21-
vpc_intra_subnets = [for v in data.aws_subnet.private_subnets : v.id]
22-
file_name = "../../../dist/lambda.zip"
23-
handler = "eligibility_signposting_api.app.lambda_handler"
24-
eligibility_rules_bucket_name = module.s3_rules_bucket.storage_bucket_name
25-
eligibility_status_table_name = module.eligibility_status_table.table_name
26-
kinesis_audit_stream_to_s3_name = module.eligibility_audit_firehose_delivery_stream.firehose_stream_name
27-
log_level = "INFO"
28-
enable_xray_patching = "true"
29-
stack_name = local.stack_name
30-
provisioned_concurrency_count = 5
14+
source = "../../modules/lambda"
15+
eligibility_lambda_role_arn = aws_iam_role.eligibility_lambda_role.arn
16+
eligibility_lambda_role_name = aws_iam_role.eligibility_lambda_role.name
17+
workspace = local.workspace
18+
environment = var.environment
19+
runtime = "python3.13"
20+
lambda_func_name = "${terraform.workspace == "default" ? "" : "${terraform.workspace}-"}eligibility_signposting_api"
21+
security_group_ids = [data.aws_security_group.main_sg.id]
22+
vpc_intra_subnets = [for v in data.aws_subnet.private_subnets : v.id]
23+
file_name = "../../../dist/lambda.zip"
24+
handler = "eligibility_signposting_api.app.lambda_handler"
25+
eligibility_rules_bucket_name = module.s3_rules_bucket.storage_bucket_name
26+
eligibility_status_table_name = module.eligibility_status_table.table_name
27+
kinesis_audit_stream_to_s3_name = module.eligibility_audit_firehose_delivery_stream.firehose_stream_name
28+
lambda_insights_extension_version = 38
29+
log_level = "INFO"
30+
enable_xray_patching = "true"
31+
stack_name = local.stack_name
32+
provisioned_concurrency_count = 5
3133
}

0 commit comments

Comments
 (0)