Terraform v0.13.1
- provider registry.terraform.io/hashicorp/aws v3.4.0
I have a local object that describes the bucket-names and regions i want to create :-
local.allregion_buckets
[
{
“name” = “deployment-regional-789205377555-ap-northeast-1”
“region” = “ap-northeast-1”
},
{
“name” = “lambda-regional-789205377555-ap-northeast-1”
“region” = “ap-northeast-1”
},
{
“name” = “deployment-regional-789205377555-ap-northeast-2”
“region” = “ap-northeast-2”
},
{
“name” = “lambda-regional-789205377555-ap-northeast-2”
“region” = “ap-northeast-2”
},
{
“name” = “deployment-regional-789205377555-ap-south-1”
“region” = “ap-south-1”
},
{
“name” = “lambda-regional-789205377555-ap-south-1”
“region” = “ap-south-1”
},
{
“name” = “deployment-regional-789205377555-ap-southeast-1”
“region” = “ap-southeast-1”
},
{
“name” = “lambda-regional-789205377555-ap-southeast-1”
“region” = “ap-southeast-1”
},
{
“name” = “deployment-regional-789205377555-ap-southeast-2”
“region” = “ap-southeast-2”
},
{
“name” = “lambda-regional-789205377555-ap-southeast-2”
“region” = “ap-southeast-2”
},
{
“name” = “deployment-regional-789205377555-ca-central-1”
“region” = “ca-central-1”
},
{
“name” = “lambda-regional-789205377555-ca-central-1”
“region” = “ca-central-1”
},
{
“name” = “deployment-regional-789205377555-eu-central-1”
“region” = “eu-central-1”
},
{
“name” = “lambda-regional-789205377555-eu-central-1”
“region” = “eu-central-1”
},
{
“name” = “deployment-regional-789205377555-eu-north-1”
“region” = “eu-north-1”
},
{
“name” = “lambda-regional-789205377555-eu-north-1”
“region” = “eu-north-1”
},
{
“name” = “deployment-regional-789205377555-eu-west-1”
“region” = “eu-west-1”
},
{
“name” = “lambda-regional-789205377555-eu-west-1”
“region” = “eu-west-1”
},
{
“name” = “deployment-regional-789205377555-eu-west-2”
“region” = “eu-west-2”
},
{
“name” = “lambda-regional-789205377555-eu-west-2”
“region” = “eu-west-2”
},
{
“name” = “deployment-regional-789205377555-eu-west-3”
“region” = “eu-west-3”
},
{
“name” = “lambda-regional-789205377555-eu-west-3”
“region” = “eu-west-3”
},
{
“name” = “deployment-regional-789205377555-sa-east-1”
“region” = “sa-east-1”
},
{
“name” = “lambda-regional-789205377555-sa-east-1”
“region” = “sa-east-1”
},
{
“name” = “deployment-regional-789205377555-us-east-1”
“region” = “us-east-1”
},
{
“name” = “lambda-regional-789205377555-us-east-1”
“region” = “us-east-1”
},
{
“name” = “deployment-regional-789205377555-us-east-2”
“region” = “us-east-2”
},
{
“name” = “lambda-regional-789205377555-us-east-2”
“region” = “us-east-2”
},
{
“name” = “deployment-regional-789205377555-us-west-1”
“region” = “us-west-1”
},
{
“name” = “lambda-regional-789205377555-us-west-1”
“region” = “us-west-1”
},
{
“name” = “deployment-regional-789205377555-us-west-2”
“region” = “us-west-2”
},
{
“name” = “lambda-regional-789205377555-us-west-2”
“region” = “us-west-2”
},
]
I’m trying to have terraform build the buckets like so :-
resource “aws_s3_bucket” “my_s3_allregions” {
count = length(local.allregion_buckets)
bucket = local.allregion_buckets[count.index].name
acl = “private”
tags = var.default_tags
force_destroy = true
}
I have tried adding these two options to the resource block
- region = local.allregion_buckets[count.index].region
Error: Computed attribute cannot be set
on main.tf line 88, in resource “aws_s3_bucket” “my_s3_allregions”:
88: region = local.allregion_buckets[count.index].region
- provider = { aws = format(“aws.%s”, local.allregion_buckets[count.index].region) }
where i have aws providers created for every region.
Error: Invalid provider configuration reference
on main.tf line 89, in resource “aws_s3_bucket” “my_s3_allregions”:
89: provider = { aws = format(“aws.%s”, local.allregion_buckets[count.index].region) }The provider argument requires a provider type name, optionally followed by a
period and then a configuration alias.
Neither of these work, How can i achieve my objective?