Serverless App Engine (SAE) adalah Platform sebagai Layanan (PaaS) tanpa server yang dirancang untuk manajemen aplikasi. Anda dapat menerapkan aplikasi ke SAE tanpa perlu mengelola atau memelihara kluster dan server, sehingga Anda dapat fokus pada desain dan pengembangan aplikasi. Anda dapat menggunakan konsol, operasi API, plugin, alat CI/CD, atau Terraform untuk menerapkan aplikasi ke SAE. Topik ini menjelaskan cara membuat dan menghapus aplikasi SAE dengan menggunakan Terraform.
Prasyarat
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya yang dimiliki oleh akun tersebut. Jika kredensial akun Alibaba Cloud bocor, risiko keamanan dapat terjadi. Kami menyarankan Anda menggunakan Pengguna Resource Access Management (RAM) dan membuat pasangan AccessKey untuk pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Buat Pasangan AccessKey.
Kebijakan berikut harus dilampirkan ke pengguna RAM yang digunakan untuk menjalankan perintah di Terraform. Kebijakan ini mencakup izin minimum yang diperlukan untuk menjalankan perintah di Terraform. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.
Kebijakan kustom ini memungkinkan pengguna untuk mengelola aplikasi dan layanan di SAE, termasuk mendeskripsikan, membuat, memperbarui, menghapus, menerapkan, memulai, dan menghentikan aplikasi, serta membuat, memperbarui, menghapus, mengikat, dan melepas ikatan layanan.
{ "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/*" } ] }Lingkungan runtime untuk Terraform dapat disiapkan menggunakan salah satu metode berikut:
Terraform tersedia sebagai layanan terkelola di ROS. Anda dapat menerapkan Template Terraform di Konsol ROS. Untuk informasi lebih lanjut, lihat Buat Tumpukan Terraform.
Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan runtime online untuk Terraform. Anda dapat masuk ke Terraform Explorer untuk menggunakan Terraform tanpa perlu menginstalnya. Metode ini cocok untuk skenario di mana Anda ingin menggunakan dan men-debug Terraform dengan cepat dan nyaman tanpa biaya tambahan.
Cloud Shell: Alibaba Cloud Cloud Shell adalah produk O&M gratis yang sudah diinstal sebelumnya dengan Terraform dan dikonfigurasi dengan kredensial otentikasi. Oleh karena itu, Anda dapat menjalankan perintah Terraform di Cloud Shell. Metode ini cocok untuk skenario di mana Anda ingin mengakses dan menggunakan Terraform dengan cepat dan nyaman dengan biaya rendah.
Instal dan Konfigurasikan Terraform: Metode ini cocok untuk skenario di mana koneksi jaringan tidak stabil atau lingkungan pengembangan kustom diperlukan.
Sumber Daya
alicloud_sae_application dirancang untuk mengelola dan membuat aplikasi di SAE.
alicloud_vpc memungkinkan Anda mengonfigurasi jaringan, termasuk perencanaan subnet, tabel rute, dan keamanan jaringan.
alicloud_vswitch adalah subnet dalam VPC dan digunakan untuk membagi VPC menjadi beberapa subnet, masing-masing dapat memiliki rentang alamat IP dan tabel rute sendiri. Dengan VSwitch, Anda dapat menerapkan aplikasi dan layanan yang berbeda di subnet yang berbeda.
alicloud_security_group adalah layanan grup keamanan yang digunakan untuk mengelola kontrol akses jaringan dalam VPC.
Buat aplikasi
Anda dapat menggunakan gambar atau paket kode untuk menerapkan aplikasi ke SAE. Paket kode bisa berupa paket JAR, WAR, atau PHP dalam format file .zip. Saat membuat aplikasi, Anda dapat menggunakan salah satu metode berikut untuk mengonfigurasi virtual private cloud (VPC) sesuai kebutuhan Anda:
Konfigurasi Otomatis: SAE secara otomatis mengonfigurasi namespace, VPC, vSwitch, dan grup keamanan untuk aplikasi yang ingin Anda buat. Namespace default akan dikonfigurasi.
Konfigurasi Kustom: Anda perlu secara manual mengonfigurasi namespace, VPC, vSwitch, dan grup keamanan untuk aplikasi yang ingin Anda buat.
Konfigurasi Otomatis
Bagian ini menjelaskan cara menggunakan gambar untuk menerapkan aplikasi dan mengimplementasikan konfigurasi aplikasi otomatis. Wilayah China (Beijing) digunakan dalam contoh ini.
- Buat folder proyek bernama terraform untuk menyimpan sumber daya Terraform.
- Jalankan perintah berikut untuk masuk ke direktori proyek:
cd terraform Buat file konfigurasi bernama main.tf. Contoh kode:
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" }Anda dapat masuk ke Konsol Container Registry dan mendapatkan alamat gambar di halaman Details repositori. Formatnya adalah sebagai berikut:
registry.<regionId>.aliyuncs.com/<namespace name><image repository name>:<image version>- Jalankan perintah berikut untuk menginisialisasi konfigurasi:
terraform init
Output yang Diharapkan:
Terraform telah berhasil diinisialisasi!
Sekarang Anda dapat mulai bekerja dengan Terraform. Coba jalankan "terraform plan" untuk melihat
perubahan apa pun yang diperlukan untuk infrastruktur Anda. Semua perintah Terraform
seharusnya sekarang berfungsi.
Jika Anda pernah mengatur atau mengubah modul atau konfigurasi backend untuk Terraform,
jalankan ulang perintah ini untuk menginisialisasi ulang direktori kerja Anda. Jika Anda lupa, perintah lain
akan mendeteksinya dan mengingatkan Anda untuk melakukannya jika perlu.Lakukan langkah-langkah berikut untuk membuat aplikasi SAE.
Jalankan perintah berikut untuk mengeksekusi file konfigurasi. Masukkan
yessaat diminta, lalu tekan Enter. Tunggu hingga perintah selesai dijalankan. Jika output perintah berikut ditampilkan, otorisasi telah selesai.
terraform applyOutput yang Diharapkan:
Apply complete! Resources: 6 added, 0 changed, 0 destroyed.Verifikasi
Jalankan perintah terraform show
Jalankan perintah berikut untuk menanyakan detail sumber daya yang dibuat oleh Terraform:
terraform show
Tangkapan layar Konsol Serverless App Engine SAE
Masuk ke Konsol SAE dan lihat daftar aplikasi yang telah dibuat.

Anda dapat menjalankan kode sampel dalam topik ini hanya dengan beberapa klik. Untuk informasi lebih lanjut, lihat Terraform Explorer.
Konfigurasi Kustom: gunakan gambar untuk menerapkan aplikasi
Bagian ini menjelaskan cara menggunakan gambar untuk menerapkan aplikasi dan mengonfigurasi aplikasi secara manual. Wilayah China (Shenzhen) digunakan dalam contoh ini.
- Buat folder proyek bernama terraform untuk menyimpan sumber daya Terraform.
- Jalankan perintah berikut untuk masuk ke direktori proyek:
cd terraform Buat file konfigurasi bernama main.tf. Contoh kode:
provider "alicloud" { region = var.region_id } # Tentukan ID wilayah. variable "region_id" { type = string default = "cn-shenzhen" } # Tentukan nama aplikasi. variable "app_name" { description = "Nama aplikasi" type = string default = "manual-jar-tf" } # Tentukan deskripsi aplikasi. variable "app_description" { default = "deskripsi dibuat oleh Terraform" description = "Deskripsi aplikasi" type = string } # Tentukan metode penyebaran aplikasi. variable "package_type" { default = "FatJar" description = "Tipe paket aplikasi" type = string } # Tentukan spesifikasi CPU instance. variable "cpu" { default = "500" description = "CPU aplikasi, dalam unit millicore" type = string } # Tentukan ukuran memori instance. variable "memory" { default = "1024" description = "Memori aplikasi, dalam unit MB" type = string } # Tentukan path paket JAR. variable "jar_url" { description = "URL JAR aplikasi, seperti `oss://my-bucket/my-app.jar`" type = string default = "https://edas-sz.oss-cn-shenzhen.aliyuncs.com/prod/demo/SPRING_CLOUD_CONSUMER.jar" } # Tentukan jumlah instance aplikasi. variable "replicas" { default = "1" description = "Replika aplikasi" type = string } # Tentukan nama namespace. variable "namespace_name" { description = "Nama Namespace" type = string default = "tfjardemo" } # Tentukan ID namespace. variable "namespace_id" { description = "ID Namespace" type = string default = "cn-shenzhen:tfjardemo" # Referensi ID namespace yang ada } # Tentukan deskripsi namespace. variable "namespace_description" { description = "Deskripsi Namespace" default = "sebuah namespace" } # Tentukan VPC dan grup keamanan. variable "name" { default = "tf" description = "Nama aturan grup keamanan" type = string } variable "description" { default = "Deskripsi aturan grup keamanan" description = "Deskripsi aturan grup keamanan" type = string } # Tentukan rentang port aturan grup keamanan. variable "port_range" { default = "1/65535" description = "Rentang port aturan grup keamanan" type = string } # Tentukan blok CIDR. variable "cidr_ip" { description = "blok cidr yang digunakan untuk membuat aturan grup keamanan baru" type = string default = "0.0.0.0/0" } # Tentukan zona di wilayah. variable "zone_id" { description = "ID Zona Ketersediaan" type = string default = "cn-shenzhen-e" # Pilih zona dengan sumber daya yang cukup } # Konfigurasikan pengumpulan log ke Simple Log Service. variable "slsConfig" { default = "[{\"logDir\":\"\",\"logType\":\"stdout\"},{\"logDir\":\"/home/admin/logs/*.log\"}]" description = "Konfigurasi pengumpulan log sls" 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 = "deskripsi tf-vswitch" } 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 = "ID Namespace" } 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 = "ID aplikasi" value = alicloud_sae_application.manual.id } output "app_name" { description = "Nama aplikasi" value = var.app_name }- Jalankan perintah berikut untuk menginisialisasi konfigurasi:
terraform init Output yang Diharapkan:

Lakukan langkah-langkah berikut untuk membuat aplikasi menggunakan gambar. Masukkan
yessaat diminta dan tekan Enter. Tunggu hingga perintah dijalankan. Jika output perintah berikut dikembalikan, otorisasi selesai.
terraform applyOutput yang Diharapkan:

Jika output dikembalikan sesuai harapan, aplikasi yang diterapkan menggunakan gambar telah dibuat.
Verifikasi
Jalankan perintah terraform show
Jalankan perintah berikut untuk menanyakan detail sumber daya yang dibuat oleh Terraform:
terraform show
Konsol Serverless App Engine SAE
Masuk ke Konsol SAE dan lihat daftar aplikasi yang telah dibuat.


Konfigurasi Kustom: gunakan paket JAR untuk menerapkan aplikasi
Bagian ini menjelaskan cara menggunakan paket JAR untuk menerapkan aplikasi dan mengonfigurasi aplikasi secara manual. Wilayah China (Shenzhen) digunakan dalam contoh ini.
- Buat folder proyek bernama terraform untuk menyimpan sumber daya Terraform.
- Jalankan perintah berikut untuk masuk ke direktori proyek:
cd terraform Buat file konfigurasi bernama main.tf. Contoh kode:
provider "alicloud" { region = var.region_id } # Tentukan ID wilayah. variable "region_id" { type = string default = "cn-shenzhen" } # Tentukan nama aplikasi. variable "app_name" { description = "Nama aplikasi" type = string default = "manual-jar-tf" } # Tentukan deskripsi aplikasi. variable "app_description" { default = "deskripsi dibuat oleh Terraform" description = "Deskripsi aplikasi" type = string } # Tentukan metode penyebaran aplikasi. variable "package_type" { default = "FatJar" description = "Tipe paket aplikasi" type = string } # Tentukan spesifikasi CPU instance. variable "cpu" { default = "500" description = "CPU aplikasi, dalam unit millicore" type = string } # Tentukan ukuran memori instance. variable "memory" { default = "1024" description = "Memori aplikasi, dalam unit MB" type = string } # Tentukan path paket JAR. variable "jar_url" { description = "URL JAR aplikasi, seperti `oss://my-bucket/my-app.jar`" type = string default = "https://edas-sz.oss-cn-shenzhen.aliyuncs.com/prod/demo/SPRING_CLOUD_CONSUMER.jar" } # Tentukan jumlah instance aplikasi. variable "replicas" { default = "1" description = "Replika aplikasi" type = string } # Tentukan nama namespace. variable "namespace_name" { description = "Nama Namespace" type = string default = "tfjardemo" } # Tentukan ID namespace. variable "namespace_id" { description = "ID Namespace" type = string default = "cn-shenzhen:tfjardemo" # Referensi ID namespace yang ada } # Tentukan deskripsi namespace. variable "namespace_description" { description = "Deskripsi Namespace" default = "sebuah namespace" } # Tentukan VPC dan grup keamanan. variable "name" { default = "tf" description = "Nama aturan grup keamanan" type = string } variable "description" { default = "Deskripsi aturan grup keamanan" description = "Deskripsi aturan grup keamanan" type = string } # Tentukan rentang port aturan grup keamanan. variable "port_range" { default = "1/65535" description = "Rentang port aturan grup keamanan" type = string } # Tentukan blok CIDR. variable "cidr_ip" { description = "blok cidr yang digunakan untuk membuat aturan grup keamanan baru" type = string default = "0.0.0.0/0" } # Tentukan zona di wilayah. variable "zone_id" { description = "ID Zona Ketersediaan" type = string default = "cn-shenzhen-e" # Pilih zona dengan sumber daya yang cukup. } # Konfigurasikan pengumpulan log ke Simple Log Service. variable "slsConfig" { default = "[{\"logDir\":\"\",\"logType\":\"stdout\"},{\"logDir\":\"/home/admin/logs/*.log\"}]" description = "Konfigurasi pengumpulan log sls" 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 = "deskripsi tf-vswitch" } 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 = "ID Namespace" } 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 = "ID aplikasi" value = alicloud_sae_application.manual.id } output "app_name" { description = "Nama aplikasi" value = var.app_name }Jalankan perintah berikut untuk menginisialisasi konfigurasi.
terraform initOutput yang Diharapkan:

Lakukan langkah-langkah berikut untuk membuat aplikasi menggunakan paket JAR.
Jalankan perintah berikut untuk menerapkan aplikasi.Masukkan
yessaat diminta dan tekan Enter. Tunggu hingga perintah dijalankan. Jika output perintah berikut dikembalikan, otorisasi selesai.terraform applyOutput yang Diharapkan:

Jika output dikembalikan sesuai harapan, aplikasi yang diterapkan menggunakan paket JAR telah dibuat.
Verifikasi:
Jalankan perintah terraform show
Jalankan perintah berikut untuk menanyakan detail sumber daya yang dibuat oleh Terraform:
terraform show
Konsol SAE
Masuk ke Konsol SAE dan lihat namespace yang telah dibuat.

Hapus aplikasi
Bagian ini menjelaskan cara menghapus aplikasi. Aplikasi auto-app-1 digunakan dalam contoh ini. Aplikasi ini dibuat secara otomatis di wilayah China (Shanghai).
Jalankan perintah berikut di direktori proyek untuk mengeksekusi file konfigurasi:
terraform destroyOutput yang Diharapkan:

Referensi
Untuk informasi lebih lanjut tentang Terraform, lihat Apa itu Terraform?.
Kelola Aplikasi Menggunakan Terraform
Kelola Aplikasi di Konsol: Ikhtisar Pengehostan Aplikasi
Kelola Aplikasi dengan Memanggil Operasi API: Daftar Operasi Berdasarkan Fungsi