Search code examples
amazon-s3file-uploadterraform-provider-aws

Uploading Multiple files in AWS S3 from terraform


I want to upload multiple files to AWS S3 from a specific folder in my local device. I am running into the following error.

enter image description here

Here is my terraform code.

resource "aws_s3_bucket" "testbucket" {
    bucket = "test-terraform-pawan-1"
    acl = "private"

    tags = {
        Name  = "test-terraform"
        Environment = "test"
    }
}

resource "aws_s3_bucket_object" "uploadfile" {
  bucket = "test-terraform-pawan-1"
  key     = "index.html"
  source = "/home/pawan/Documents/Projects/"

}

How can I solve this problem?


Solution

  • [For TF versions < 0.12.8]

    You are trying to upload a directory, whereas Terraform expects a single file in the source field. It is not yet supported to upload a folder to an S3 bucket.

    However, you can invoke awscli commands using null_resource provisioner, as suggested here.

    resource "null_resource" "remove_and_upload_to_s3" {
      provisioner "local-exec" {
        command = "aws s3 sync ${path.module}/s3Contents s3://${aws_s3_bucket.site.id}"
      }
    }