# SQS queue for Lambda communication.
module "communication_queue" {
  source = "git@github.com:theorchard/terraform-sqs.git//?ref=2.4.1"

  environment        = var.environment
  application_family = var.application_family
  queue_name         = local.sqs_queue_name

  sqs_max_message_size           = 16 * 1024
  sqs_message_retention_seconds  = 14 * 24 * 60 * 60
  sqs_visibility_timeout_seconds = 5 * 60

  sqs_deadletter_enabled               = "true"
  deadletter_max_message_size          = 16 * 1024
  deadletter_message_retention_seconds = 14 * 24 * 60 * 60
}

data "aws_iam_policy_document" "communication_queue_policy_document" {
  version = "2012-10-17"
  statement {
    effect = "Allow"
    principals {
      identifiers = ["arn:aws:iam::${module.aws_accounts.orcd_accounts["orcd-shared-services"]}:role/shared-break-glass-audit"]
      type        = "AWS"
    }
    actions = [
      "sqs:DeleteMessage",
      "sqs:SendMessage",
      "sqs:ReceiveMessage",
    ]
    resources = [module.communication_queue.queue_arn]
  }
}

resource "aws_sqs_queue_policy" "communication_queue_policy" {
  policy    = data.aws_iam_policy_document.communication_queue_policy_document.json
  queue_url = module.communication_queue.queue_url
}
