Tous les produits
Search
Centre de documentation

Serverless App Engine:Utiliser Terraform pour gérer les namespaces SAE

Dernière mise à jour :Sep 21, 2026

Un namespace Serverless App Engine (SAE) vous permet de diviser logiquement vos applications en environnements tels que le test, le développement, la préproduction et la production. Utilisez Terraform pour créer, mettre à jour et supprimer des namespaces SAE.

Remarque

Exécutez directement l'exemple de code de ce tutoriel dans Terraform Explorer.

Prérequis

  • Votre compte Alibaba Cloud dispose de toutes les autorisations sur l'ensemble de ses ressources. La divulgation des identifiants de ce compte présente un risque de sécurité important. Nous vous recommandons d'utiliser un utilisateur RAM et de créer une paire AccessKey dédiée pour cet utilisateur. Pour plus d'informations, consultez les rubriques Créer un utilisateur RAM et Créer une AccessKey.

  • Cette politique accorde les autorisations nécessaires pour créer, supprimer, mettre à jour, afficher et lister les namespaces SAE.

    Attachez la politique minimale suivante à votre utilisateur RAM afin de lui accorder les autorisations requises pour ce tutoriel. Pour plus d'informations, consultez la rubrique Gérer les autorisations des utilisateurs RAM.

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "sae:CreateNamespace",
                    "sae:DeleteNamespace",
                    "sae:UpdateNamespace",
                    "sae:GetNamespace",
                    "sae:ListNamespaces"
                ],
                "Resource": "*"
            }
        ]
    }
  • Préparez un environnement d'exécution Terraform. Vous pouvez utiliser l'une des méthodes suivantes :

    • ROS propose un service Terraform géré. Déployez directement des modèles Terraform depuis la console ROS. Pour plus d'informations, consultez la rubrique Créer une stack Terraform.

    • Utiliser Terraform dans Terraform Explorer : Alibaba Cloud met à disposition un environnement d'exécution en ligne pour Terraform. Connectez-vous pour tester Terraform sans installation. Cette méthode est idéale pour des tests rapides et pratiques, sans frais.

    • Utiliser Terraform pour créer rapidement des ressources : Alibaba Cloud Shell est livré avec Terraform préinstallé et des identifiants d'authentification préconfigurés. Exécutez directement les commandes Terraform dans Cloud Shell. Cette méthode offre un moyen rapide, pratique et peu coûteux d'utiliser Terraform.

    • Installer et configurer Terraform sur votre machine locale : Cette méthode convient aux scénarios où la connectivité réseau est faible ou lorsqu'un environnement de développement personnalisé est requis.

Ressources

Créer un namespace

L'exemple suivant crée un namespace nommé admin avec l'ID cn-hangzhou:admin dans la région Chine (Hangzhou).

  1. Créez un dossier de projet nommé terraform pour stocker les ressources Terraform.

  2. Accédez au répertoire du projet :

    cd terraform
  3. Créez un fichier de configuration nommé main.tf.

    provider "alicloud" {
      region = var.region_id
    }
    # Define a variable for the region. The default value is cn-hangzhou.
    variable "region_id" {
      type    = string
      default = "cn-hangzhou"
    }
    # Define a variable for the namespace description. The default value is "a namespace sample".
    variable "namespace_description" {
      description = "Namespace Description"
      default     = "a namespace sample"
    }
    # Define a variable for the namespace name. The default value is "admin".
    variable "namespace_name" {
      description = "Namespace Name"
      type        = string
      default     = "admin"
    }
    # Define a variable for the namespace ID. The default value is "cn-hangzhou:admin".
    variable "namespace_id" {
      description = "Namespace ID"
      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 = "The ID of the created namespace."
    }
  4. Initialisez l'environnement d'exécution Terraform.

    terraform init
  5. Sortie attendue :

    Initializing the backend...
    Initializing provider plugins...
    - Checking for available provider plugins...
    - Downloading plugin for provider "alicloud" (hashicorp/alicloud) 1.233.0...
    The following providers do not have any version constraints in configuration,
    so the latest version was installed.
    To prevent automatic upgrades to new major versions that may contain breaking
    changes, it is recommended to add version = "..." constraints to the
    corresponding provider blocks in configuration, with the constraint strings
    suggested below.
    * provider.alicloud: version = "~> 1.233"
    Warning: registry.terraform.io: For users on Terraform 0.13 or greater, this provider has moved to aliyun/alicloud. Please update your source in required_providers.
    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.
  6. Créez le namespace SAE.

    1. Appliquez la configuration. Lorsque vous y êtes invité, saisissez yes et appuyez sur Enter.

      terraform apply

      Sortie attendue :

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

    Le namespace est créé.

  7. Vérifiez que le namespace a bien été créé.

  8. Commande Terraform show

    Inspectez l'état des ressources gérées par Terraform :

    terraform show
    shell@Alicloud:~/serverlesstest$ terraform show
    # alicloud_sae_namespace.default:
    resource "alicloud_sae_namespace" "default" {
        enable_micro_registration = true
        id                        = "cn-hangzhou:admin"
        namespace_description     = "a namespace sample"
        namespace_id              = "cn-hangzhou:admin"
        namespace_name            = "admin"
        namespace_short_id        = "admin"
    }
    Outputs:
    namespace_id = "cn-hangzhou:admin"

    Console SAE

    Connectez-vous à la console Serverless App Engine (SAE) pour afficher le namespace créé.

    Sur la page Namespaces, vérifiez que le namespace admin est répertorié avec l'ID cn-hangzhou:admin.

    Mettre à jour le namespace

    L'exemple suivant met à jour le nom du namespace dans la région Chine (Hangzhou), en le faisant passer de admin à prod.

    1. Ouvrez le fichier main.tf et modifiez la valeur par défaut de la variable namespace_name de « admin » à « prod ».

    provider "alicloud" {
      region = var.region_id
    }
    # Define a variable for the region. The default value is cn-hangzhou.
    variable "region_id" {
      type    = string
      default = "cn-hangzhou"
    }
    # Define a variable for the namespace description. The default value is "a namespace sample".
    variable "namespace_description" {
      description = "Namespace Description"
      default     = "a namespace sample"
    }
    # Change the default namespace name to "prod".
    variable "namespace_name" {
      description = "Namespace Name"
      type        = string
      default     = "prod"
    }
    # Define a variable for the namespace ID. The default value is "cn-hangzhou:admin".
    variable "namespace_id" {
      description = "Namespace ID"
      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 = "The ID of the created namespace."
    }
    1. Initialisez l'environnement d'exécution Terraform.

      terraform init

      La sortie confirme que Terraform a été initialisé.

      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.
    2. Appliquez les modifications. Lorsque vous y êtes invité, saisissez yes et appuyez sur Enter.

    terraform apply

    Sortie attendue :

    alicloud_sae_namespace.default: Modifying... [id=cn-hangzhou:admin]
    alicloud_sae_namespace.default: Modifications complete after 1s [id=cn-hangzhou:admin]
    Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
    Outputs:
    namespace_id = "cn-hangzhou:admin"

    Le nom du namespace est mis à jour vers prod.

    Commande Terraform show

    Inspectez l'état des ressources gérées par Terraform :

    terraform show
    shell@Alicloud:~/serverlesstest$ terraform show
    # alicloud_sae_namespace.default:
    resource "alicloud_sae_namespace" "default" {
        enable_micro_registration = true
        id                       = "cn-hangzhou:admin"
        namespace_description    = "a namespace sample"
        namespace_id             = "cn-hangzhou:admin"
        namespace_name           = "prod"
        namespace_short_id       = "admin"
    }
    Outputs:
    namespace_id = "cn-hangzhou:admin"

    Console SAE

    Connectez-vous à la console Serverless App Engine (SAE) pour afficher le namespace mis à jour.

    La liste des namespaces affiche désormais le namespace sous le nom prod avec l'ID cn-hangzhou:admin, ce qui confirme la mise à jour.

    Supprimer le namespace

    L'exemple suivant supprime le namespace nommé prod avec l'ID cn-hangzhou:admin de la région Chine (Hangzhou).

    1. Dans le répertoire du projet, détruisez le namespace. Pour plus d'informations sur la commande terraform destroy, consultez la rubrique Commandes courantes.

      terraform destroy

      Sortie attendue :

      alicloud_sae_namespace.default: Refreshing state... [id=cn-hangzhou:admin]
      Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
        - destroy
      Terraform will perform the following actions:
        # alicloud_sae_namespace.default will be destroyed
        - 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
          }
      Plan: 0 to add, 0 to change, 1 to destroy.
      Changes to Outputs:
        - namespace_id = "cn-hangzhou:admin" -> null
      Do you really want to destroy all resources?
        Terraform will destroy all your managed infrastructure, as shown above.
        There is no undo. Only 'yes' will be accepted to confirm.
        Enter a value: yes
      alicloud_sae_namespace.default: Destroying... [id=cn-hangzhou:admin]
      alicloud_sae_namespace.default: Destruction complete after 1s
      Destroy complete! Resources: 1 destroyed.

      Le namespace est supprimé.

    Exemple complet

    Remarque

    Exécutez directement l'exemple de code de ce tutoriel dans Terraform Explorer.

    provider "alicloud" {
      region = var.region_id
    }
    # Define a variable for the region. The default value is cn-hangzhou.
    variable "region_id" {
      type    = string
      default = "cn-hangzhou"
    }
    # Define a variable for the namespace description. The default value is "a namespace sample".
    variable "namespace_description" {
      description = "Namespace Description"
      default     = "a namespace sample"
    }
    # Define a variable for the namespace name. The default value is "admin".
    variable "namespace_name" {
      description = "Namespace Name"
      type        = string
      default     = "admin"
    }
    # Define a variable for the namespace ID. The default value is "cn-hangzhou:admin".
    variable "namespace_id" {
      description = "Namespace ID"
      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 = "The ID of the created namespace."
    }

    Références