data 블록 참조
data 블록 참조 (Data Block Reference)
data 블록은 연결된 인프라스트럭처 객체를 프로비저닝하지 않고 프로바이더로부터 리소스에 대한 데이터를 가져와요. 데이터 소스 속성을 참조해 다른 리소스를 구성하면 구성을 동적으로 유지하고 하드코딩을 방지할 수 있어요.
출처: 문서
본문
data 블록은 연결된 인프라스트럭처 객체를 프로비저닝하지 않고 프로바이더로부터 리소스에 대한 데이터를 가져와요. 데이터 소스 속성을 참조해 다른 리소스를 구성할 수 있어 구성을 동적으로 유지하고 하드코딩을 방지해요. 자세한 내용은 인프라스트럭처 데이터 조회 (Query infrastructure data)를 참조하세요.
소스 유형, 인자, 속성은 프로바이더에 따라 달라져요. 자세한 내용은 프로바이더 문서를 참조하세요.
구성 모델
data 블록은 다음 구성을 지원해요:
data "" ""블록- 프로바이더별 인자 (provider-specific arguments) 블록 | 프로바이더 문서를 참조하세요
count숫자 |for_each와 상호 배타적depends_on참조 목록for_each문자열의 맵 또는 집합 |count와 상호 배타적provider참조lifecycle블록precondition블록condition문자열error_message문자열
postcondition블록condition문자열error_message문자열
전체 구성
다음 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 블록에 대해 다음 인자를 설정해야 해요:
TYPE: 데이터 소스 유형을 지정해요. 프로바이더 개발자가 지원되는 데이터 소스를 정의해요. 자세한 내용은 프로바이더 문서를 참조하세요. Terraform에는 다른 워크스페이스의 상태 데이터에 접근할 수 있게 해주는terraform_remote_state데이터 소스도 포함되어 있어요.LABEL: 데이터 소스에 대한 이름을 지정해요. 데이터를 참조하려면data..구문을 사용하세요. 표현식 구문과 레이블 권장 사항은 명명된 값에 대한 참조 (References to Named Values)와 리소스 이름 지정 (Resource naming)을 참조하세요.
프로바이더별 인자
데이터 소스에 대해 정의할 수 있는 인자는 프로바이더 개발자가 결정해요. 자세한 내용은 프로바이더 문서를 참조하세요.
count
count 메타-인자는 Terraform에게 동일하거나 유사한 구성을 가진 동일한 데이터 소스의 여러 인스턴스를 프로비저닝하도록 지시해요. 같은 블록에서 count와 for_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이 리소스에 대해 작업을 수행하는 방식을 관리하기 위해 다음 수명주기 규칙을 지정할 수 있어요:
precondition: 데이터 소스를 만들기 전에 Terraform이 평가하는 조건을 지정해요. 자세한 내용은 구성 검증하기 (Validate your configuration)를 참조하세요.postcondition: 데이터 소스를 만든 후에 Terraform이 평가하는 조건을 지정해요. 자세한 내용은 구성 검증하기를 참조하세요.
lifecycle 블록에 정의된 구성은 Terraform이 의존성 그래프를 구성하고 탐색하는 방식에 영향을 줘요. Terraform은 실행을 위해 임의의 표현식을 평가하기 전에 처리하므로 lifecycle 블록에서는 리터럴 값만 사용할 수 있어요.
lifecycle는 메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 lifecycle 참조를 참조하세요.
precondition
precondition 블록은 Terraform이 데이터 소스에 대해 작업을 평가하고 수행하기 전에 true를 반환해야 하는 조건을 지정해요. 조건이 false를 반환할 때 Terraform이 출력할 오류 메시지도 지정할 수 있어요.
resource {
lifecycle {
precondition {
condition =
error_message = ""
}
}
}
precondition은 lifecycle 메타-인자에서 사용할 수 있는 지시자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 lifecycle 참조를 참조하세요.
postcondition
postcondition 블록은 Terraform이 데이터 소스에 대해 작업을 수행한 후에 true를 반환해야 하는 조건을 지정해요. 조건이 false를 반환할 때 Terraform이 콘솔에 출력할 오류 메시지도 지정할 수 있어요.
data "" "" {
lifecycle {
postcondition {
condition =
error_message = ""
}
}
}
postcondition은 lifecycle 메타-인자에서 사용할 수 있는 지시자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 만드는 방식을 제어해요. 이 인자가 작동하는 방식에 대한 자세한 내용은 lifecycle 참조를 참조하세요.