--- page_title: yamldecode - Functions - Configuration Language description: |- The yamldecode function decodes a YAML string into a representation of its value. --- # `yamldecode` Function `yamldecode` parses a string as a subset of YAML, and produces a representation of its value. This function supports a subset of [YAML 1.2](https://yaml.org/spec/1.2/spec.html), as described below. This function maps YAML values to [Terraform language values](/language/expressions/types) in the following way: | YAML type | Terraform type | | ------------- | ------------------------------------------------------------------ | | `!!str` | `string` | | `!!float` | `number` | | `!!int` | `number` | | `!!bool` | `bool` | | `!!map` | `object(...)` with attribute types determined per this table | | `!!seq` | `tuple(...)` with element types determined per this table | | `!!null` | The Terraform language `null` value | | `!!timestamp` | `string` in [RFC 3339](https://tools.ietf.org/html/rfc3339) format | | `!!binary` | `string` containing base64-encoded representation | The Terraform language automatic type conversion rules mean that you don't usually need to worry about exactly what type is produced for a given value, and can just use the result in an intuitive way. Note though that the mapping above is ambiguous -- several different source types map to the same target type -- and so round-tripping through `yamldecode` and then `yamlencode` cannot produce an identical result. YAML is a complex language and it supports a number of possibilities that the Terraform language's type system cannot represent. Therefore this YAML decoder supports only a subset of YAML 1.2, with restrictions including the following: - Although aliases to earlier anchors are supported, cyclic data structures (where a reference to a collection appears inside that collection) are not. If `yamldecode` detects such a structure then it will return an error. - Only the type tags shown in the above table (or equivalent alternative representations of those same tags) are supported. Any other tags will result in an error. - Only one YAML document is permitted. If multiple documents are present in the given string then this function will return an error. ## 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]}") Error: Error in function call Call to function "yamldecode" failed: cannot refer to anchor "foo" from inside its own definition. > yamldecode("{a: !not-supported foo}") Error: Error in function call Call to function "yamldecode" failed: unsupported tag "!not-supported". ``` ## Related Functions - [`jsondecode`](/language/functions/jsondecode) is a similar operation using JSON instead of YAML. - [`yamlencode`](/language/functions/yamlencode) performs the opposite operation, _encoding_ a value as YAML.