Using terraform_remote_state for getting data from another terraform state

2 min read | by Jordi Prats

On terraform, besides returning some information to the user, returning data as output can be used as an input for terraform code that needs to use a resource created by another team.

On the terraform code that creates the resource, we will have to set the variable and it's value:

output endpoint {
    vpc_id = aws_vpc.databases.id
}

Then, on the code that uses this resource we will have to declare the tfstate as a data source using terraform_remote_state

Assuming the terraform state resides on an S3 bucket we would have to define it as follows:

data "terraform_remote_state" "network" {
  backend = "s3"

  config = {
    bucket = var.terraform_remote_state_s3_bucket
    key    = var.terraform_remote_state_s3_network_tfstate
    region = "eu-west-1"
  }
}

Once it is defined we will be able to use it as any other resource:

module "demo-service" {
(...)
  vpc_id = data.terraform_remote_state.network.outputs.vpc_id
}

Posted on 11/03/2021