From 11d9965d9c837654e321ec83cf5755991e609b5f Mon Sep 17 00:00:00 2001 From: Will Freeman Date: Mon, 14 Jul 2025 16:40:59 -0600 Subject: [PATCH] fix alpr_counts lambda which has been timing out --- serverless/alpr_counts/src/alpr_counts.py | 4 +-- terraform/modules/alpr_counts/main.tf | 32 +++++++++++++++++++++- terraform/modules/alpr_counts/variables.tf | 12 ++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/serverless/alpr_counts/src/alpr_counts.py b/serverless/alpr_counts/src/alpr_counts.py index c357a37..9db0a65 100644 --- a/serverless/alpr_counts/src/alpr_counts.py +++ b/serverless/alpr_counts/src/alpr_counts.py @@ -23,11 +23,11 @@ def fetch_alpr_surveillance_nodes(usOnly=False): return {"error": f"Failed to fetch data from Overpass API. Status code: {response.status_code}"} def lambda_handler(event, context): - us_alprs = fetch_alpr_surveillance_nodes('(area["ISO3166-1"="US"])') + # us_alprs = fetch_alpr_surveillance_nodes('(area["ISO3166-1"="US"])') worldwide_alprs = fetch_alpr_surveillance_nodes() all_alprs = { - 'us': us_alprs, + # 'us': us_alprs, 'worldwide': worldwide_alprs } diff --git a/terraform/modules/alpr_counts/main.tf b/terraform/modules/alpr_counts/main.tf index 2775a0e..d800917 100644 --- a/terraform/modules/alpr_counts/main.tf +++ b/terraform/modules/alpr_counts/main.tf @@ -68,7 +68,7 @@ resource "aws_lambda_function" "overpass_lambda" { handler = "${var.module_name}.lambda_handler" runtime = "python3.9" source_code_hash = data.archive_file.python_lambda_package.output_base64sha256 - timeout = 30 + timeout = 60 } resource "aws_cloudwatch_event_rule" "lambda_rule" { @@ -90,3 +90,33 @@ resource "aws_lambda_permission" "allow_cloudwatch_to_call_lambda" { principal = "events.amazonaws.com" source_arn = aws_cloudwatch_event_rule.lambda_rule.arn } + +resource "aws_cloudwatch_log_group" "lambda_log_group" { + name = "/aws/lambda/${var.module_name}" + retention_in_days = 14 +} + +resource "aws_iam_policy" "lambda_cloudwatch_logs_policy" { + name = "lambda_cloudwatch_logs_policy" + description = "Policy for Lambda to write logs to CloudWatch" + + policy = jsonencode({ + Version = "2012-10-17", + Statement = [ + { + Action = [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ] + Effect = "Allow" + Resource = "arn:aws:logs:${var.aws_region}:${var.aws_account_id}:log-group:/aws/lambda/${var.module_name}:*" + } + ] + }) +} + +resource "aws_iam_role_policy_attachment" "lambda_cloudwatch_logs_attachment" { + role = aws_iam_role.lambda_role.name + policy_arn = aws_iam_policy.lambda_cloudwatch_logs_policy.arn +} diff --git a/terraform/modules/alpr_counts/variables.tf b/terraform/modules/alpr_counts/variables.tf index b9f19e0..4363d8b 100644 --- a/terraform/modules/alpr_counts/variables.tf +++ b/terraform/modules/alpr_counts/variables.tf @@ -14,3 +14,15 @@ variable "deflock_stats_bucket" { variable "rate" { description = "Rate at which to run the Lambda function" } + +variable "aws_region" { + description = "The AWS region where resources will be created" + type = string + default = "us-east-1" +} + +variable "aws_account_id" { + description = "The AWS account ID where resources will be created" + type = string + default = "912821578123" +}