命名規則
Last updated
Last updated
リソース名、データソース名、変数名、出力など、すべての場所で -
(ダッシュ)の代わりに _
(アンダースコア)を使用してください。
UTF-8がサポートされていても、小文字とアルファベットを使用することを推奨します。
リソースとデータソースの引数
リソース名にリソースタイプを(部分的にも、完全にも)繰り返さないでください:
より説明的で一般的な名前が利用できない場合、またはリソースモジュールがこのタイプのリソースを1つだけ作成する場合(例えば、では aws_nat_gateway
タイプのリソースは1つだけで、aws_route_table
タイプのリソースは複数あるため、aws_nat_gateway
は this
という名前にし、aws_route_table
には private
、public
、database
のようなより説明的な名前をつけるべき)、リソース名は this
にすべきです。
名前には常に単数名詞を使用してください。
引数の値の中や、人が目にする場所(例:RDSインスタンスのDNS名)では、-
(ハイフン)を使用してください。
リソースまたはデータソースのブロック内で、count
/for_each
引数を最初の引数として一番上に記述し、その後に改行を入れて区切ってください。
リソースでサポートされている場合はtags
引数を実質的な最後の引数として記述し、必要に応じてその後にdepends_on
とlifecycle
を続けてください。これらはすべて空行1行で区切ってください。
count
/for_each
引数で条件を使用する場合は、length
やその他の式を使用するのではなく、ブール値を使用することを推奨します。
resource
のコード例count
とfor_each
の使用方法tags
の配置count
内の条件リソースモジュールで車輪の再発明をしないでください:作業しているリソースの "Argument Reference" セクションで定義されている通りに、変数のname
、description
、default
値を使用してください。
変数のバリデーションサポートはかなり限定的です(例:他の変数へのアクセスや参照ができません)。多くの場合この機能は役に立たないので、それを考慮して計画してください。
型がlist(...)
またはmap(...)
の場合は、変数名に複数形を使用してください。
変数ブロック内のキーは次の順序で並べてください:description、type、default、validation
明白だと思える場合でも、将来必要になるので、すべての変数に必ずdescriptionを含めてください。
各キーに厳密な制約が必要な場合を除き、object()
のような特定の型よりも、シンプルな型(number
、string
、list(...)
、map(...)
、any
)の使用を推奨します。
マップのすべての要素が同じ型(例:string
)を持つ場合、または変換可能な場合(例:number
型はstring
に変換可能)は、map(map(string))
のような特定の型を使用してください。
特定の深さから型バリデーションを無効にする場合や、複数の型をサポートする必要がある場合は、any
型を使用してください。
値{}
は時にマップであり、時にオブジェクトです。オブジェクトを作成する方法がないため、マップを作成するにはtomap(...)
を使用してください。
出力はスコープ外でも一貫性があり理解しやすいものにしてください(モジュールを使用するユーザーにとって、返される値の型と属性が明らかであるべきです)。
出力名は、含まれるプロパティを説明するものであり、通常望むよりも自由度は低くすべきです。
出力名の良い構造は{name}_{type}_{attribute}
のようになります。ここで:
{name}
はリソースまたはデータソース名です
data "aws_subnet" "private"
の{name}
はprivate
です
resource "aws_vpc_endpoint_policy" "test"
の{name}
はtest
です
{type}
はプロバイダーのプレフィックスを除いたリソースまたはデータソースの型です
data "aws_subnet" "private"
の{type}
はsubnet
です
resource "aws_vpc_endpoint_policy" "test"
の{type}
はvpc_endpoint_policy
です
{attribute}
は出力によって返される属性です
明白だと思える場合でも、すべての出力に必ずdescription
を含めてください。
すべてのモジュールのすべての場所でその出力の使用を完全に制御できない限り、sensitive
引数の設定は避けてください。
(0.13以前のバージョンでの従来のアプローチである)element(concat(...))
よりも(Terraform 0.13以降で利用可能な)try()
を推奨します。
output
のコード例セキュリティグループのIDを最大1つ返す場合:
同じタイプの複数のリソースがある場合、出力名ではthis
を省略すべきです:
を参照してください。
出力が補間関数と複数のリソースを使用した値を返す場合、{name}
と{type}
はできるだけ一般的にすべきです(プレフィックスとしてのthis
は省略すべき)。を参照してください。
返される値がリストの場合は、複数形の名前にすべきです。を参照してください。