Variables 我正在尝试使用map为terraform脚本中的变量添加自定义验证,但我遇到了错误

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"

我正在尝试为我的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
    ,但在定义中的任何地方都没有为其定义变量。这看起来很简单:
  • 您可能没有拾取tfvars文件,如果您使用tfvars文件作为选项运行Terraform,例如
    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" {}