命名規則
一般的な規則
リソース名、データソース名、変数名、出力など、すべての場所で
-(ダッシュ)の代わりに_(アンダースコア)を使用してください。UTF-8がサポートされていても、小文字とアルファベットを使用することを推奨します。
リソースとデータソースの引数
リソース名にリソースタイプを(部分的にも、完全にも)繰り返さないでください:
`resource "aws_route_table" "public" {}``resource "aws_route_table" "public_route_table" {}``resource "aws_route_table" "public_aws_route_table" {}`より説明的で一般的な名前が利用できない場合、またはリソースモジュールがこのタイプのリソースを1つだけ作成する場合(例えば、AWS VPCモジュールでは
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のコード例
resourceのコード例countとfor_eachの使用方法
countとfor_eachの使用方法tags の配置
tags の配置count内の条件
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}は出力によって返される属性です例を参照してください。
出力が補間関数と複数のリソースを使用した値を返す場合、
{name}と{type}はできるだけ一般的にすべきです(プレフィックスとしてのthisは省略すべき)。例を参照してください。返される値がリストの場合は、複数形の名前にすべきです。例を参照してください。
明白だと思える場合でも、すべての出力に必ず
descriptionを含めてください。すべてのモジュールのすべての場所でその出力の使用を完全に制御できない限り、
sensitive引数の設定は避けてください。(0.13以前のバージョンでの従来のアプローチである)
element(concat(...))よりも(Terraform 0.13以降で利用可能な)try()を推奨します。
outputのコード例
outputのコード例セキュリティグループのIDを最大1つ返す場合:
同じタイプの複数のリソースがある場合、出力名ではthisを省略すべきです:
返される値がリストの場合は、複数形の名前を使用してください
Last updated