Skip to content

Commit 2a34677

Browse files
Merge pull request #28 from NHSDigital/aiva2/CCM--8237_SQSModule
CCM-8237 SQS module
2 parents cc4d494 + 428d5e0 commit 2a34677

13 files changed

Lines changed: 332 additions & 1 deletion
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Combine Dependabot PRs
2+
3+
on:
4+
workflow_dispatch:
5+
6+
permissions:
7+
contents: write
8+
pull-requests: write
9+
checks: read
10+
11+
jobs:
12+
combine-prs:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: combine-prs
17+
id: combine-prs
18+
uses: github/combine-prs@v5.1.0
19+
with:
20+
ci_required: false
21+
labels: dependencies
22+
pr_title: Combined Dependabot PRs
23+
combine_branch_name: dependabotCombined
24+
pr_body_header: Combined Dependabot PRs

infrastructure/modules/lambda/outputs.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ output "function_qualified_arn" {
1515
}
1616

1717
output "function_env_vars" {
18-
value = length(var.lambda_env_vars) == 0 ? [] : aws_lambda_function.main.environment[0].variables
18+
value = length(var.lambda_env_vars) == 0 ? {} : aws_lambda_function.main.environment[0].variables
1919
}
2020

2121
output "iam_role_name" {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
data "aws_iam_policy_document" "deadletter_queue" {
2+
count = var.create_dlq ? 1 : 0
3+
4+
statement {
5+
effect = "Allow"
6+
7+
resources = [aws_sqs_queue.deadletter_queue[0].arn]
8+
9+
actions = [
10+
"sqs:ChangeMessageVisibility",
11+
"sqs:DeleteMessage",
12+
"sqs:GetQueueAttributes",
13+
"sqs:GetQueueUrl",
14+
"sqs:ListQueueTags",
15+
"sqs:ReceiveMessage",
16+
"sqs:SendMessage",
17+
]
18+
19+
principals {
20+
type = "AWS"
21+
identifiers = [var.aws_account_id]
22+
}
23+
}
24+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
data "aws_iam_policy_document" "sqs_queue" {
2+
statement {
3+
effect = "Allow"
4+
5+
resources = [aws_sqs_queue.sqs_queue.arn]
6+
7+
actions = [
8+
"sqs:ChangeMessageVisibility",
9+
"sqs:DeleteMessage",
10+
"sqs:GetQueueAttributes",
11+
"sqs:GetQueueUrl",
12+
"sqs:ListQueueTags",
13+
"sqs:ReceiveMessage",
14+
"sqs:SendMessage",
15+
]
16+
17+
principals {
18+
type = "AWS"
19+
identifiers = [var.aws_account_id]
20+
}
21+
}
22+
23+
dynamic "statement" {
24+
for_each = var.sns_source_arn != null ? [1] : []
25+
26+
content {
27+
effect = "Allow"
28+
29+
principals {
30+
type = "Service"
31+
identifiers = [
32+
"sns.amazonaws.com"
33+
]
34+
}
35+
36+
actions = [
37+
"sqs:SendMessage",
38+
"sqs:SendMessageBatch",
39+
]
40+
41+
condition {
42+
test = "ArnEquals"
43+
variable = "aws:SourceArn"
44+
values = [
45+
var.sns_source_arn
46+
]
47+
}
48+
49+
resources = [
50+
aws_sqs_queue.sqs_queue.arn,
51+
]
52+
}
53+
}
54+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
locals {
2+
# Compound Scope Identifier
3+
csi = replace(
4+
format(
5+
"%s-%s-%s-%s",
6+
var.project,
7+
var.environment,
8+
var.component,
9+
var.name
10+
),
11+
"_",
12+
"",
13+
)
14+
15+
# CSI for use in resources with a global namespace, i.e. S3 Buckets
16+
csi_global = replace(
17+
format(
18+
"%s-%s-%s-%s-%s",
19+
var.project,
20+
var.aws_account_id,
21+
var.region,
22+
var.environment,
23+
var.component,
24+
),
25+
"_",
26+
"",
27+
)
28+
29+
default_tags = merge(
30+
var.default_tags,
31+
{
32+
Module = var.module
33+
Name = local.csi
34+
},
35+
)
36+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
output "sqs_queue_url" {
2+
value = aws_sqs_queue.sqs_queue.id
3+
}
4+
5+
output "sqs_queue_arn" {
6+
value = aws_sqs_queue.sqs_queue.arn
7+
}
8+
9+
output "sqs_dlq_url" {
10+
value = var.create_dlq ? aws_sqs_queue.deadletter_queue[0].id : null
11+
}
12+
13+
output "sqs_dlq_arn" {
14+
value = var.create_dlq ? aws_sqs_queue.deadletter_queue[0].arn : null
15+
}
16+
17+
output "sqs_queue_name" {
18+
value = "${local.csi}-queue"
19+
}
20+
21+
output "sqs_dlq_name" {
22+
value = var.create_dlq ? aws_sqs_queue.deadletter_queue[0].name : null
23+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
resource "aws_sqs_queue" "sqs_queue" {
2+
name = "${local.csi}-queue"
3+
4+
message_retention_seconds = var.message_retention_seconds
5+
visibility_timeout_seconds = var.visibility_timeout_seconds
6+
fifo_queue = var.fifo_queue
7+
content_based_deduplication = var.content_based_deduplication
8+
max_message_size = var.max_message_size
9+
10+
kms_master_key_id = var.sqs_kms_key_arn
11+
kms_data_key_reuse_period_seconds = var.kms_data_key_reuse_period_seconds
12+
13+
tags = local.default_tags
14+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
resource "aws_sqs_queue" "deadletter_queue" {
2+
count = var.create_dlq ? 1 : 0
3+
4+
name = "${local.csi}-dlq"
5+
6+
message_retention_seconds = var.message_retention_seconds
7+
visibility_timeout_seconds = var.visibility_timeout_seconds
8+
fifo_queue = var.fifo_queue
9+
content_based_deduplication = var.content_based_deduplication
10+
max_message_size = var.max_message_size
11+
12+
kms_master_key_id = var.sqs_kms_key_arn
13+
kms_data_key_reuse_period_seconds = var.kms_data_key_reuse_period_seconds
14+
15+
tags = local.default_tags
16+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
resource "aws_sqs_queue_policy" "sqs_queue_policy" {
2+
queue_url = aws_sqs_queue.sqs_queue.id
3+
policy = data.aws_iam_policy_document.sqs_queue.json
4+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
resource "aws_sqs_queue_policy" "deadletter_queue" {
2+
count = var.create_dlq ? 1 : 0
3+
4+
queue_url = aws_sqs_queue.deadletter_queue[0].id
5+
policy = data.aws_iam_policy_document.deadletter_queue[0].json
6+
}

0 commit comments

Comments
 (0)