Skip to content

Commit b37eba2

Browse files
enable dead letter queue
1 parent dcc1a7a commit b37eba2

File tree

6 files changed

+51
-0
lines changed

6 files changed

+51
-0
lines changed

infrastructure/modules/lambda/lambda.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,17 @@ resource "aws_lambda_function" "eligibility_signposting_lambda" {
3333
security_group_ids = var.security_group_ids
3434
}
3535

36+
layers = ["arn:aws:lambda:${var.region}:580247275435:layer:LambdaInsightsExtension:38"]
37+
38+
dead_letter_config {
39+
target_arn = aws_sqs_queue.lambda_dlq.arn
40+
}
41+
3642
tracing_config {
3743
mode = "Active"
3844
}
45+
46+
depends_on = [aws_iam_role_policy_attachment.lambda_dlq_attach]
3947
}
4048

4149
# provisioned concurrency - number of pre-warmed lambda containers

infrastructure/modules/lambda/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,7 @@ output "aws_lambda_invoke_arn" {
1616
output "lambda_cmk_arn" {
1717
value = aws_kms_key.lambda_cmk.arn
1818
}
19+
20+
output "lambda_role_arn" {
21+
value = var.eligibility_lambda_role_arn
22+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
resource "aws_sqs_queue" "lambda_dlq" {
2+
name = "${var.lambda_func_name}_dead_letter_queue"
3+
kms_master_key_id = aws_kms_key.lambda_cmk.id
4+
tags = var.tags
5+
}
6+
7+
resource "aws_iam_policy" "lambda_sqs_send_policy" {
8+
name = "LambdaSQSMessageSendPolicy"
9+
policy = jsonencode({
10+
Version = "2012-10-17",
11+
Statement = [
12+
{
13+
Effect = "Allow",
14+
Action = "sqs:SendMessage",
15+
"Resource": "*"
16+
}
17+
]
18+
})
19+
}
20+
21+
22+
# Attach lambda_dlq_policy to Lambda
23+
resource "aws_iam_role_policy_attachment" "lambda_dlq_attach" {
24+
role = var.eligibility_lambda_role_name
25+
policy_arn = aws_iam_policy.lambda_sqs_send_policy.arn
26+
}

infrastructure/modules/lambda/variables.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ variable "eligibility_lambda_role_arn" {
33
type = string
44
}
55

6+
variable "eligibility_lambda_role_name" {
7+
description = "lambda read role name for dynamodb"
8+
type = string
9+
}
10+
611
variable "lambda_func_name" {
712
description = "Name of the Lambda function"
813
type = string

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 lambda_insights_policy_attachment to Lambda
193+
resource "aws_iam_role_policy_attachment" "lambda_insights_policy_attachment" {
194+
role = aws_iam_role.eligibility_lambda_role.name
195+
policy_arn = "arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy"
196+
}
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: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ data "aws_subnet" "private_subnets" {
1313
module "eligibility_signposting_lambda_function" {
1414
source = "../../modules/lambda"
1515
eligibility_lambda_role_arn = aws_iam_role.eligibility_lambda_role.arn
16+
eligibility_lambda_role_name = aws_iam_role.eligibility_lambda_role.name
1617
workspace = local.workspace
1718
environment = var.environment
1819
lambda_func_name = "${terraform.workspace == "default" ? "" : "${terraform.workspace}-"}eligibility_signposting_api"

0 commit comments

Comments
 (0)