正解:B
コレクションの種類
コレクション型を使用すると、別の型の複数の値を 1 つの値としてグループ化できます。コレクション内の値の型は、その要素型と呼ばれます。すべてのコレクション型には、コンストラクターへの引数として提供される要素型が必要です。
たとえば、型 list(string) は「文字列のリスト」を意味し、数値のリストである list(number) とは異なる型です。コレクションのすべての要素は、常に同じ型でなければなりません。
Terraform 言語の 3 種類のコレクション型は次のとおりです。
* list(...): ゼロから始まる連続した整数で識別される一連の値。
キーワード list は list(any) の短縮形であり、すべての要素が同じ型である限り、任意の要素型を受け入れます。これは、古い構成との互換性のためです。新しいコードの場合は、完全な形式を使用することをお勧めします。
* map(...): それぞれが文字列ラベルで識別される値のコレクション。
キーワード map は map(any) の短縮形であり、すべての要素が同じ型である限り、任意の要素型を受け入れます。これは、古い構成との互換性のためです。新しいコードの場合は、完全な形式を使用することをお勧めします。
* set(...): 二次識別子や順序を持たない一意の値のコレクション。
https://www.terraform.io/docs/configuration/types.html
構造タイプ
構造型を使用すると、複数の異なる型の複数の値を 1 つの値としてグループ化できます。構造型には、どの要素に対してどの型を許可するかを指定するために、引数としてスキーマが必要です。
Terraform 言語の 2 種類の構造型は次のとおりです。
* object(...): それぞれ独自のタイプを持つ名前付き属性のコレクション。
オブジェクト型のスキーマは { <KEY> = <TYPE>, <KEY> = <TYPE>, ... } です。これは、コンマで区切られた一連の <KEY> = <TYPE> ペアを含む中かっこのペアです。オブジェクト タイプに一致する値には、指定されたすべてのキーが含まれている必要があり、各キーの値は指定されたタイプに一致する必要があります。(追加のキーを持つ値は引き続きオブジェクト タイプと一致できますが、余分な属性はタイプ変換中に破棄されます。)
* tuple(...): ゼロから始まる連続した整数で識別される一連の要素で、各要素には独自の型があります。
タプル型のスキーマは [<TYPE>, <TYPE>, ...] です - コンマで区切られた一連の型を含む一対の角括弧です。タプル型に一致する値は、正確に同じ数の要素 (それ以上でもそれ以下でもない) を持つ必要があり、各位置の値はその位置に指定された型と一致する必要があります。
例: object({ name=string, age=number }) のオブジェクト タイプは、次のような値に一致します。
{
名前=「ジョン」
年齢 = 52
}
また、object({ id=string, cidr_block=string }) のオブジェクト タイプは、aws_vpc.example_vpc などの aws_vpc リソースへの参照によって生成されるオブジェクトと一致します。リソースには追加の属性がありますが、それらは型変換中に破棄されます。
最後に、tuple([string, number, bool]) のタプル型は、次のような値に一致します。
[「a」、15、真]
https://www.terraform.io/docs/configuration/types.html