module "amazon_datapulse_sqs" {
  source = "git@github.com:theorchard/terraform-sqs.git?ref=2.4.1"

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

  sqs_visibility_timeout_seconds       = 10 * 60
  sqs_max_message_size                 = 1024 * 1024
  sqs_deadletter_enabled               = true
  deadletter_message_retention_seconds = 14 * 24 * 60 * 60
  deadletter_max_receive_count         = 4
  deadletter_max_message_size          = 1024 * 1024
}

# Allow Amazon Music SNS topic to send messages to SQS queue
# https://musiccentral.amazon.com/help/datapulse/onboard-notifications
data "aws_iam_policy_document" "amazon_music_sns_send_policy" {
  statement {
    sid    = "Allow_Amazon_Music_SNS_topic_to_Send_Message"
    effect = "Allow"

    principals {
      type        = "Service"
      identifiers = ["sns.amazonaws.com"]
    }

    actions   = ["SQS:SendMessage"]
    resources = [module.amazon_datapulse_sqs.queue_arn]

    condition {
      test     = "ArnLike"
      variable = "aws:SourceArn"
      values   = ["arn:aws:sns:us-east-1:767398096717:TableUpdateTopic"]
    }
  }
}

resource "aws_sqs_queue_policy" "amazon_music_sns_send_policy" {
  queue_url = module.amazon_datapulse_sqs.queue_url
  policy    = data.aws_iam_policy_document.amazon_music_sns_send_policy.json
}
