All Products
Search
Document Center

Terraform:Resource

Last Updated:Jun 05, 2026

Apa itu resource

Resource adalah elemen infrastruktur yang Anda konfigurasikan menggunakan kode Terraform—seperti instans Elastic Compute Service (ECS), bucket Object Storage Service (OSS), jaringan Virtual Private Cloud (VPC), atau objek cloud lainnya. Terraform memanggil API setiap layanan Alibaba Cloud untuk membuat dan mengelola resource tersebut, termasuk instans ECS, template penyebaran instans ECS, grup keamanan, jaringan VPC, aturan firewall, VPN, tabel rute, database, dan Server Load Balancer (SLB).

Sintaksis deklarasi resource

Definisikan resource dalam file .tf. Tempatkan resource dengan tipe serupa dalam folder yang sama dan deklarasikan di file main.tf.

Pada contoh ini, main.tf adalah file konfigurasi root:

  • resource

    Kata kunci resource mendeklarasikan satu objek infrastruktur.

  • resource_type

    resource_type mengidentifikasi jenis resource yang akan dibuat. Jenis yang tersedia berasal dari provider yang dideklarasikan dalam blok provider Terraform. Provider adalah plugin yang menyediakan sekumpulan jenis resource.

  • resource_name

    resource_name adalah identifikasi logis untuk resource dalam folder konfigurasi saat ini—bukan nama objek infrastruktur sebenarnya yang dibuat di cloud. resource_name harus unik di antara semua resource dengan tipe yang sama dalam folder tersebut.

  • Parameter resource

    Parameter resource menggunakan ekspresi untuk mendeklarasikan properti suatu resource. Beberapa parameter wajib diisi saat pembuatan; yang lain bersifat opsional dan memungkinkan Anda mengonfigurasi fitur lanjutan.

Satu file konfigurasi Terraform dapat berisi beberapa resource dengan tipe yang sama maupun berbeda, serta mencakup beberapa provider sekaligus.

Pada contoh ini, blok resource pertama mendeklarasikan jaringan VPC dan yang kedua mendeklarasikan vSwitch, keduanya dalam file main.tf yang sama. Resource VPC bertipe alicloud_vpc dan diberi nama main-vpc; resource vSwitch bertipe alicloud_vswitch dan diberi nama main-vswitch.

Semua parameter dalam blok alicloud_vpc bersifat opsional. Misalnya, cidr_block bersifat opsional karena memiliki nilai default—jika Anda menghilangkannya, provider atau backend layanan VPC akan menghasilkan nilai tersebut secara otomatis.

Untuk alicloud_vswitch, parameter vpc_id, cidr_block, dan zone_id wajib diisi; semua parameter lainnya bersifat opsional.

Parameter resource bersifat spesifik untuk masing-masing tipe dan sangat bervariasi antar tipe. Sebagai contoh, alicloud_vpc menerima vpc_name dan cidr_block, sedangkan alicloud_vswitch menerima vswitch_name, cidr_block, zone_id, dan vpc_id.

Referensi parameter atribut

Untuk mereferensikan properti resource dari blok resource lain, gunakan format: <resource_type>.<resource_name>.<attribute>.

Pada contoh di atas, alicloud_vswitch memerlukan ID VPC saat pembuatan. Karena ID VPC dihasilkan oleh server ketika VPC dibuat, alicloud_vswitch mereferensikannya dari blok alicloud_vpc menggunakan alicloud_vpc.main_vpc.id.

Referensi lintas-resource hanya berfungsi jika resource terkait didefinisikan dalam file yang berada dalam folder konfigurasi root yang sama.

Pertimbangan dalam definisi resource

Perhatikan aturan berikut saat mendefinisikan blok resource:

  1. Nama resource harus unik

    Setiap resource diidentifikasi berdasarkan tipe dan namanya dalam folder konfigurasi saat ini. Nama resource harus unik di antara semua resource dengan tipe yang sama dalam folder tersebut.

  2. Tipe resource tidak dapat dikustomisasi

    Tipe resource adalah kata kunci tetap yang terikat pada provider. Sebagai contoh, bucket OSS harus menggunakan kata kunci alicloud_oss_bucket. Penggunaan identifikasi lain menyebabkan perintah terraform plan dan terraform apply gagal.

  3. Semua parameter konfigurasi harus dideklarasikan di dalam badan blok resource

    Semua properti infrastruktur untuk suatu resource harus dideklarasikan di dalam blok resource, di antara tanda kurung kurawal {}.

    Ketika Anda menjalankan perintah Terraform, muncul error seperti berikut:

    Error: Argument or block definition required
      on main.tf line 4:
       4: storage_class
    An argument or block definition is required here.
  4. Semua parameter yang diperlukan harus diisi

    Menghilangkan parameter yang diperlukan menyebabkan perintah terraform plan dan terraform apply gagal.

    Ketika Anda menjalankan perintah Terraform, muncul error seperti berikut:

    Error: Missing required argument
      on main.tf line 1, in resource "alicloud_vswitch" "main_vswitch":
       1: resource "alicloud_vswitch" "main_vswitch" {
    The argument "vpc_id" is required, but no definition was found.