data 블록 참조

data 블록 참조 (Data Block Reference)

data 블록은 연결된 인프라스트럭처 객체를 프로비저닝하지 않고 프로바이더로부터 리소스에 대한 데이터를 가져와요. 데이터 소스 속성을 참조해 다른 리소스를 구성하면 구성을 동적으로 유지하고 하드코딩을 방지할 수 있어요.

출처: 문서

본문

data 블록은 연결된 인프라스트럭처 객체를 프로비저닝하지 않고 프로바이더로부터 리소스에 대한 데이터를 가져와요. 데이터 소스 속성을 참조해 다른 리소스를 구성할 수 있어 구성을 동적으로 유지하고 하드코딩을 방지해요. 자세한 내용은 인프라스트럭처 데이터 조회 (Query infrastructure data)를 참조하세요.

소스 유형, 인자, 속성은 프로바이더에 따라 달라져요. 자세한 내용은 프로바이더 문서를 참조하세요.

구성 모델

data 블록은 다음 구성을 지원해요:

전체 구성

다음 data 블록은 데이터 소스에서 지원되는 모든 내장 인자를 포함해요:

data "" "" {

   count =       # `count` and `for_each` are mutually exclusive
   depends_on = [  ]
   for_each = {          # `for_each` and `count` are mutually exclusive
       =
   }
   for_each = [       # `for_each` accepts a map or a set of strings
    "",
    ""
   ]
   provider =
   lifecycle {
      precondition {
         condition =
         error_message = ""
    }
    postcondition {
      condition =
      error_message = ""
    }
  }
}

사양

data 블록은 다음 구성을 지원해요.

data "" ""

모든 data 블록에 대해 다음 인자를 설정해야 해요:

프로바이더별 인자

데이터 소스에 대해 정의할 수 있는 인자는 프로바이더 개발자가 결정해요. 자세한 내용은 프로바이더 문서를 참조하세요.

count

count 메타-인자는 Terraform에게 동일하거나 유사한 구성을 가진 동일한 데이터 소스의 여러 인스턴스를 프로비저닝하도록 지시해요. 같은 블록에서 countfor_each 인자를 함께 사용할 수 없어요.

data "" "" {
  count =
}

count는 메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 count 참조를 참조하세요.

depends_on

depends_on 메타-인자는 데이터 소스가 의존하는 상위(upstream) 리소스를 지정해요. Terraform은 depends_on 인자를 포함한 데이터 소스에 대한 작업을 수행하기 전에 상위 리소스에 대한 모든 작업을 완료해야 해요.

data "" "" {
  depends_on = [  ]
}

depends_on은 메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 depends_on 참조를 참조하세요.

for_each

for_each 메타-인자는 각 리소스에 대해 별도의 구성 블록을 요구하지 않고 유사한 리소스를 프로비저닝하도록 Terraform에게 지시해요.

data "" "" {
  for_each = [ "" ]
  # . . .
}
data "" "" {
  for_each = {
    "" = ""
  }
}

for_each는 메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 for_each 참조를 참조하세요.

provider

provider 인자는 Terraform에게 중첩된 데이터 소스를 프로비저닝하기 위해 대체 프로바이더 구성을 사용하도록 지시해요.

data "" "" {
  provider = .
}

provider는 메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 provider 참조를 참조하세요.

lifecycle

lifecycle 블록은 Terraform이 데이터 소스에 대해 작업하는 방식에 대한 수명주기 규칙을 정의해요.

data "" "" {
  lifecycle {
    -
  }
}

Terraform이 리소스에 대해 작업을 수행하는 방식을 관리하기 위해 다음 수명주기 규칙을 지정할 수 있어요:

lifecycle 블록에 정의된 구성은 Terraform이 의존성 그래프를 구성하고 탐색하는 방식에 영향을 줘요. Terraform은 실행을 위해 임의의 표현식을 평가하기 전에 처리하므로 lifecycle 블록에서는 리터럴 값만 사용할 수 있어요.

lifecycle는 메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 lifecycle 참조를 참조하세요.

precondition

precondition 블록은 Terraform이 데이터 소스에 대해 작업을 평가하고 수행하기 전에 true를 반환해야 하는 조건을 지정해요. 조건이 false를 반환할 때 Terraform이 출력할 오류 메시지도 지정할 수 있어요.

resource {
  lifecycle {
    precondition {
      condition =
      error_message = ""
    }
  }
}

preconditionlifecycle 메타-인자에서 사용할 수 있는 지시자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 lifecycle 참조를 참조하세요.

postcondition

postcondition 블록은 Terraform이 데이터 소스에 대해 작업을 수행한 후에 true를 반환해야 하는 조건을 지정해요. 조건이 false를 반환할 때 Terraform이 콘솔에 출력할 오류 메시지도 지정할 수 있어요.

data "" "" {
  lifecycle {
    postcondition {
      condition =
      error_message = ""
    }
  }
}

postconditionlifecycle 메타-인자에서 사용할 수 있는 지시자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 lifecycle 참조를 참조하세요.

더 알아보기 (Learn more)