# This effectively creates an empty S3 folder.
resource "aws_s3_object" "lambda_new_release_json_folder" {
  bucket = local.s3_bucket
  key    = "${var.s3_path}/"
}

data "aws_iam_policy_document" "s3_policy_data" {
  statement {
    effect = "Allow"

    actions = [
      "s3:AbortMultipartUpload",
      "s3:DeleteObject",
      "s3:DeleteObjectVersion",
      "s3:GetBucketLocation",
      "s3:GetBucketVersioning",
      "s3:GetLifecycleConfiguration",
      "s3:GetObject",
      "s3:GetObjectAcl",
      "s3:GetObjectTorrent",
      "s3:GetObjectVersion",
      "s3:GetObjectVersionAcl",
      "s3:GetObjectVersionTorrent",
      "s3:GetReplicationConfiguration",
      "s3:ListBucket",
      "s3:ListBucketMultipartUploads",
      "s3:ListBucketVersions",
      "s3:ListMultipartUploadParts",
      "s3:PutObject",
      "s3:PutObjectAcl",
      "s3:PutObjectVersionAcl",
      "s3:ReplicateDelete",
      "s3:ReplicateObject",
      "s3:RestoreObject",
    ]

    resources = [
      "arn:aws:s3:::${local.s3_bucket}/${var.s3_path}",
      "arn:aws:s3:::${local.s3_bucket}/${var.s3_path}/*",
    ]
  }

  statement {
    effect = "Allow"

    actions = [
      "s3:GetBucketLocation",
      "s3:ListBucket",
    ]

    resources = [
      "arn:aws:s3:::${local.s3_bucket}",
    ]
  }
}

resource "aws_iam_policy" "s3_policy" {
  name   = "S3-${local.s3_bucket}-${var.s3_path}-RW"
  policy = data.aws_iam_policy_document.s3_policy_data.json
}
