yamldecode 함수
yamldecode 함수 (yamldecode Function)
yamldecode 함수는 문자열을 YAML의 부분 집합으로 파싱해 그 값의 표현을 생성해요. YAML 1.2의 일부만 지원하며, YAML 값을 Terraform 언어 값으로 매핑해요.
출처: 문서
본문
yamldecode 함수는 문자열을 YAML의 부분 집합으로 파싱해 그 값의 표현을 생성해요.
이 함수는 아래에 설명된 대로 YAML 1.2의 부분 집합을 지원해요.
이 함수는 YAML 값을 Terraform 언어 값으로 다음과 같이 매핑해요.
| YAML 타입 | Terraform 타입 |
|---|---|
!!str |
string |
!!float |
number |
!!int |
number |
!!bool |
bool |
!!map |
object(...) (속성 타입은 이 표에 따라 결정) |
!!seq |
tuple(...) (요소 타입은 이 표에 따라 결정) |
!!null |
Terraform 언어의 null 값 |
!!timestamp |
RFC 3339 형식의 string |
!!binary |
base64 인코딩 표현을 담은 string |
Terraform 언어의 자동 타입 변환 규칙 덕분에, 주어진 값에 대해 정확히 어떤 타입이 생성되는지 크게 걱정하지 않고 직관적으로 결과를 사용할 수 있어요.
다만 위 매핑은 모호하다는 점을 알아두세요. 서로 다른 여러 소스 타입이 같은 대상 타입으로 매핑되므로, yamldecode 후 yamlencode를 거치는 왕복(round-trip)은 동일한 결과를 만들 수 없어요.
YAML은 복잡한 언어이고 Terraform 언어의 타입 시스템으로 표현할 수 없는 많은 가능성을 지원해요. 그래서 이 YAML 디코더는 다음과 같은 제약을 포함해 YAML 1.2의 부분 집합만 지원해요.
- 이전 앵커에 대한 별칭(alias)은 지원되지만, 순환 데이터 구조(컬렉션 안에 그 컬렉션에 대한 참조가 나타나는 경우)는 지원되지 않아요.
yamldecode가 이런 구조를 감지하면 오류를 반환해요. - 위 표에 표시된 타입 태그(또는 그 태그들과 동등한 대체 표현)만 지원돼요. 다른 태그는 오류를 발생해요.
- YAML 문서는 하나만 허용돼요. 주어진 문자열에 여러 문서가 있으면 이 함수는 오류를 반환해요.
예시 (Examples)
> yamldecode("hello: world")
{
"hello" = "world"
}
> yamldecode("true")
true
> yamldecode("{a: &foo [1, 2, 3], b: *foo}")
{
"a" = [
1,
2,
3,
]
"b" = [
1,
2,
3,
]
}
> yamldecode("{a: &foo [1, *foo, 3]}")
앵커와 별칭이 지원되는 예시를 통해, b가 a의 별칭 *foo를 참조해 같은 [1, 2, 3] 값을 얻게 되는 것을 확인할 수 있어요.
더 알아보기 (Learn more)
yamlencode함수 — YAML 인코딩jsondecode함수 — JSON 디코딩- 인코딩 함수 — 다른 인코딩 함수