Skip to content

Commit d22e0e3

Browse files
enable dead letter queue
1 parent dcc1a7a commit d22e0e3

File tree

6 files changed

+43
-3
lines changed

6 files changed

+43
-3
lines changed

infrastructure/modules/lambda/lambda.tf

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

36+
dead_letter_config {
37+
target_arn = aws_sqs_queue.lambda_dlq.arn
38+
}
39+
3640
tracing_config {
3741
mode = "Active"
3842
}
43+
3944
}
4045

4146
# provisioned concurrency - number of pre-warmed lambda containers
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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+
# sql policy attachment
8+
resource "aws_iam_role_policy" "lambda_sqs_send_inline" {
9+
name = "LambdaSQSMessageSendPolicy"
10+
role = var.eligibility_lambda_role_name
11+
12+
policy = jsonencode({
13+
Version = "2012-10-17",
14+
Statement = [
15+
{
16+
Sid = "AllowSQSSendMessage",
17+
Effect = "Allow",
18+
Action = ["sqs:SendMessage"],
19+
Resource = aws_sqs_queue.lambda_dlq.arn
20+
}
21+
]
22+
})
23+
}

infrastructure/modules/lambda/variables.tf

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
variable "eligibility_lambda_role_arn" {
2-
description = "lambda read role arn for dynamodb"
2+
description = "lambda role arn"
3+
type = string
4+
}
5+
6+
variable "eligibility_lambda_role_name" {
7+
description = "lambda role name"
38
type = string
49
}
510

infrastructure/stacks/api-layer/assumed_role_permissions_boundary.tf

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ data "aws_iam_policy_document" "assumed_role_permissions_boundary" {
5252

5353
# X-Ray - Lambda tracing
5454
"xray:PutTraceSegments",
55-
"xray:PutTelemetryRecords"
55+
"xray:PutTelemetryRecords",
56+
57+
#SQS - message management
58+
"sqs:SendMessage"
5659
]
5760

5861
resources = ["*"]

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"

infrastructure/stacks/iams-developer-roles/iams_permissions_boundary.tf

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,10 @@ data "aws_iam_policy_document" "permissions_boundary" {
217217
"ssm:GetParameters",
218218
"ssm:ListTagsForResource",
219219
"ssm:PutParameter",
220-
"ssm:AddTagsToResource"
220+
"ssm:AddTagsToResource",
221+
222+
#SQS - message management
223+
"sqs:SendMessage"
221224
]
222225

223226
resources = ["*"]

0 commit comments

Comments
 (0)