Search code examples
amazon-web-servicesamazon-s3terraformterraform-provider-awsbucket

Terraform multiple s3 bucket creation


I am trying to create multiple s3 buckets each with different bucket settings. i am Looking for syntax on how to refer the bucket ids of the dynamically created bucket in other bucket resource blocks. New to terraform. looking for sample code or terrraform document for this syntax

Bel0w is sample code for creating bucket from list names

resource "aws_s3_bucket" "this" {
  count=length(var.bucket_names)
  bucket = var.bucket_names[count.index]
  acl="private"

  versioning {
    enabled = var.bucket_versioning
  }
}

In this code i want to refer the dynamically created bucket id's and assign their bucket policy settings. Need the syntax . not sure if this correct

resource "aws_s3_bucket_policy" "this" {
  count=length(var.bucket_names)
  bucket = aws_s3_bucket.this.id[count.index]
  policy = data.aws_iam_policy_document.this.json
}

Solution

  • In your aws_s3_bucket_policy, instead of

    bucket = aws_s3_bucket.this.id[count.index]
    

    it should be

    bucket = aws_s3_bucket.this[count.index].id
    

    assuming that everything else is correct, e.g. data.aws_iam_policy_document.this.json is valid.