All Products
Search
Document Center

Serverless App Engine:Gunakan Terraform untuk Mengelola Namespace SAE

Last Updated:Jul 02, 2025

Serverless App Engine (SAE) namespace digunakan untuk mengisolasi aplikasi secara logis. Contohnya, Anda dapat menggunakan namespace untuk mengisolasi aplikasi di lingkungan pengujian, pengembangan, staging, dan produksi. Topik ini menjelaskan cara menggunakan Terraform untuk membuat, memperbarui, dan menghapus SAE namespace.

Catatan

Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik. Untuk informasi lebih lanjut, lihat Terraform Explorer.

Prasyarat

  • Akun Alibaba Cloud memiliki izin penuh terhadap semua sumber daya yang dimilikinya. Jika kredensial akun bocor, risiko keamanan dapat muncul. Kami menyarankan Anda menggunakan Pengguna Resource Access Management (RAM) dan membuat pasangan AccessKey untuk pengguna RAM tersebut. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Buat Pasangan AccessKey.

  • Kebijakan berikut harus dilampirkan ke pengguna RAM yang digunakan untuk menjalankan perintah Terraform. Kebijakan ini mencakup izin minimum yang diperlukan untuk menjalankan perintah Terraform. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.

    Kebijakan ini memungkinkan pengguna untuk mengelola namespace SAE, termasuk membuat, menghapus, memperbarui, melihat, dan mencantumkan namespace.

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "sae:CreateNamespace",
                    "sae:DeleteNamespace",
                    "sae:UpdateNamespace",
                    "sae:GetNamespace",
                    "sae:ListNamespaces"
                ],
                "Resource": "*"
            }
        ]
    }
  • Lingkungan runtime untuk Terraform disiapkan menggunakan salah satu metode berikut:

    • Terraform tersedia sebagai layanan terkelola di ROS. Anda dapat menyebarkan 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 instalasi. Metode ini cocok untuk skenario di mana Anda ingin menggunakan dan men-debug Terraform dengan cepat dan mudah tanpa biaya tambahan.

    • Cloud Shell: Alibaba Cloud Cloud Shell adalah produk O&M gratis yang sudah terinstal 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 mudah 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

Buat Namespace

Dalam contoh ini, sebuah namespace dibuat di wilayah China (Hangzhou). Nama namespace adalah admin dan ID namespace adalah cn-hangzhou:admin.

  1. Buat folder proyek bernama terraform untuk menyimpan sumber daya Terraform.
  2. Jalankan perintah berikut untuk masuk ke direktori proyek:
    cd terraform
  3. Jalankan perintah berikut untuk membuat file konfigurasi bernama main.tf.

    provider "alicloud" {
      region = var.region_id
    }
    
    # Tentukan wilayah. Nilai default adalah cn-hangzhou
    variable "region_id" {
      type    = string
      default = "cn-hangzhou"
    }
    
    # Tentukan deskripsi namespace. Nilai default adalah "a namespace sample"
    variable "namespace_description" {
      description = "Deskripsi Namespace"
      default     = "a namespace sample"
    }
    
    # Tentukan nama namespace. Nilai default adalah "admin"
    variable "namespace_name" {
      description = "Nama Namespace"
      type        = string
      default     = "admin"
    }
    
    # Tentukan ID namespace. Nilai default adalah "cn-hangzhou:admin"
    variable "namespace_id" {
      description = "ID Namespace"
      type        = string
      default     = "cn-hangzhou:admin"
    }
    
    resource "alicloud_sae_namespace" "default" {
      namespace_description = var.namespace_description
      namespace_id          = var.namespace_id
      namespace_name        = var.namespace_name
    }
    
    output "namespace_id" {
      value       = alicloud_sae_namespace.default.namespace_id
      description = "ID dari namespace yang dibuat."
    }
  4. Jalankan perintah berikut untuk menginisialisasi lingkungan runtime Terraform:

    terraform init
  5. Keluaran yang diharapkan:

    Menginisialisasi backend...
    
    Menginisialisasi plugin penyedia...
    - Memeriksa plugin penyedia yang tersedia...
    - Mengunduh plugin untuk penyedia "alicloud" (hashicorp/alicloud) 1.233.0...
    
    Penyedia berikut tidak memiliki batasan versi apa pun dalam konfigurasi,
    sehingga versi terbaru diinstal.
    
    Untuk mencegah pembaruan otomatis ke versi utama baru yang mungkin berisi perubahan besar, disarankan untuk menambahkan version = "..." batasan ke blok penyedia yang sesuai dalam konfigurasi, dengan string batasan yang disarankan di bawah ini.
    
    * provider.alicloud: version = "~> 1.233"
    
    
    Peringatan: registry.terraform.io: Untuk pengguna pada Terraform 0.13 atau lebih tinggi, penyedia ini telah dipindahkan ke aliyun/alicloud. Harap perbarui sumber Anda di required_providers.
    
    
    Terraform berhasil diinisialisasi!
    
    Anda sekarang 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.
  6. Jalankan perintah berikut secara berurutan untuk membuat namespace SAE.

    1. Jalankan perintah berikut untuk mengeksekusi file konfigurasi. Masukkan yes saat diminta dan tekan Enter. Tunggu hingga perintah selesai dijalankan. Jika keluaran perintah berikut dikembalikan, otorisasi selesai.

      terraform apply

      Keluaran yang diharapkan:

      Apply complete! Resources: 1 added, 0 changed, 1 destroyed.
      
      Outputs:
      
      namespace_id = cn-hangzhou:admin

    Namespace SAE telah dibuat.

  7. Verifikasi

Jalankan perintah terraform show

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

terraform show

image

Konsol SAE

Masuk ke Konsol SAE untuk melihat namespace yang telah dibuat.

image

Perbarui Namespace

Dalam contoh ini, nama namespace yang berada di wilayah China (Hangzhou) diubah dari admin menjadi prod.

  1. Buka file main.tf dan ubah nilai default variabel namespace_name dari "admin" menjadi "prod".

provider "alicloud" {
  region = var.region_id
}

# Tentukan wilayah. Nilai default adalah cn-hangzhou
variable "region_id" {
  type    = string
  default = "cn-hangzhou"
}

# Tentukan deskripsi namespace. Nilai default adalah "a namespace sample"
variable "namespace_description" {
  description = "Deskripsi Namespace"
  default     = "a namespace sample"
}

# Ubah nama namespace menjadi "prod"
variable "namespace_name" {
  description = "Nama Namespace"
  type        = string
  default     = "prod"
}

# Tentukan ID namespace. Nilai default adalah "cn-hangzhou:dev"
variable "namespace_id" {
  description = "ID Namespace"
  type        = string
  default     = "cn-hangzhou:admin"
}

resource "alicloud_sae_namespace" "default" {
  namespace_description = var.namespace_description
  namespace_id          = var.namespace_id
  namespace_name        = var.namespace_name
}

output "namespace_id" {
  value       = alicloud_sae_namespace.default.namespace_id
  description = "ID dari namespace yang dibuat."
}
  1. Jalankan perintah berikut untuk menginisialisasi lingkungan runtime Terraform.

    terraform init

    Jika kode berikut dikembalikan, Terraform telah diinisialisasi:

    Terraform telah berhasil diinisialisasi!
    
    Anda sekarang 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.
  2. Jalankan perintah berikut untuk menerapkan perubahan. Masukkan yes saat diminta dan tekan Enter. Tunggu hingga perintah selesai:

terraform apply

Keluaran yang diharapkan:

alicloud_sae_namespace.default: Memodifikasi... [id=cn-hangzhou:admin]
alicloud_sae_namespace.default: Modifikasi selesai setelah 1s [id=cn-hangzhou:admin]

Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Outputs:

namespace_id = "cn-hangzhou:admin"

Nama namespace diubah menjadi prod.

Jalankan perintah terraform show

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

terraform show

image

Konsol SAE

Masuk ke Konsol SAE untuk melihat namespace.

image

Hapus Namespace

Dalam contoh ini, namespace yang berada di wilayah China (Hangzhou) dihapus. Nama namespace adalah prod dan ID namespace adalah cn-hangzhou:admin.

  1. Jalankan perintah berikut di direktori proyek untuk mengeksekusi file konfigurasi. Untuk informasi lebih lanjut tentang terraform destroy, lihat Perintah Umum.

    terraform destroy

    Keluaran yang diharapkan:

    alicloud_sae_namespace.default: Menyegarkan state... [id=cn-hangzhou:admin]
    
    Terraform menggunakan penyedia yang dipilih untuk menghasilkan rencana eksekusi berikut. Tindakan sumber daya ditunjukkan dengan simbol berikut:
      - hapus
    
    Terraform akan melakukan tindakan berikut:
    
      # alicloud_sae_namespace.default akan dihapus
      - resource "alicloud_sae_namespace" "default" {
          - enable_micro_registration = true -> null
          - id                        = "cn-hangzhou:admin" -> null
          - namespace_description     = "a namespace sample" -> null
          - namespace_id              = "cn-hangzhou:admin" -> null
          - namespace_name            = "prod" -> null
          - namespace_short_id        = "admin" -> null
        }
    
    Rencana: 0 untuk ditambahkan, 0 untuk diubah, 1 untuk dihapus.
    
    Perubahan pada Outputs:
      - namespace_id = "cn-hangzhou:admin" -> null
    
    Apakah Anda benar-benar ingin menghapus semua sumber daya?
      Terraform akan menghapus semua infrastruktur yang dikelola, seperti yang ditunjukkan di atas.
      Tidak ada pembatalan. Hanya 'yes' yang akan diterima untuk konfirmasi.
    
      Masukkan nilai: yes
    
    alicloud_sae_namespace.default: Menghapus... [id=cn-hangzhou:admin]
    alicloud_sae_namespace.default: Penghapusan selesai setelah 1s
    
    Hapus selesai! Sumber daya: 1 dihapus.

    Namespace telah dihapus.

Kode Contoh Lengkap

Catatan

Anda dapat menjalankan kode contoh berikut dalam topik ini hanya dengan beberapa klik. Untuk informasi lebih lanjut, lihat Terraform Explorer.

provider "alicloud" {
  region = var.region_id
}

# Tentukan wilayah. Nilai default adalah cn-hangzhou
variable "region_id" {
  type    = string
  default = "cn-hangzhou"
}

# Tentukan deskripsi namespace. Nilai default adalah "a namespace sample"
variable "namespace_description" {
  description = "Deskripsi Namespace"
  default     = "a namespace sample"
}

# Tentukan nama namespace. Nilai default adalah "admin"
variable "namespace_name" {
  description = "Nama Namespace"
  type        = string
  default     = "admin"
}

# Tentukan ID namespace. Nilai default adalah "cn-hangzhou:admin"
variable "namespace_id" {
  description = "ID Namespace"
  type        = string
  default     = "cn-hangzhou:admin"
}

resource "alicloud_sae_namespace" "default" {
  namespace_description = var.namespace_description
  namespace_id          = var.namespace_id
  namespace_name        = var.namespace_name
}

output "namespace_id" {
  value       = alicloud_sae_namespace.default.namespace_id
  description = "ID dari namespace yang dibuat."
}

Referensi