data "aws_iam_policy_document" "common_lambda_policy_document" {
  statement {
    effect    = "Allow"
    resources = ["arn:aws:s3:::*"]
    actions   = ["s3:ListAllMyBuckets"]
  }

  statement {
    effect = "Allow"
    resources = [
    "arn:aws:s3:::${var.input_bucket_name}"]
    actions = ["s3:ListBucket"]
  }

  statement {
    sid    = ""
    effect = "Allow"
    resources = [
    "arn:aws:s3:::${var.input_bucket_name}/*"]

    actions = [
      "s3:GetObject",
      "s3:GetObjectAcl",
    ]
  }

  statement {
    sid    = ""
    effect = "Allow"
    resources = [
    module.sns_general_status.proxied_sns_arn]

    actions = [
      "sns:GetPlatformApplicationAttributes",
      "sns:GetTopicAttributes",
      "sns:Publish",
    ]
  }
}

resource "aws_iam_policy" "common_lambda_policy" {
  name        = "${var.environment}-asset-transcoder-common-lambda-policy"
  description = "Common asset-transcoder lambda policy"
  policy      = data.aws_iam_policy_document.common_lambda_policy_document.json
}

data "aws_iam_policy_document" "final_status_publish_lambda_policy_document" {
  statement {
    sid    = ""
    effect = "Allow"

    resources = [
      module.sns_final_status.proxied_sns_arn
    ]

    actions = [
      "sns:GetPlatformApplicationAttributes",
      "sns:GetTopicAttributes",
      "sns:Publish",
    ]
  }
}

resource "aws_iam_policy" "final_status_publish_lambda_policy" {
  name   = "${var.environment}-final-status-publish-lambda-policy"
  policy = data.aws_iam_policy_document.final_status_publish_lambda_policy_document.json
}
