すべてのプロダクト
Search
ドキュメントセンター

Terraform:リソース

最終更新日:Oct 16, 2025

リソースとは

Terraform において、リソースとは、ECS インスタンスや OSS バケットなどのインフラストラクチャ要素であり、Terraform コードを使用して構成できます。実際のインフラストラクチャには、さまざまなリソースとリソースタイプが含まれています。Terraform は、各 Alibaba Cloud サービスの API を使用して、ECS インスタンス、ECS インスタンスデプロイメントテンプレート、セキュリティグループ、VPC ネットワーク、ファイアウォールルール、VPN、ルートテーブル、データベース、Server Load Balancer などのリソースをデプロイします。

リソース宣言の構文

.tf ファイルでリソースを定義します。同様のタイプのリソースを 1 つのフォルダに配置し、main.tf ファイルで定義することをお勧めします。

この例では、main.tf はルート構成ファイルです。

  • resource

    リソースブロックは、単一のインフラストラクチャオブジェクトを宣言します。

  • resource_type

    resource_type パラメーターは、作成するリソースのタイプを識別します。このリソースタイプは、Terraform プロバイダーブロックで宣言された provider に依存します。プロバイダーは、一連のリソースタイプを提供するプラグインです。

  • resource_name

    resource_name パラメーターは、現在の構成フォルダ内のリソースの ID です。これは、実際のインフラストラクチャオブジェクトの名前ではありません。resource_name は、現在のフォルダ内の同じタイプのリソースすべての中で一意である必要があります。

  • リソースパラメーター

    リソースパラメーターは、式を使用してリソースのプロパティを宣言します。一部のパラメーターはリソースの作成時に必須ですが、他のパラメーターはオプションです。プロパティを使用して、リソースの高度な特徴を定義できます。

同じ Terraform 構成ファイルに、同じタイプまたは異なるタイプの複数のリソースを含めることができます。これらのリソースは、複数のプロバイダーにまたがることもできます。

この例では、最初のリソースブロックは VPC ネットワークを宣言し、2 番目のブロックは vSwitch を宣言します。両方のリソースは同じ main.tf ファイルにあります。この例では、alicloud_vpc タイプの main-vpc という名前の VPC リソースと、alicloud_vswitch タイプの main-vswitch という名前の vSwitch リソースを示しています。

alicloud_vpc ブロックのすべてのパラメーターはオプションです。cidr_block パラメーターは、デフォルト値があるためオプションです。構成ファイルでこのパラメーターを明示的に定義しない場合、プロバイダーまたは VPC サービスバックエンドがデフォルト値を生成します。

alicloud_vswitch ブロックでは、vpc_id、cidr_block、および zone_id は必須パラメーターです。その他のパラメーターはオプションです。

リソースパラメーターはリソースタイプに固有であることに注意してください。これは、パラメーターがリソースタイプによって大きく異なることを意味します。たとえば、alicloud_vpc には vpc_name や cidr_block などのパラメーターが含まれますが、alicloud_vswitch には vswitch_name、cidr_block、zone_id、vpc_id などのパラメーターが含まれます。

属性パラメーターのリファレンス

別のリソースブロックからリソースプロパティにアクセスするには、次のフォーマットを使用します: <resource_type>.<resource_name>.<attribute>

上記の例では、vSwitch の作成時に、それが属する VPC の ID が必要です。VPC ID は、alicloud_vpc ブロックの計算資源プロパティです。これは、VPC の作成時にサーバーが VPC ID を生成することを意味します。alicloud_vswitch リソースブロックは、作成された alicloud_vpc ブロックの ID を使用します。リファレンスフォーマットは alicloud_vpc.main_vpc.id です。

このメソッドは、関連するリソースが同じルート構成フォルダ内のファイルで定義されている場合にのみ使用できることに注意してください。

リソース定義に関する考慮事項

リソースブロックを定義する際には、次の重要な要素を考慮してください。

  1. リソース名は一意である必要があります

    宣言されたリソースは、現在の構成フォルダ内のタイプと名前によって識別されます。したがって、リソース名は構成フォルダ内で一意である必要があります。

  2. リソースタイプはカスタマイズできません

    リソースタイプは、プロバイダーに関連付けられているキーワードであり、カスタマイズできません。OSS バケットは Alibaba Cloud プロバイダーに関連付けられており、キーワード alicloud_oss_bucket によって定義されます。OSS バケットのその他の定義は、terraform plan または terraform apply コマンドを実行するとエラーになります。

  3. すべての構成パラメーターは、中括弧 ({}) の間にあるリソースブロックの本文に含める必要があります

    インフラストラクチャ要素とそれに関連するプロパティは、リソースブロックで定義されます。

    Terraform コマンドを実行すると、次のエラーメッセージが表示されます:image

  4. すべての必須パラメーターを設定する必要があります

    構成ですべての必須パラメーターを定義しないと、terraform plan および terraform apply コマンドは失敗します。

    Terraform コマンドを実行すると、次のエラーメッセージが表示されます:image