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.
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
alicloud_sae_namespace : Crée et gère un namespace SAE.
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).
Créez un dossier de projet nommé terraform pour stocker les ressources Terraform.
-
Accédez au répertoire du projet :
cd terraform -
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." } -
Initialisez l'environnement d'exécution Terraform.
terraform init -
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. -
Créez le namespace SAE.
-
Appliquez la configuration. Lorsque vous y êtes invité, saisissez
yeset appuyez sur Enter.terraform applySortie attendue :
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: namespace_id = cn-hangzhou:admin
Le namespace est créé.
-
Vérifiez que le namespace a bien été créé.
Ouvrez le fichier main.tf et modifiez la valeur par défaut de la variable
namespace_namede « admin » à « prod ».-
Initialisez l'environnement d'exécution Terraform.
terraform initLa 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. Appliquez les modifications. Lorsque vous y êtes invité, saisissez
yeset appuyez sur Enter.-
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 destroySortie 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é.
Pour plus d'informations sur Terraform, consultez la rubrique Qu'est-ce qu'Alibaba Cloud Terraform ?.
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.
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.
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."
}
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).