All Products
Search
Document Center

Auto Scaling:Buat sumber daya Auto Scaling menggunakan Terraform

Last Updated:Jun 25, 2026

Topik ini menjelaskan cara menggunakan Terraform untuk membuat sumber daya Auto Scaling pertama Anda, seperti grup penskalaan, konfigurasi penskalaan, dan aturan penskalaan.

Catatan

Anda dapat menjalankan kode sampel pada topik ini dengan sekali klik. Run Sample Code

Prasyarat

  • Akun Alibaba Cloud memiliki izin penuh atas semua sumber dayanya, sehingga menimbulkan risiko keamanan signifikan jika kredensial akun tersebut bocor. Kami menyarankan agar Anda menggunakan pengguna RAM dan membuat AccessKey untuk pengguna tersebut. Untuk informasi selengkapnya, lihat Create a RAM user dan Create an AccessKey.

  • Otorisasi RAM membantu Anda mengelola izin akses terhadap sumber daya cloud Anda. Fitur ini mendukung kolaborasi multi-pengguna dan memungkinkan Anda memberikan kepada pengguna hanya izin minimum yang diperlukan guna mencegah kerentanan keamanan akibat hak istimewa berlebihan. Untuk informasi selengkapnya, lihat Manage RAM user permissions.

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:CreateSecurityGroup",
                    "ecs:ModifySecurityGroupPolicy",
                    "ecs:DescribeSecurityGroups",
                    "ecs:ListTagResources",
                    "ecs:DeleteSecurityGroup",
                    "ecs:DescribeSecurityGroupAttribute",
                    "ecs:AuthorizeSecurityGroup",
                    "ecs:RevokeSecurityGroup"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "vpc:DescribeVpcAttribute",
                    "vpc:DescribeRouteTableList",
                    "vpc:DescribeVSwitchAttributes",
                    "vpc:DeleteVpc",
                    "vpc:DeleteVSwitch",
                    "vpc:CreateVpc",
                    "vpc:CreateVSwitch"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ess:CreateScalingGroup",
                    "ess:DescribeScalingGroups",
                    "ess:ListTagResources",
                    "ess:DeleteScalingGroup",
                    "ess:ModifyScalingGroup",
                    "ess:CreateScalingConfiguration",
                    "ess:DescribeScalingConfigurations",
                    "ess:ModifyScalingConfiguration",
                    "ess:CreateScalingRule",
                    "ess:DescribeScalingRules",
                    "ess:DeleteScalingRule"
                ],
                "Resource": "*"
            }
        ]
    }
  • Siapkan lingkungan runtime Terraform. Anda dapat menggunakan salah satu metode berikut:

    • Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan runtime online untuk Terraform. Anda dapat menggunakan dan bereksperimen dengan Terraform secara online setelah login, tanpa perlu menginstalnya. Metode gratis ini ideal untuk mencoba dan men-debug Terraform secara cepat.

    • Use Terraform to quickly create resources: Terraform telah dipra-instal di Alibaba Cloud Cloud Shell dan dikonfigurasi dengan kredensial identitas Anda. Anda dapat langsung menjalankan perintah Terraform di Cloud Shell. Metode ini menawarkan akses cepat, nyaman, dan berbiaya rendah ke Terraform.

    • Install and configure Terraform locally: Metode ini cocok untuk skenario dengan konektivitas jaringan yang buruk atau ketika Anda memerlukan lingkungan pengembangan kustom.

Sumber daya yang digunakan

Buat sumber daya Auto Scaling

Pada contoh ini, Anda akan membuat sumber daya Auto Scaling, termasuk grup penskalaan, konfigurasi penskalaan, dan aturan penskalaan.

  1. Buat direktori kerja, buat file konfigurasi bernama main.tf, lalu salin kode berikut ke dalam main.tf.

    variable "region" {
      default = "cn-heyuan"
    }
    variable "instance_type" {
      default = "ecs.hfc7.xlarge"
    }
    variable "image_id" {
      default = "aliyun_2_1903_x64_20G_alibase_20210120.vhd"
    }
    variable "zone_id" {
      default = "cn-heyuan-b"
    }
    provider "alicloud" {
      region = var.region
    }
    # Create a VPC.
    resource "alicloud_vpc" "vpc" {
      vpc_name   = "tf-test-vpc-wjt"
      cidr_block = "172.16.0.0/12" # Specify the private CIDR block for the VPC.
    }
    # Create a vSwitch.
    resource "alicloud_vswitch" "vsw" {
      vpc_id       = alicloud_vpc.vpc.id
      cidr_block   = "172.16.0.0/21" # Specify the private CIDR block for the vSwitch.
      zone_id      = var.zone_id     # Select the zone for the vSwitch.
      vswitch_name = "tf-test-vswitch-wjt"
    }
    # Create a security group.
    resource "alicloud_security_group" "security" {
      name        = "tf_test_security"
      description = "New security group"
      vpc_id      = alicloud_vpc.vpc.id
    }
    # Add a security group rule that allows traffic from all IP addresses.
    resource "alicloud_security_group_rule" "allow_all_tcp" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "1/65535"
      priority          = 1
      security_group_id = alicloud_security_group.security.id
      cidr_ip           = "0.0.0.0/0"
    }
    # This example creates a scaling group with a maximum of 100 instances.
    resource "alicloud_ess_scaling_group" "group" {
      scaling_group_name = "tf_test_scalinggroup"
      min_size           = 0
      max_size           = 100
      vswitch_ids        = [alicloud_vswitch.vsw.id]
    }
    # This example creates a scaling configuration for ECS instances.
    resource "alicloud_ess_scaling_configuration" "configuration" {
      scaling_group_id           = alicloud_ess_scaling_group.group.id
      instance_type              = var.instance_type
      image_id                   = var.image_id
      security_group_id          = alicloud_security_group.security.id
      scaling_configuration_name = "tf_test_scalingconfiguration"
      system_disk_category       = "cloud_essd"
      spot_strategy              = "SpotWithPriceLimit"
      active                     = true
      force_delete               = true
    }
    # Create a scaling rule.
    resource "alicloud_ess_scaling_rule" "rule" {
      scaling_group_id = alicloud_ess_scaling_group.group.id
      adjustment_type  = "QuantityChangeInCapacity"
      adjustment_value = 1
    }
  2. Jalankan perintah berikut untuk menginisialisasi lingkungan runtime Terraform.

    terraform init

    Output berikut menunjukkan bahwa inisialisasi berhasil.

    Initializing the backend...
    Initializing provider plugins...
    - Checking for available provider plugins...
    - Downloading plugin for provider "alicloud" (hashicorp/alicloud) 1.90.1...
    ...
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  3. Buat rencana eksekusi dan pratinjau perubahan.

    terraform plan
  4. Jalankan perintah berikut untuk membuat sumber daya.

    terraform apply

    Saat diminta, ketik yes dan tekan Enter. Tunggu hingga perintah selesai. Output berikut menunjukkan bahwa sumber daya Auto Scaling telah dibuat.

    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
      Enter a value: yes
    ...
    alicloud_security_group_rule.allow_all_tcp: Creation complete after 0s [id=sg-f8z1mes******:ingress:tcp:1/65535:intranet:0.0.0.0/0:accept:1]
    alicloud_vswitch.vsw: Creation complete after 3s [id=vsw-f8ztgc4******]
    alicloud_ess_scaling_group.group: Creating...
    alicloud_ess_scaling_group.group: Creation complete after 2s [id=asg-f8z9mo******]
    ...
    Apply complete! Resources: 7 added, 0 changed, 0 destroyed.
  5. Verifikasi hasil

    Terraform show

    Jalankan perintah berikut untuk melihat detail sumber daya yang dibuat oleh Terraform:

    terraform show
    D:\tf>terraform show
    # alicloud_ess_scaling_configuration.configuration:
    resource "alicloud_ess_scaling_configuration" "configuration" {
        active                         = true
        credit_specification           = null
        force_delete                   = true
        host_name                      = null
        id                             = "xxx"
        image_id                       = "aliyun_2_1903_x64_20G_alibase_20210120.vhd"
        image_name                     = null
        instance_name                  = "ESS-Instance"
        instance_type                  = "ecs.hfc7.xlarge"
        internet_charge_type           = "PayByBandwidth"
        internet_max_bandwidth_in      = 0
        internet_max_bandwidth_out     = 0
        key_name                       = null
        override                       = false
        password_inherit                = false
        resource_group_id              = null
        role_name                      = null
        scaling_configuration_name     = "tf_test_scalingconfiguration"
        scaling_group_id               = "xxx"
        security_group_id              = "xxx"
        spot_strategy                  = "SpotWithPriceLimit"
        ...
        system_disk_auto_snapshot_policy_id = null
        system_disk_category           = "cloud_essd"
        system_disk_description        = null
        system_disk_encrypted          = false
        system_disk_name               = null
        system_disk_performance_level  = null
        system_disk_size               = 0
    }
    # alicloud_ess_scaling_group.group:
    resource "alicloud_ess_scaling_group" "group" {
        allocation_strategy                    = null
        az_balance                             = false
        default_cooldown                       = 300
        desired_capacity                       = 0
        group_deletion_protection              = false
        group_type                             = "ECS"
        health_check_type                      = "ECS"
        id                                     = "asg-xxx"
        launch_template_id                     = null
        launch_template_version                = null
        max_size                               = 100
        min_size                               = 0
        multi_az_policy                        = "PRIORITY"
        on_demand_base_capacity                = 0
        on_demand_percentage_above_base_capacity = 0
        removal_policies                       = [
            "OldestScalingConfiguration",
            "OldestInstance",
        ]
        resource_group_id                      = "xxx"
        scaling_group_name                     = "tf_test_scalinggroup"
        scaling_policy                         = "release"
        spot_allocation_strategy               = null
        spot_instance_remedy                   = false
        vswitch_ids                            = [
            "vsw-f8ztgc4ad3e7ft9evy38z",
        ]
    }

    Konsol Auto Scaling

    Login ke Auto Scaling console untuk melihat grup penskalaan yang telah Anda buat.

    Pada bilah navigasi atas, pilih China (Heyuan) dari pemilih wilayah. Pada halaman Scaling Groups, temukan grup penskalaan bernama tf_test_scalinggroup dan pastikan statusnya Disabled, jenisnya ECS, serta jumlah maksimum instansnya 100.

Bersihkan sumber daya

Saat Anda tidak lagi memerlukan sumber daya yang dibuat dan dikelola oleh Terraform, jalankan perintah berikut untuk menghapusnya. Untuk informasi selengkapnya tentang terraform destroy, lihat Common commands.

terraform destroy

Kode contoh

Catatan

Anda dapat menjalankan kode contoh dalam topik ini hanya dengan satu klik. Run Sample Code

Kode contoh

variable "region" {
  default = "cn-heyuan"
}
variable "instance_type" {
  default = "ecs.hfc7.xlarge"
}
variable "image_id" {
  default = "aliyun_2_1903_x64_20G_alibase_20210120.vhd"
}
variable "zone_id" {
  default = "cn-heyuan-b"
}
provider "alicloud" {
  region = var.region
}
# Create a VPC.
resource "alicloud_vpc" "vpc" {
  vpc_name   = "tf-test-vpc-wjt"
  cidr_block = "172.16.0.0/12" # Specify the private CIDR block for the VPC.
}
# Create a vSwitch.
resource "alicloud_vswitch" "vsw" {
  vpc_id       = alicloud_vpc.vpc.id
  cidr_block   = "172.16.0.0/21" # Specify the private CIDR block for the vSwitch.
  zone_id      = var.zone_id     # Select the zone for the vSwitch.
  vswitch_name = "tf-test-vswitch-wjt"
}
# Create a security group.
resource "alicloud_security_group" "security" {
  name        = "tf_test_security"
  description = "New security group"
  vpc_id      = alicloud_vpc.vpc.id
}
# Add a security group rule that allows traffic from all IP addresses.
resource "alicloud_security_group_rule" "allow_all_tcp" {
  type              = "ingress"
  ip_protocol       = "tcp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "1/65535"
  priority          = 1
  security_group_id = alicloud_security_group.security.id
  cidr_ip           = "0.0.0.0/0"
}
# This example creates a scaling group with a maximum of 100 instances.
resource "alicloud_ess_scaling_group" "group" {
  scaling_group_name = "tf_test_scalinggroup"
  min_size           = 0
  max_size           = 100
  vswitch_ids        = [alicloud_vswitch.vsw.id]
}
# This example creates a scaling configuration for ECS instances.
resource "alicloud_ess_scaling_configuration" "configuration" {
  scaling_group_id           = alicloud_ess_scaling_group.group.id
  instance_type              = var.instance_type
  image_id                   = var.image_id
  security_group_id          = alicloud_security_group.security.id
  scaling_configuration_name = "tf_test_scalingconfiguration"
  system_disk_category       = "cloud_essd"
  spot_strategy              = "SpotWithPriceLimit"
  active                     = true
  force_delete               = true
}
# Create a scaling rule.
resource "alicloud_ess_scaling_rule" "rule" {
  scaling_group_id = alicloud_ess_scaling_group.group.id
  adjustment_type  = "QuantityChangeInCapacity"
  adjustment_value = 1
}