Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Terraform“U Remote”状态错误:此对象没有名为“的参数、嵌套块或导出属性”;专有网络“用户识别号”;_Amazon Web Services_Amazon S3_Terraform_Terraform Remote State - Fatal编程技术网

Amazon web services Terraform“U Remote”状态错误:此对象没有名为“的参数、嵌套块或导出属性”;专有网络“用户识别号”;

Amazon web services Terraform“U Remote”状态错误:此对象没有名为“的参数、嵌套块或导出属性”;专有网络“用户识别号”;,amazon-web-services,amazon-s3,terraform,terraform-remote-state,Amazon Web Services,Amazon S3,Terraform,Terraform Remote State,在AWS中使用Terraform(TF)时,我在尝试使用Terraform_remote_状态调用vpc_id时遇到错误。我们分割出网络的不同部分,以减少状态滑动。但是,它还需要与基础设施每个单独部分的状态文件(即vpc、sgs、角色等的状态文件)交互。当我试图从保存在S3 bucket中的statefile中获取vpc_id时,出现以下错误: on main.tf line 78, in module "vpc_sg": 78: vpc_id = data.t

在AWS中使用Terraform(TF)时,我在尝试使用Terraform_remote_状态调用vpc_id时遇到错误。我们分割出网络的不同部分,以减少状态滑动。但是,它还需要与基础设施每个单独部分的状态文件(即vpc、sgs、角色等的状态文件)交互。当我试图从保存在S3 bucket中的statefile中获取vpc_id时,出现以下错误:


  on main.tf line 78, in module "vpc_sg":
  78:   vpc_id = data.terraform_remote_state.vpc.vpc_id

This object has no argument, nested block, or exported attribute named
"vpc_id".
这是main.tf文件中我的terraform_remote_状态调用:

  backend = "s3"
  workspace = var.workspace
  config = {
    bucket = "terraform-east"
    key = "terraform-vpc.tfstate"
    region ="us-east-1" 
  }
}
这是同一main.tf中的调用

  // output "sg_id"
  source = "git::https://url_to_sg.git/reference?
  vpc_cidr = data.terraform_remote_state.vpc.vpc_cidr -- This line also doesn't work.. but same issue.
  *vpc_id = data.terraform_remote_state.vpc.vpc_id* -- Here's the troublesome line.
  deployment_name = "*redacted*"
  workspace = var.workspace
  tags = merge(
    local.common_tags,
    map(
      "Name", "vpc_sg-${var.workspace}",
      "module", "vpc_sg"
    )
  )
}
以下是vpc目录中的outputs.tf文件:

output "vpc_id" {
  value       = module.vpc.vpc_id
  description = "The VPC ID"
}

output "vpc_cidr" {
  value       = var.vpc_cidr
  description = "The VPC CIDR block"
}
terraform {
    backend "s3" {
        bucket = "terraform-east"
        key = "terraform-vpc.tfstate"
        region ="us-east-1" 
        }
}
以下是tf_远程_状态声明:

data "terraform_remote_state" "vpc" {
    backend = "s3"
    workspace = var.workspace
    config = {
         bucket = "correct bucket (trust me)
         key = "correct key"
         region = us-east-1
    }
}
最后,这里是vpc目录中的backend.tf信息:

output "vpc_id" {
  value       = module.vpc.vpc_id
  description = "The VPC ID"
}

output "vpc_cidr" {
  value       = var.vpc_cidr
  description = "The VPC CIDR block"
}
terraform {
    backend "s3" {
        bucket = "terraform-east"
        key = "terraform-vpc.tfstate"
        region ="us-east-1" 
        }
}

我尝试过使用outputs.vpc_id(如上所述)、不使用outputs(tf 0.12更新后需要输出)、使用outputs.vpc_id.value(因为statefile使其看起来像是结构)和使用outputs[1].value。。它给出了不同的错误,但它们都失败了。非常感谢您的帮助。

数据源将远程状态的输出导出到名为
outputs
的属性下,该属性本身是一个对象值,每个输出值包含一个属性

因此,要特别参考
vpc
输出值,您需要编写:

data.terraform_remote_state.outputs.vpc
…然后从嵌套的
vpc
对象中获取
vpc\u id
属性:

data.terraform_remote_state.outputs.vpc.vpc_id

terraform\u remote\u state
数据源在名为
outputs
的属性下导出远程状态的输出,该属性本身是一个对象值,每个输出值包含一个属性

因此,要特别参考
vpc
输出值,您需要编写:

data.terraform_remote_state.outputs.vpc
…然后从嵌套的
vpc
对象中获取
vpc\u id
属性:

data.terraform_remote_state.outputs.vpc.vpc_id

结果很简单。需要确保VPN连接已建立。-\u谢谢你的收看

结果很简单。需要确保VPN连接已建立。-\u谢谢你的收看

值为
module.vpc.vpc\u id
的输出块的名称是什么?哎呀。它的输出是“vpc_id”{值为
module.vpc.vpc_id
的输出块的名称是什么?哎呀。它的输出是“vpc_id”{好的,我试过了。但是,看起来我忽略了显示我是如何声明数据源调用的。
数据“terraform_remote_state”“vpc”{backend=“s3”workspace=var.workspace config={bucket=“correct bucket(trust me)key=“correct key”region=us-east-1}
我继续,只是在原始帖子中添加了代码..注释中的格式有问题。实际上是data.terraform\u remote\u state.vpc.outputs.vpc\u idOkay,我试过了。但是,看起来我忽略了如何声明数据源调用。
data“terraform\u remote\u state”vpc{backend=“s3“workspace=var.workspace config={bucket=“correct bucket(trust me)key=“correct key”region=us-east-1}}
我继续写了,只是把代码添加到了原来的帖子中..注释中的格式搞乱了.实际上是data.terraform\u remote\u state.vpc.outputs.vpc\u id