Tüm Ürünler
Search
Belge Merkezi

Serverless App Engine:Terraform kullanarak SAE uygulamalarını yönetin

Son Güncelleme:Oct 06, 2026

Serverless App Engine (SAE) uygulama odaklı bir Sunucusuz PaaS platformudur. Uygulamalarınızı SAE üzerine dağıttıktan sonra kümeleri veya sunucuları yönetmeniz ya da bakımını yapmanız gerekmez. Uygulamalarınızı tasarlamaya ve geliştirmeye odaklanabilir, bunları SAE üzerinde çalıştırabilirsiniz. Konsol, API'ler, eklentiler veya CI/CD aracılığıyla uygulama dağıtmanın yanı sıra Terraform kullanarak da SAE uygulamaları dağıtabilirsiniz. Bu konu, Terraform kullanarak SAE uygulamalarını otomatik olarak nasıl oluşturacağınızı, özel yapılandırmalarla nasıl kuracağınızı ve nasıl sileceğinizi açıklar.

Ön koşullar

  • Bir Alibaba Cloud hesabı tüm kaynaklar üzerinde tam yetkiye sahiptir. Kimlik bilgileri sızdırılırsa kaynaklarınız yüksek risk altında kalır. Bir RAM kullanıcısı oluşturmanızı ve bu kullanıcı için bir AccessKey tanımlamanızı öneririz. Daha fazla bilgi için bkz. RAM kullanıcısı oluşturma ve AccessKey oluşturma.

  • Bu özel ilke, bir RAM kullanıcısının SAE içindeki uygulamaları ve hizmetleri yönetmesine olanak tanır. İzinler arasında uygulamaları listeleme, oluşturma, güncelleme, silme, dağıtma, başlatma ve durdurma ile hizmetleri oluşturma, güncelleme, silme, bağlama ve bağlantısını kaldırma işlemleri yer alır.

    Bu örnekteki kaynakları yönetmek için Terraform komutlarını çalıştıran RAM kullanıcısına aşağıdaki minimum izin ilkesini ekleyin. Daha fazla bilgi için bkz. RAM kullanıcı izinlerini yönetme.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "sae:DescribeApplications",
            "sae:DescribeApplication",
            "sae:DescribeInstances",
            "sae:DescribeInstance",
            "sae:DescribeServices",
            "sae:DescribeService"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "sae:CreateApplication",
            "sae:UpdateApplication",
            "sae:DeleteApplication",
            "sae:DeployApplication",
            "sae:StartApplication",
            "sae:StopApplication"
          ],
          "Resource": "acs:sae:*:*:application/*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "sae:CreateService",
            "sae:UpdateService",
            "sae:DeleteService",
            "sae:BindService",
            "sae:UnbindService"
          ],
          "Resource": "acs:sae:*:*:service/*"
        }
      ]
    }
  • Bir Terraform çalışma zamanı ortamı hazırlayın. Aşağıdaki seçeneklerden birini seçin:

    • ROS, Terraform için yönetilen bir hizmet sunar. Terraform şablonlarını doğrudan ROS konsolu üzerinden dağıtabilirsiniz. Daha fazla bilgi için bkz. Terraform tabanlı yığın oluşturma.

    • Terraform Explorer'da Terraform kullanma: Alibaba Cloud, Terraform'u çalıştırmak için çevrimiçi bir ortam sağlar. Oturum açtıktan sonra herhangi bir kurulum yapmadan Terraform'u çevrimiçi olarak kullanabilirsiniz. Bu yöntem, Terraform'u denemek ve hata ayıklamak için hızlı, kolay ve ücretsiz bir yoldur.

    • Terraform ile hızlıca kaynak oluşturma: Terraform bileşenleri Alibaba Cloud Cloud Shell içinde önceden yüklenmiştir ve kimlik bilgileri yapılandırılmıştır. Cloud Shell üzerinde doğrudan Terraform komutlarını çalıştırabilirsiniz. Bu yöntem, düşük maliyetle Terraform'a hızlı ve kolay erişim sağlamak için uygundur.

    • Terraform'u yerel ortama yükleme ve yapılandırma: Bu yöntem, ağ bağlantısının zayıf olduğu veya özel bir geliştirme ortamının gerektiği senaryolar için uygundur.

Kullanılan kaynaklar

  • alicloud_sae_application: Serverless App Engine (SAE) uygulamalarını yönetir ve oluşturur.

  • alicloud_vpc: Alt ağlar, yönlendirme tabloları ve güvenlik ayarları dahil olmak üzere VPC'nizi yapılandırır.

  • alicloud_vswitch: Bir VPC içinde alt ağlar oluşturur. Her alt ağ kendi IP adres aralığına ve yönlendirme tablosuna sahip olabilir. Farklı uygulamaları ve hizmetleri farklı alt ağlarda dağıtmak için vSwitch'leri kullanabilirsiniz.

  • alicloud_security_group: Bir VPC içindeki ağ erişim kontrolünü yönetir.

Uygulama oluşturma

SAE görüntülerden ve kod paketlerinden dağıtımları destekler. Desteklenen paket türleri arasında JAR, WAR ve PHP ZIP paketleri bulunur. Bir uygulama oluştururken bir VPC'yi yapılandırmak için aşağıdaki yöntemlerden birini seçebilirsiniz:

  • Otomatik yapılandırma: SAE ad alanı, VPC, vSwitch ve güvenlik grubu gibi kaynakları otomatik olarak yapılandırır. Varsayılan ad alanı kullanılır.

  • Özel yapılandırma: Ad alanı, VPC, vSwitch ve güvenlik grubu gibi uygulamanız için gerekli kaynakları kendiniz yapılandırmalısınız.

Otomatik yapılandırma

Bu örnek, Çin (Pekin) bölgesinde bir görüntüden uygulamanın otomatik olarak nasıl dağıtılacağını gösterir.

  1. Terraform kaynaklarını depolamak için terraform adında bir proje klasörü oluşturun.

  2. Proje dizinine gitmek için aşağıdaki komutu çalıştırın:

    cd terraform
  3. main.tf adında bir yapılandırma dosyası oluşturun ve aşağıdaki içeriği ekleyin.

    provider "alicloud" {
      region = var.region
    }
    variable "region" {
      default = "cn-beijing"
    }
    variable "name" {
      default = "serverless-example"
    }
    resource "random_integer" "default" {
      max = 99999
      min = 10000
    }
    data "alicloud_regions" "default" {
      current = true
    }
    data "alicloud_zones" "default" {
      available_resource_creation = "VSwitch"
    }
    resource "alicloud_vpc" "default" {
      vpc_name   = var.name
      cidr_block = "10.4.0.0/16"
    }
    resource "alicloud_vswitch" "default" {
      vswitch_name = var.name
      cidr_block   = "10.4.0.0/24"
      vpc_id       = alicloud_vpc.default.id
      zone_id      = data.alicloud_zones.default.zones.0.id
    }
    resource "alicloud_security_group" "default" {
      vpc_id = alicloud_vpc.default.id
    }
    resource "alicloud_sae_namespace" "default" {
      namespace_id              = "${data.alicloud_regions.default.regions.0.id}:example${random_integer.default.result}"
      namespace_name            = var.name
      namespace_description     = var.name
      enable_micro_registration = false
    }
    resource "alicloud_sae_application" "default" {
      app_description   = var.name
      app_name          = "${var.name}-${random_integer.default.result}"
      namespace_id      = alicloud_sae_namespace.default.id
      image_url         = "registry-vpc.${data.alicloud_regions.default.regions.0.id}.aliyuncs.com/sae-demo-image/consumer:1.0"
      package_type      = "Image"
      security_group_id = alicloud_security_group.default.id
      vpc_id            = alicloud_vpc.default.id
      vswitch_id        = alicloud_vswitch.default.id
      timezone          = "Asia/Beijing"
      replicas          = "1"
      cpu               = "500"
      memory            = "2048"
    }

    Container Registry konsolunda oturum açabilir ve hedef örnek deposunun Basic Information sayfasında görüntü adresini görüntüleyebilirsiniz. Adres aşağıdaki biçimdedir:

    registry.<regionId>.aliyuncs.com/<namespace_name>/<image_repository_name>:<image_version_number>
  4. Yapılandırmaları başlatmak için aşağıdaki komutu çalıştırın:

    terraform init
  1. Beklenen çıktı:

Terraform has been successfully initialized!
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.
  1. SAE uygulamasını oluşturmak için aşağıdaki komutları çalıştırın.

  • Yapılandırma dosyasını uygulamak için aşağıdaki komutu çalıştırın.Komut çalışırken istemde yes girin, Enter tuşuna basın ve komutun tamamlanmasını bekleyin. Aşağıdaki bilgiler görüntülenirse yetkilendirme tamamlanmış demektir.

terraform apply
  1. Beklenen çıktı:

Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
  1. Sonucu doğrulayın

Terraform show komutu

Terraform tarafından oluşturulan kaynakların ayrıntılarını sorgulamak için aşağıdaki komutu çalıştırabilirsiniz:

terraform show
shell@Alicloud: /serverless$ terraform show
# alicloud_sae_application.default:
resource "alicloud_sae_application" "default" {
    app_description              = "serverless-xxx"
    app_name                     = "serverless-xxx"
    batch_wait_time              = 10
    command_args_v2              = []
    config_map_mount_desc        = jsonencode([])
    cpu                          = 500
    custom_host_alias            = jsonencode([])
    enable_ahas                  = "false"
    enable_grey_tag_route        = false
    envs                         = jsonencode([])
    id                           = "131976e5-7264-xxx"
    image_url                    = "registry-vpc.cn-beijing.aliyuncs.com/sae-demo-image/consumer:1.0"
    memory                       = 2048
    min_ready_instance_ratio     = -1
    min_ready_instances          = -1
    namespace_id                 = "cn-beijing:xxx"
    package_type                 = "Image"
    package_version              = "1731047094"
    replicas                     = 1
    security_group_id            = "sg-2zxxx"
    status                       = "RUNNING"
    termination_grace_period_seconds = 30
    timezone                     = "Asia/Beijing"
    vpc_id                       = "vpc-xxx"
    vswitch_id                   = "vsw-xxx"
}

SAE konsolu

Serverless App Engine (SAE) konsolu üzerinde oturum açın ve oluşturulan uygulamaların listesini görüntüleyin.

Uygulama listesinde serverless-xxx gibi otomatik olarak oluşturulan uygulama görünür. Örnek sayısının 1/1 olması uygulamanın doğru çalıştığını onaylar.

Not

Aşağıdaki örnek kodu Terraform Explorer içinde tek tıklamayla çalıştırabilirsiniz.

Özel yapılandırma: Görüntü dağıtımı

Bu örnek, Çin (Shenzhen) bölgesinde özel yapılandırmalarla bir görüntüden uygulamanın nasıl dağıtılacağını gösterir.

  1. Terraform kaynaklarını depolamak için terraform adında bir proje klasörü oluşturun.

  2. Proje dizinine gitmek için aşağıdaki komutu çalıştırın:

    cd terraform
  3. main.tf adında bir yapılandırma dosyası oluşturun ve aşağıdaki içeriği ekleyin.

    provider "alicloud" {
      region = var.region_id
    }
    # Region ID
    variable "region_id" {
      type    = string
      default = "cn-shenzhen"
    }
    # Application name
    variable "app_name" {
      description = "The name of the application"
      type        = string
      default     = "manual-jar-tf"
    }
    # Application description
    variable "app_description" {
      default     = "description created by Terraform"
      description = "The description of the application"
      type        = string
    }
    # Application deployment method
    variable "package_type" {
      default     = "FatJar"
      description = "The package type of the application"
      type        = string
    }
    # Instance CPU specification
    variable "cpu" {
      default     = "500"
      description = "The cpu of the application, in unit of millicore"
      type        = string
    }
    # Instance memory specification
    variable "memory" {
      default     = "1024"
      description = "The memory of the application, in unit of MB"
      type        = string
    }
    # JAR package URL
    variable "jar_url" {
      description = "The JAR url of the application, like `oss://my-bucket/my-app.jar`"
      type        = string
      default     = "https://edas-sz.oss-cn-shenzhen.aliyuncs.com/prod/demo/SPRING_CLOUD_CONSUMER.jar"
    }
    # Number of application instances
    variable "replicas" {
      default     = "1"
      description = "The replicas of the application"
      type        = string
    }
    # Namespace name
    variable "namespace_name" {
      description = "Namespace Name"
      type        = string
      default     = "tfjardemo"
    }
    # Namespace ID
    variable "namespace_id" {
      description = "Namespace ID"
      type        = string
      default     = "cn-shenzhen:tfjardemo"  # Reference an existing namespace ID
    }
    # Namespace description
    variable "namespace_description" {
      description = "Namespace Description"
      default     = "a namespace"
    }
    # VPC and security group
    variable "name" {
      default     = "tf"
      description = "The name of the security group rule"
      type        = string
    }
    variable "description" {
      default     = "The description of the security group rule"
      description = "The description of the security group rule"
      type        = string
    }
    # Port range
    variable "port_range" {
      default     = "1/65535"
      description = "The port range of the security group rule"
      type        = string
    }
    # CIDR block
    variable "cidr_ip" {
      description = "cidr blocks used to create a new security group rule"
      type        = string
      default     = "0.0.0.0/0"
    }
    # Availability zone in the region
    variable "zone_id" {
      description = "Availability Zone ID"
      type        = string
      default     = "cn-shenzhen-e"  # Select an availability zone with sufficient resources
    }
    # Collect application logs to SLS
    variable "slsConfig" {
      default     = "[{\"logDir\":\"\",\"logType\":\"stdout\"},{\"logDir\":\"/home/admin/logs/*.log\"}]"
      description = "The config of sls log collect"
      type        = string
    }
    resource "alicloud_vpc" "vpc" {
      vpc_name   = "tf-vpc"
      cidr_block = "172.16.0.0/16"
    }
    resource "alicloud_vswitch" "vswitch" {
      vpc_id       = alicloud_vpc.vpc.id
      cidr_block   = "172.16.1.0/24"
      zone_id      = var.zone_id
      vswitch_name = "tf-vswitch"
      description  = "tf-vswitch description"
    }
    resource "alicloud_sae_namespace" "default" {
      namespace_id          = var.namespace_id
      namespace_name        = var.namespace_name
      namespace_description = var.namespace_description
    }
    output "namespace_id" {
      value       = var.namespace_id
      description = "Namespace ID"
    }
    resource "alicloud_security_group" "sg" {
      name        = var.name
      description = var.description
      vpc_id      = alicloud_vpc.vpc.id
    }
    resource "alicloud_security_group_rule" "sg_rule" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = var.port_range
      priority          = 1
      security_group_id = alicloud_security_group.sg.id
      cidr_ip           = var.cidr_ip
    }
    resource "alicloud_sae_application" "manual" {
      app_name           = var.app_name
      app_description    = var.app_description
      deploy             = true
      package_url        = var.jar_url
      namespace_id       = alicloud_sae_namespace.default.id
      vswitch_id         = alicloud_vswitch.vswitch.id
      vpc_id             = alicloud_vpc.vpc.id
      security_group_id  = alicloud_security_group.sg.id
      package_type       = var.package_type
      jdk                = "Open JDK 8"
      timezone           = "Asia/Beijing"
      replicas           = var.replicas
      cpu                = var.cpu
      memory             = var.memory
      micro_registration = "0"
      lifecycle {
        ignore_changes = [
          micro_registration
        ]
      }
    }
    output "app_id" {
      description = "The id of the application"
      value       = alicloud_sae_application.manual.id
    }
    output "app_name" {
      description = "The name of the application"
      value       = var.app_name
    }
  4. Yapılandırmaları başlatmak için aşağıdaki komutu çalıştırın:

    terraform init
  5. Beklenen çıktı:

    Terraform has been successfully initialized!
    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.
  1. Bir görüntü kullanarak uygulama oluşturmak için aşağıdaki komutları sırayla çalıştırın. Çalıştırma sırasında istendiğinde yes girin ve Enter tuşuna basın. Komutun tamamlanmasını bekleyin. Aşağıdaki bilgiler görünürse yetkilendirme tamamlanmış demektir.

terraform apply
  1. Beklenen çıktı:

Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
Outputs:
app_id = "72c052ba-xxx"
app_name = "manual-image-tf"
namespace_id = "cn-shenzhen:tfdemo"

Çıktı beklendiği gibiyse uygulama başarıyla dağıtılmış demektir.

  1. Sonucu doğrulayın

Terraform show komutu

Terraform tarafından oluşturulan kaynakların ayrıntılarını sorgulamak için aşağıdaki komutu çalıştırabilirsiniz:

terraform show
shell@Alicloud: ~/serverless$ terraform show
# alicloud_sae_application.manual:
resource "alicloud_sae_application" "manual" {
    app_description              = "description created by Terraform"
    app_name                     = "manual-image-tf"
    batch_wait_time              = 10
    command_args_v2              = []
    config_map_mount_desc        = jsonencode([])
    cpu                          = 500
    custom_host_alias            = jsonencode([])
    deploy                       = true
    enable_ahas                  = "false"
    enable_grey_tag_route        = false
    envs                         = jsonencode([])
    id                           = "72c05xxx"
    image_url                    = "registry.cn-beijing.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0"
    memory                       = 1024
    min_ready_instance_ratio     = -1
    min_ready_instances          = -1
    namespace_id                 = "cn-shenzhen:tfdemo"
    package_type                 = "Image"
    package_version              = "1732169733"
    replicas                     = 1
    security_group_id            = "sg-wz96xxx"
    status                       = "RUNNING"
    termination_grace_period_seconds = 30
    timezone                     = "Asia/Beijing"
    vpc_id                       = "vpc-xxx"
    vswitch_id                   = "vsw-xxx"
}
# alicloud_sae_namespace.default:
resource "alicloud_sae_namespace" "default" {
    enable_micro_registration = true
    id                        = "cn-shenzhen:tfdemo"
    namespace_description     = "a namespace"
    namespace_id              = "cn-shenzhen:tfdemo"
    namespace_name            = "tfdemo"
    namespace_short_id        = "tfdemo"
}

SAE konsolu

Serverless App Engine (SAE) konsolu üzerinde oturum açın ve oluşturulan uygulamaların listesini görüntüleyin.

Mikroservis uygulama listesinde tfdemo ad alanında manual-image-tf uygulamasının oluşturulduğunu görebilirsiniz. Uygulamanın Mevcut Örnekler/Hedef Örnekler sayısı 1/1 şeklindedir; bu durum uygulamanın doğru çalıştığını onaylar.

manual-image-tf uygulamasının sol gezinme bölmesinde Change History seçeneğine tıklayın. Değişiklik Türünün Deploy Application ve Durumun Succeeded olduğunu doğrulayın.

Özel yapılandırma: JAR paketi dağıtımı

Bu örnek, Çin (Shenzhen) bölgesinde özel yapılandırmalarla bir JAR paketinden uygulamanın nasıl dağıtılacağını gösterir.

  1. Terraform kaynaklarını depolamak için terraform adında bir proje klasörü oluşturun.

  2. Proje dizinine gitmek için aşağıdaki komutu çalıştırın:

    cd terraform
  3. main.tf adında bir yapılandırma dosyası oluşturun ve aşağıdaki içeriği ekleyin.

    provider "alicloud" {
      region = var.region_id
    }
    # Region ID
    variable "region_id" {
      type    = string
      default = "cn-shenzhen"
    }
    # Application name
    variable "app_name" {
      description = "The name of the application"
      type        = string
      default     = "manual-jar-tf"
    }
    # Application description
    variable "app_description" {
      default     = "description created by Terraform"
      description = "The description of the application"
      type        = string
    }
    # Application deployment method
    variable "package_type" {
      default     = "FatJar"
      description = "The package type of the application"
      type        = string
    }
    # Instance CPU specification
    variable "cpu" {
      default     = "500"
      description = "The cpu of the application, in unit of millicore"
      type        = string
    }
    # Instance memory specification
    variable "memory" {
      default     = "1024"
      description = "The memory of the application, in unit of MB"
      type        = string
    }
    # JAR package URL
    variable "jar_url" {
      description = "The JAR url of the application, like `oss://my-bucket/my-app.jar`"
      type        = string
      default     = "https://edas-sz.oss-cn-shenzhen.aliyuncs.com/prod/demo/SPRING_CLOUD_CONSUMER.jar"
    }
    # Number of application instances
    variable "replicas" {
      default     = "1"
      description = "The replicas of the application"
      type        = string
    }
    # Namespace name
    variable "namespace_name" {
      description = "Namespace Name"
      type        = string
      default     = "tfjardemo"
    }
    # Namespace ID
    variable "namespace_id" {
      description = "Namespace ID"
      type        = string
      default     = "cn-shenzhen:tfjardemo"  # Reference an existing namespace ID
    }
    # Namespace description
    variable "namespace_description" {
      description = "Namespace Description"
      default     = "a namespace"
    }
    # VPC and security group
    variable "name" {
      default     = "tf"
      description = "The name of the security group rule"
      type        = string
    }
    variable "description" {
      default     = "The description of the security group rule"
      description = "The description of the security group rule"
      type        = string
    }
    # Port range
    variable "port_range" {
      default     = "1/65535"
      description = "The port range of the security group rule"
      type        = string
    }
    # CIDR block
    variable "cidr_ip" {
      description = "cidr blocks used to create a new security group rule"
      type        = string
      default     = "0.0.0.0/0"
    }
    # Availability zone in the region
    variable "zone_id" {
      description = "Availability Zone ID"
      type        = string
      default     = "cn-shenzhen-e"  # Select an availability zone with sufficient resources
    }
    # Collect application logs to SLS
    variable "slsConfig" {
      default     = "[{\"logDir\":\"\",\"logType\":\"stdout\"},{\"logDir\":\"/home/admin/logs/*.log\"}]"
      description = "The config of sls log collect"
      type        = string
    }
    resource "alicloud_vpc" "vpc" {
      vpc_name   = "tf-vpc"
      cidr_block = "172.16.0.0/16"
    }
    resource "alicloud_vswitch" "vswitch" {
      vpc_id       = alicloud_vpc.vpc.id
      cidr_block   = "172.16.1.0/24"
      zone_id      = var.zone_id
      vswitch_name = "tf-vswitch"
      description  = "tf-vswitch description"
    }
    resource "alicloud_sae_namespace" "default" {
      namespace_id          = var.namespace_id
      namespace_name        = var.namespace_name
      namespace_description = var.namespace_description
    }
    output "namespace_id" {
      value       = var.namespace_id
      description = "Namespace ID"
    }
    resource "alicloud_security_group" "sg" {
      name        = var.name
      description = var.description
      vpc_id      = alicloud_vpc.vpc.id
    }
    resource "alicloud_security_group_rule" "sg_rule" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = var.port_range
      priority          = 1
      security_group_id = alicloud_security_group.sg.id
      cidr_ip           = var.cidr_ip
    }
    resource "alicloud_sae_application" "manual" {
      app_name           = var.app_name
      app_description    = var.app_description
      deploy             = true
      package_url        = var.jar_url
      namespace_id       = alicloud_sae_namespace.default.id
      vswitch_id         = alicloud_vswitch.vswitch.id
      vpc_id             = alicloud_vpc.vpc.id
      security_group_id  = alicloud_security_group.sg.id
      package_type       = var.package_type
      jdk                = "Open JDK 8"
      timezone           = "Asia/Beijing"
      replicas           = var.replicas
      cpu                = var.cpu
      memory             = var.memory
      micro_registration = "0"
      lifecycle {
        ignore_changes = [
          micro_registration
        ]
      }
    }
    output "app_id" {
      description = "The id of the application"
      value       = alicloud_sae_application.manual.id
    }
    output "app_name" {
      description = "The name of the application"
      value       = var.app_name
    }
  4. Yapılandırmayı başlatmak için aşağıdaki komutu çalıştırın.

    terraform init
  5. Bir JAR paketinden uygulama oluşturmak için aşağıdaki komutları çalıştırın.

    1. Uygulamayı dağıtmak için aşağıdaki komutu çalıştırın.İstendiğinde yes girin ve Enter tuşuna basın. Komut çalışmayı tamamladıktan sonra aşağıdaki ileti görüntülenirse yetkilendirme tamamlanmış demektir.

      terraform apply

      Beklenen çıktı:

      Apply complete! Resources: 6 added, 0 changed, 4 destroyed.
      Outputs:
      app_id = "aad70a1a-xxx"
      app_name = "manual-jar-tf"
      namespace_id = "cn-shenzhen:tfjardemo"

    Çıktı beklendiği gibiyse uygulama JAR paketinden başarıyla dağıtılmış demektir.

  6. Sonucu doğrulayın:

Terraform show komutu

Terraform tarafından oluşturulan kaynakların ayrıntılarını sorgulamak için aşağıdaki komutu çalıştırabilirsiniz:

terraform show
shell1@Alicloud:~/serverless$ terraform show
# alicloud_sae_application.manual:
resource "alicloud_sae_application" "manual" {
    app_description             = "description created by Terraform"
    app_name                    = "manual-jar-tf"
    batch_wait_time             = 10
    command_args_v2             = []
    config_map_mount_desc       = jsonencode([])
    cpu                         = 500
    custom_host_alias           = jsonencode([])
    deploy                      = true
    enable_ahas                 = "false"
    enable_grey_tag_route       = false
    envs                        = jsonencode([])
    id                          = "6acbf6fc-6b1xxx"
    jdk                         = "Open JDK 8"
    memory                      = 1024
    micro_registration          = "0"
    min_ready_instance_ratio    = -1
    min_ready_instances         = -1
    namespace_id                = "cn-shenzhen:tfjardemo"
    package_type                = "FatJar"
    package_url                 = "https://edas-sz.oss-cn-shenzhen.aliyuncs.com/prod/demo/SPRING_CLOUD_CONSUMER.jar"
    package_version             = "1732241446"
}
    programming_language        = "java"
    replicas                    = 1
    security_group_id           = "sg-wz9j10xxx"
    status                      = "RUNNING"
    termination_grace_period_seconds = 30
    timezone                    = "Asia/Beijing"
    vpc_id                      = "vpc-wz9sjxxx"
    vswitch_id                  = "vsw-wz9e1xxx"
}

SAE konsolu

Oluşturulan ad alanını görüntülemek için Serverless App Engine (SAE) konsolu üzerinde oturum açın.

Sol gezinme bölmesinde Microservices Application seçeneğine tıklayın. Uygulama listesinde tfjardemo ad alanında manual-jar-tf uygulamasının oluşturulduğunu doğrulayın. Örnek sayısı 1/1 ve teknik özellikler 0,5 Çekirdek 1 GB şeklindedir.

Uygulama silme

Oluşturduğunuz kaynakları silmek için terraform destroy komutunu çalıştırın.

  1. Proje dizininde aşağıdaki komutu çalıştırın.

    terraform destroy

    Beklenen çıktı:

    module.vpc.alicloud_vswitch.vswitches: Destroying...  [id=vsw-wz9bdsgvhit7jv2hb4li]
    module.vpc.alicloud_security_group_rule.sg_rule: Destroying...  [id=sg-wz9ba3de0fxxriu5c0m5:i]
    alicloud_security_group_rule.sg_rule: Destruction complete after 1s
    alicloud_security_group.sg: Destroying...  [id=sg-wz9ba3de0fxxriu5c0m5]
    alicloud_security_group.sg: Destruction complete after 0s
    module.vpc.alicloud_vswitch.vswitches: Destruction complete after 4s
    module.vpc.alicloud_vpc.vpc[0]: Destroying...  [id=vpc-wz9cg2ifzghh2pt948zcj]
    module.vpc.alicloud_vpc.vpc[0]: Destruction complete after 6s
    Destroy complete! Resources: 4 destroyed.

İlgili konular