I am new to Terraform and following a tutorial on how to create aws_elasticip module. When i perform ‘terraform plan’ this issue is present and i can’t move forward with creating my terraform file.
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
}
provider "aws" {
region = "eu-west-2"
}
resource "aws_eip" "lb" {
domain = "vpc"
}
I have also attempted to do this with a instance variable declared and the error still persists
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
}
provider "aws" {
region = "eu-west-2"
}
resource "aws_vpc" "vpc_a" {
cidr_block = "10.0.0.0/16"
}
resource "aws_instance" "server_a" {
ami = "ami-06464c878dbe46da4"
instance_type = "t2.micro"
}
resource "aws_eip" "lb" {
instance = aws_instance.server_a.id
domain = "vpc"
}
The error I am getting is below.
│ Error: Value for unconfigurable attribute
│
│ with aws_eip.lb,
│ on main.tf line 25, in resource "aws_eip" "lb":
│ 25: domain = "vpc"
│
│ Can't configure a value for "domain": its value will be decided
│ automatically based on the result of applying this configuration.
2
Answers
If you see the documentation about this module in terraform:
https://registry.terraform.io/providers/hashicorp/aws/2.36.0/docs/resources/eip
This resource doesn’t have a domain argument. And the error message sais the domain value will be obtained after apply the terraform.
Check the documentation in the link above to set the correct arguments.
Hope helps you
The semantic versioning specification you provided in the config for the provider block is
~> 4.16
which resolves to>= 4.16 < 5.0.0
. Thedomain
parameter was migrated from aComputed
attribute to an input attribute in theaws_eip
resource in version 5.0.0 as a pseudo-replacement for thevpc
parameter. You would need to upgrade the AWS provider to a minimum of 5.0.0 to use this parameter.