Variables 我正在尝试使用map为terraform脚本中的变量添加自定义验证,但我遇到了错误
我正在尝试为我的terraform脚本S3 bucket中的变量添加自定义验证。但我面临的错误如下所述:Variables 我正在尝试使用map为terraform脚本中的变量添加自定义验证,但我遇到了错误,variables,amazon-s3,terraform,Variables,Amazon S3,Terraform,我正在尝试为我的terraform脚本S3 bucket中的变量添加自定义验证。但我面临的错误如下所述: Reference to undeclared input variable on main.tf line 2, in resource "aws_s3_bucket" "gouth_bucket_1_apr_2021": 2: bucket = var.bucket #"terraform-s3-bucket"
Reference to undeclared input variable
on main.tf line 2, in resource "aws_s3_bucket" "gouth_bucket_1_apr_2021":
2: bucket = var.bucket #"terraform-s3-bucket"
An input variable with the name "bucket" has not been declared. This variable
can be declared with a variable "bucket" {} block."
有人能帮我吗?请告诉我哪些文件需要更改以及如何更改
提前谢谢
下面是我的代码:
main.tf :
resource "aws_s3_bucket" "gouth_bucket_1_apr_2021" {
bucket = var.bucket
acl = "private"
tags= var.tags
}
我可以看到两个潜在的问题
var.bucket
,但在定义中的任何地方都没有为其定义变量。这看起来很简单:Terraform plan-var file=s3.tfvars
,那么这没关系,或者您可以将tfvars文件重命名为something.auto.tfvars
或Terraform.tfvars
,以便自动使用。(见>)我希望这能回答您的问题。您发布的代码没有问题。请确保您的问题完全代表您的实际错误和代码。
s3.tfvars :
bucket = "first-bucket-gouth"
#Variables of Tags
tags= {
name = "s3bucket",
account_id = "1234567",
owner = "abc@def.com",
os= "windows",
backup = "N",
application = "abc",
description = "s3 bucket",
env = "dev",
ticketid = "101",
marketami = "NA",
patching = "NA",
dc = "bangalore"
}
validation.tf :
variable "tags" {
type = map(string)
validation {
condition = length(var.tags["env"]) > 0
error_message = "Environment tag is required !!"
}
validation {
condition = length(var.tags["owner"]) > 0
error_message = "Owner tag is required !!"
}
validation {
condition = length(var.tags["dc"]) > 0
error_message = "DC tag is required !!"
}
validation {
condition = can(var.tags["account_id"])
error_message = "Acoount ID tag is required!!"
}
}
variable "bucket" {}