# Jenkins job policy that gives permission to s3 bucket and lambda
data "aws_iam_policy_document" "update_subaccount_mapping_jenkins_policy_document" {
  statement {
    actions = [
      "s3:PutObject",
    ]
    resources = [
      "${module.subaccount_mapping_bucket.s3_bucket_arn_output}/*",
    ]
  }
  statement {
    effect = "Allow"
    actions = [
      "lambda:InvokeFunction",
    ]
    resources = [
      module.lambda_update_subaccount_mapping.lambda_arn
    ]
  }
}

resource "aws_iam_policy" "update_subaccount_mapping_jenkins_policy" {
  name   = "${var.environment}-update-subaccount-mapping-jenkins-policy"
  policy = data.aws_iam_policy_document.update_subaccount_mapping_jenkins_policy_document.json
}

data "aws_iam_policy_document" "assume_role_policy" {
  statement {
    actions = ["sts:AssumeRole"]

    principals {
      type = "AWS"

      identifiers = [
        "arn:aws:iam::${data.aws_caller_identity.current.account_id}:role/prod-jenkins-aws-task-agent"
      ]
    }
  }
}

resource "aws_iam_role" "assume_jenkins_role" {
  name               = "${var.environment}-update-subaccount-mapping-jenkins-role"
  assume_role_policy = data.aws_iam_policy_document.assume_role_policy.json
}

resource "aws_iam_role_policy_attachment" "update_subaccount_mapping_jenkins_policy_attachment" {
  role       = aws_iam_role.assume_jenkins_role.id
  policy_arn = aws_iam_policy.update_subaccount_mapping_jenkins_policy.arn
}
