data "aws_iam_policy_document" "ecs_assume_role" {
  statement {
    sid     = "AllowAssumeRoleFromECSTasks"
    effect  = "Allow"
    actions = ["sts:AssumeRole"]

    principals {
      type        = "Service"
      identifiers = ["ecs-tasks.amazonaws.com"]
    }
  }
}

data "aws_iam_policy_document" "appetizer_task_role_doc" {

  statement {
    sid = "GetSecrets"
    effect = "Allow"
    actions = [
      "secretsmanager:GetSecretValue"
    ]
    resources = [
      data.aws_secretsmanager_secret.appetizer_password.arn,
      data.aws_secretsmanager_secret.dockerhub.arn,
      data.aws_secretsmanager_secret.appetizer_mm_identity.arn
    ]
  }

  statement {
    sid = "appetizerECSTaskExecution"
    effect = "Allow"
    actions = [
      "logs:CreateLogStream",
      "logs:PutLogEvents"
    ]
    resources = ["*"]
  }
}

resource "aws_iam_policy" "ecs_appetizer_task_policy" {
  name = "ecs_task_role-generic"
  policy = data.aws_iam_policy_document.appetizer_task_role_doc.json
}

resource "aws_iam_role" "appetizer_task_role" {
  name = "appetizer-task-role"
  assume_role_policy = data.aws_iam_policy_document.ecs_assume_role.json
}

resource "aws_iam_role_policy_attachment" "appetizer_task_role_policy_attach" {
  role = aws_iam_role.appetizer_task_role.name
  policy_arn = aws_iam_policy.ecs_appetizer_task_policy.arn
}


data "aws_iam_policy_document" "classifier_task_role_doc" {
  statement {
    sid = "GetSecrets"
    effect = "Allow"
    actions = [
      "secretsmanager:GetSecretValue"
    ]
    resources = [
      data.aws_secretsmanager_secret.classifier_identity.arn
    ]
  }
  statement {
    sid = "classifierECSTaskExecution"
    effect = "Allow"
    actions = [
      "logs:CreateLogStream",
      "logs:PutLogEvents"
    ]
    resources = ["*"]
  }
}

resource "aws_iam_policy" "ecs_classifier_task_policy" {
  name = "ecs_task_role-classifier"
  policy = data.aws_iam_policy_document.classifier_task_role_doc.json
}

resource "aws_iam_role" "classifier_task_role" {
  name = "classifier-task-role"
  assume_role_policy = data.aws_iam_policy_document.ecs_assume_role.json
}

resource "aws_iam_role_policy_attachment" "classifier_task_role_policy_attach" {
  role = aws_iam_role.classifier_task_role.name
  policy_arn = aws_iam_policy.ecs_classifier_task_policy.arn
}
