> ## Documentation Index
> Fetch the complete documentation index at: https://cdktn.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Typescript: ResourceTerraformIterator

> CDKTN Core API Reference for ResourceTerraformIterator in Typescript.

## Initializers <a name="Initializers" id="cdktn.ResourceTerraformIterator.Initializer" />

```typescript theme={null}
import { ResourceTerraformIterator } from 'cdktn'

new ResourceTerraformIterator(element: ITerraformResource)
```

| **Name**                                                                                          | **Type**                                                                | **Description**   |
| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------- |
| <code><a href="#cdktn.ResourceTerraformIterator.Initializer.parameter.element">element</a></code> | <code><a href="#cdktn.ITerraformResource">ITerraformResource</a></code> | *No description.* |

***

### `element`<sup>Required</sup> <a name="element" id="cdktn.ResourceTerraformIterator.Initializer.parameter.element" />

* *Type:* <a href="#cdktn.ITerraformResource">ITerraformResource</a>

***

## Methods <a name="Methods" id="Methods" />

| **Name**                                                                                              | **Description**                                                                              |
| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| <code><a href="#cdktn.ResourceTerraformIterator.dynamic">dynamic</a></code>                           | Creates a dynamic expression that can be used to loop over this iterator in a dynamic block. |
| <code><a href="#cdktn.ResourceTerraformIterator.forExpressionForList">forExpressionForList</a></code> | Creates a for expression that results in a list.                                             |
| <code><a href="#cdktn.ResourceTerraformIterator.forExpressionForMap">forExpressionForMap</a></code>   | Creates a for expression that results in a map.                                              |
| <code><a href="#cdktn.ResourceTerraformIterator.getAny">getAny</a></code>                             | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getAnyMap">getAnyMap</a></code>                       | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getBoolean">getBoolean</a></code>                     | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getBooleanMap">getBooleanMap</a></code>               | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getList">getList</a></code>                           | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getMap">getMap</a></code>                             | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getNumber">getNumber</a></code>                       | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getNumberList">getNumberList</a></code>               | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getNumberMap">getNumberMap</a></code>                 | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getString">getString</a></code>                       | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.getStringMap">getStringMap</a></code>                 | *No description.*                                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.keys">keys</a></code>                                 | Creates a for expression that maps the iterators to its keys.                                |
| <code><a href="#cdktn.ResourceTerraformIterator.pluckProperty">pluckProperty</a></code>               | Creates a for expression that accesses the key on each element of the iterator.              |
| <code><a href="#cdktn.ResourceTerraformIterator.values">values</a></code>                             | Creates a for expression that maps the iterators to its value in case it is a map.           |

***

### `dynamic` <a name="dynamic" id="cdktn.ResourceTerraformIterator.dynamic" />

```typescript theme={null}
public dynamic(attributes: {[ key: string ]: any}): IResolvable
```

Creates a dynamic expression that can be used to loop over this iterator in a dynamic block.

As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.
See [https://cdktn.io/docs/concepts/iterators#using-iterators-for-list-attributes](https://cdktn.io/docs/concepts/iterators#using-iterators-for-list-attributes)

#### `attributes`<sup>Required</sup> <a name="attributes" id="cdktn.ResourceTerraformIterator.dynamic.parameter.attributes" />

* *Type:* \{\[ key: string ]: any}

***

### `forExpressionForList` <a name="forExpressionForList" id="cdktn.ResourceTerraformIterator.forExpressionForList" />

```typescript theme={null}
public forExpressionForList(expression: string | IResolvable): IResolvable
```

Creates a for expression that results in a list.

This method allows you to create every possible for expression, but requires more knowledge about
Terraform's for expression syntax.
For the most common use cases you can use keys(), values(), and pluckProperty() instead.

You may write any valid Terraform for each expression, e.g.
`TerraformIterator.fromList(myIteratorSourceVar).forExpressionForList("val.foo if val.bar == true")`
will result in `[ for key, val in var.myIteratorSource: val.foo if val.bar == true ]`.

As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

#### `expression`<sup>Required</sup> <a name="expression" id="cdktn.ResourceTerraformIterator.forExpressionForList.parameter.expression" />

* *Type:* string | <a href="#cdktn.IResolvable">IResolvable</a>

The expression to use in the for mapping.

***

### `forExpressionForMap` <a name="forExpressionForMap" id="cdktn.ResourceTerraformIterator.forExpressionForMap" />

```typescript theme={null}
public forExpressionForMap(keyExpression: string | IResolvable, valueExpression: string | IResolvable): IResolvable
```

Creates a for expression that results in a map.

This method allows you to create every possible for expression, but requires more knowledge about
Terraforms for expression syntax.
For the most common use cases you can use keys(), values(), and pluckProperty instead.

You may write any valid Terraform for each expression, e.g.
`TerraformIterator.fromMap(myIteratorSourceVar).forExpressionForMap("key", "val.foo if val.bar == true")`
will result in `\{ for key, val in var.myIteratorSource: key => val.foo if val.bar == true }`.

As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

#### `keyExpression`<sup>Required</sup> <a name="keyExpression" id="cdktn.ResourceTerraformIterator.forExpressionForMap.parameter.keyExpression" />

* *Type:* string | <a href="#cdktn.IResolvable">IResolvable</a>

The expression to use as key in the for mapping.

***

#### `valueExpression`<sup>Required</sup> <a name="valueExpression" id="cdktn.ResourceTerraformIterator.forExpressionForMap.parameter.valueExpression" />

* *Type:* string | <a href="#cdktn.IResolvable">IResolvable</a>

The expression to use as value in the for mapping.

***

### `getAny` <a name="getAny" id="cdktn.ResourceTerraformIterator.getAny" />

```typescript theme={null}
public getAny(attribute: string): IResolvable
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getAny.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getAnyMap` <a name="getAnyMap" id="cdktn.ResourceTerraformIterator.getAnyMap" />

```typescript theme={null}
public getAnyMap(attribute: string): {[ key: string ]: any}
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getAnyMap.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getBoolean` <a name="getBoolean" id="cdktn.ResourceTerraformIterator.getBoolean" />

```typescript theme={null}
public getBoolean(attribute: string): IResolvable
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getBoolean.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getBooleanMap` <a name="getBooleanMap" id="cdktn.ResourceTerraformIterator.getBooleanMap" />

```typescript theme={null}
public getBooleanMap(attribute: string): {[ key: string ]: boolean}
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getBooleanMap.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getList` <a name="getList" id="cdktn.ResourceTerraformIterator.getList" />

```typescript theme={null}
public getList(attribute: string): string[]
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getList.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getMap` <a name="getMap" id="cdktn.ResourceTerraformIterator.getMap" />

```typescript theme={null}
public getMap(attribute: string): {[ key: string ]: any}
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getMap.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getNumber` <a name="getNumber" id="cdktn.ResourceTerraformIterator.getNumber" />

```typescript theme={null}
public getNumber(attribute: string): number
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getNumber.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getNumberList` <a name="getNumberList" id="cdktn.ResourceTerraformIterator.getNumberList" />

```typescript theme={null}
public getNumberList(attribute: string): number[]
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getNumberList.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getNumberMap` <a name="getNumberMap" id="cdktn.ResourceTerraformIterator.getNumberMap" />

```typescript theme={null}
public getNumberMap(attribute: string): {[ key: string ]: number}
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getNumberMap.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getString` <a name="getString" id="cdktn.ResourceTerraformIterator.getString" />

```typescript theme={null}
public getString(attribute: string): string
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getString.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `getStringMap` <a name="getStringMap" id="cdktn.ResourceTerraformIterator.getStringMap" />

```typescript theme={null}
public getStringMap(attribute: string): {[ key: string ]: string}
```

#### `attribute`<sup>Required</sup> <a name="attribute" id="cdktn.ResourceTerraformIterator.getStringMap.parameter.attribute" />

* *Type:* string

name of the property to retrieve.

***

### `keys` <a name="keys" id="cdktn.ResourceTerraformIterator.keys" />

```typescript theme={null}
public keys(): IResolvable
```

Creates a for expression that maps the iterators to its keys.

For lists these would be the indices, for maps the keys.
As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

### `pluckProperty` <a name="pluckProperty" id="cdktn.ResourceTerraformIterator.pluckProperty" />

```typescript theme={null}
public pluckProperty(property: string): IResolvable
```

Creates a for expression that accesses the key on each element of the iterator.

As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

#### `property`<sup>Required</sup> <a name="property" id="cdktn.ResourceTerraformIterator.pluckProperty.parameter.property" />

* *Type:* string

The property of the iterators values to map to.

***

### `values` <a name="values" id="cdktn.ResourceTerraformIterator.values" />

```typescript theme={null}
public values(): IResolvable
```

Creates a for expression that maps the iterators to its value in case it is a map.

For lists these would stay the same.
As this returns an IResolvable you might need to wrap the output in
a Token, e.g. `Token.asString`.

## Static Functions <a name="Static Functions" id="Static Functions" />

| **Name**                                                                                    | **Description**                                                                               |
| ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| <code><a href="#cdktn.ResourceTerraformIterator.fromComplexList">fromComplexList</a></code> | Creates a new iterator from a complex list.                                                   |
| <code><a href="#cdktn.ResourceTerraformIterator.fromDataSources">fromDataSources</a></code> | Creates a new iterator from a data source that has been created with the `for_each` argument. |
| <code><a href="#cdktn.ResourceTerraformIterator.fromList">fromList</a></code>               | Creates a new iterator from a list.                                                           |
| <code><a href="#cdktn.ResourceTerraformIterator.fromMap">fromMap</a></code>                 | Creates a new iterator from a map.                                                            |
| <code><a href="#cdktn.ResourceTerraformIterator.fromResources">fromResources</a></code>     | Creates a new iterator from a resource that has been created with the `for_each` argument.    |

***

### `fromComplexList` <a name="fromComplexList" id="cdktn.ResourceTerraformIterator.fromComplexList" />

```typescript theme={null}
import { ResourceTerraformIterator } from 'cdktn'

ResourceTerraformIterator.fromComplexList(list: IResolvable | ComplexList | StringMapList | NumberMapList | BooleanMapList | AnyMapList, mapKeyAttributeName: string)
```

Creates a new iterator from a complex list.

One example for this would be a list of maps.
The list will be converted into a map with the mapKeyAttributeName as the key.

*Example*

```typescript theme={null}
const cert = new AcmCertificate(this, "cert", {
   domainName: "example.com",
   validationMethod: "DNS",
 });

const dvoIterator = TerraformIterator.fromComplexList(
  cert.domainValidationOptions,
  "domain_name"
);

new Route53Record(this, "record", {
  allowOverwrite: true,
  name: dvoIterator.getString("name"),
  records: [dvoIterator.getString("record")],
  ttl: 60,
  type: dvoIterator.getString("type"),
  zoneId: Token.asString(dataAwsRoute53ZoneExample.zoneId),
  forEach: dvoIterator,
});
```

#### `list`<sup>Required</sup> <a name="list" id="cdktn.ResourceTerraformIterator.fromComplexList.parameter.list" />

* *Type:* <a href="#cdktn.IResolvable">IResolvable</a> | <a href="#cdktn.ComplexList">ComplexList</a> | <a href="#cdktn.StringMapList">StringMapList</a> | <a href="#cdktn.NumberMapList">NumberMapList</a> | <a href="#cdktn.BooleanMapList">BooleanMapList</a> | <a href="#cdktn.AnyMapList">AnyMapList</a>

the list to iterate over.

***

#### `mapKeyAttributeName`<sup>Required</sup> <a name="mapKeyAttributeName" id="cdktn.ResourceTerraformIterator.fromComplexList.parameter.mapKeyAttributeName" />

* *Type:* string

the name of the attribute that should be used as the key in the map.

Visit [https://cdktn.io/docs/concepts/iterators#using-iterators-on-complex-lists](https://cdktn.io/docs/concepts/iterators#using-iterators-on-complex-lists) for more information.

***

### `fromDataSources` <a name="fromDataSources" id="cdktn.ResourceTerraformIterator.fromDataSources" />

```typescript theme={null}
import { ResourceTerraformIterator } from 'cdktn'

ResourceTerraformIterator.fromDataSources(resource: ITerraformResource)
```

Creates a new iterator from a data source that has been created with the `for_each` argument.

#### `resource`<sup>Required</sup> <a name="resource" id="cdktn.ResourceTerraformIterator.fromDataSources.parameter.resource" />

* *Type:* <a href="#cdktn.ITerraformResource">ITerraformResource</a>

***

### `fromList` <a name="fromList" id="cdktn.ResourceTerraformIterator.fromList" />

```typescript theme={null}
import { ResourceTerraformIterator } from 'cdktn'

ResourceTerraformIterator.fromList(list: string[] | IResolvable | number[] | (boolean | IResolvable)[])
```

Creates a new iterator from a list.

#### `list`<sup>Required</sup> <a name="list" id="cdktn.ResourceTerraformIterator.fromList.parameter.list" />

* *Type:* string\[] | <a href="#cdktn.IResolvable">IResolvable</a> | number\[] | boolean | <a href="#cdktn.IResolvable">IResolvable</a>\[]

***

### `fromMap` <a name="fromMap" id="cdktn.ResourceTerraformIterator.fromMap" />

```typescript theme={null}
import { ResourceTerraformIterator } from 'cdktn'

ResourceTerraformIterator.fromMap(map: ComplexMap | {[ key: string ]: any} | {[ key: string ]: string} | {[ key: string ]: number} | {[ key: string ]: boolean})
```

Creates a new iterator from a map.

#### `map`<sup>Required</sup> <a name="map" id="cdktn.ResourceTerraformIterator.fromMap.parameter.map" />

* *Type:* <a href="#cdktn.ComplexMap">ComplexMap</a> | \{\[ key: string ]: any} | \{\[ key: string ]: string} | \{\[ key: string ]: number} | \{\[ key: string ]: boolean}

***

### `fromResources` <a name="fromResources" id="cdktn.ResourceTerraformIterator.fromResources" />

```typescript theme={null}
import { ResourceTerraformIterator } from 'cdktn'

ResourceTerraformIterator.fromResources(resource: ITerraformResource)
```

Creates a new iterator from a resource that has been created with the `for_each` argument.

#### `resource`<sup>Required</sup> <a name="resource" id="cdktn.ResourceTerraformIterator.fromResources.parameter.resource" />

* *Type:* <a href="#cdktn.ITerraformResource">ITerraformResource</a>

***

## Properties <a name="Properties" id="Properties" />

| **Name**                                                                         | **Type**         | **Description**                                                           |
| -------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------- |
| <code><a href="#cdktn.ResourceTerraformIterator.property.key">key</a></code>     | <code>any</code> | Returns the current entry in the list or set that is being iterated over. |
| <code><a href="#cdktn.ResourceTerraformIterator.property.value">value</a></code> | <code>any</code> | Returns the value of the current item iterated over.                      |

***

### `key`<sup>Required</sup> <a name="key" id="cdktn.ResourceTerraformIterator.property.key" />

```typescript theme={null}
public readonly key: any;
```

* *Type:* any

Returns the current entry in the list or set that is being iterated over.

For lists this is the same as `iterator.value`. If you need the index,
use count via `TerraformCount`:
[https://cdktn.io/docs/concepts/iterators#using-count](https://cdktn.io/docs/concepts/iterators#using-count)

***

### `value`<sup>Required</sup> <a name="value" id="cdktn.ResourceTerraformIterator.property.value" />

```typescript theme={null}
public readonly value: any;
```

* *Type:* any

Returns the value of the current item iterated over.

***
