Todos os produtos
Search
Central de documentação

Serverless App Engine:Com o Terraform, gerencie namespaces do SAE

Última atualização: Sep 21, 2026

Um namespace do Serverless App Engine (SAE) permite dividir logicamente suas aplicações em ambientes como teste, desenvolvimento, homologação e produção. Com o Terraform, crie, atualize e exclua namespaces do SAE.

Nota

O código de exemplo deste tutorial pode ser executado diretamente no Terraform Explorer.

Pré-requisitos

  • Sua conta Alibaba Cloud tem permissões totais sobre todos os seus recursos. O vazamento de credenciais dessa conta representa um risco significativo à segurança. Recomendamos o uso de um usuário RAM (ram) e a criação de um par de AccessKey (accesskey) dedicado para esse usuário. Para mais informações, consulte Crie um usuário RAM e Crie um AccessKey.

  • Esta política concede permissões para que você crie, exclua, atualize, visualize e liste namespaces do SAE.

    Anexe a seguinte política mínima ao seu usuário RAM para conceder as permissões necessárias para este tutorial. Para mais informações, consulte Gerencie permissões de usuário RAM.

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "sae:CreateNamespace",
                    "sae:DeleteNamespace",
                    "sae:UpdateNamespace",
                    "sae:GetNamespace",
                    "sae:ListNamespaces"
                ],
                "Resource": "*"
            }
        ]
    }
  • Prepare um ambiente de execução do Terraform. Você pode usar um dos seguintes métodos:

    • O ROS fornece um service gerenciado do Terraform. Você pode implantar modelos do Terraform diretamente no ROS console. Para mais informações, consulte Crie uma stack do Terraform.

    • Use o Terraform no Terraform Explorer: A Alibaba Cloud fornece um ambiente de execução online para o Terraform. Você pode fazer login para testar o Terraform sem precisar instalá-lo. Se preferir, instale o Terraform localmente. Este método é ideal para testes rápidos e convenientes, sem custo.

    • Use o Terraform e crie recursos rapidamente: O Alibaba Cloud Shell (cloud) vem com o Terraform pré-instalado e credenciais de autenticação pré-configuradas. Você pode executar comandos do Terraform diretamente no Cloud Shell. Este método oferece uma maneira rápida, conveniente e de baixo custo para usar o Terraform.

    • Instale e configure o Terraform na sua máquina local: Este método é adequado para cenários com conectividade de rede ruim ou quando um ambiente de desenvolvimento personalizado é necessário.

Recursos

Crie um namespace

O exemplo a seguir cria um namespace chamado admin com o ID cn-hangzhou:admin na região China (Hangzhou).

  1. Para iniciar, crie uma pasta de projeto chamada terraform para armazenar recursos do Terraform.

  2. Agora, execute o seguinte comando para acessar o diretório do projeto:

    cd terraform
  3. Em seguida, crie um arquivo de configuração chamado 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. Inicialize o ambiente de execução do Terraform.

    terraform init
  5. Saída esperada:

    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. Execute o seguinte comando e crie o namespace do SAE.

    1. Execute o comando para aplicar a configuração. Quando solicitado, por favor insira yes e pressione Enter.

      terraform apply

      Saída esperada:

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

    O namespace foi criado.

  7. Por favor, verifique e confirme se o namespace foi criado.

Comando show do Terraform

Para inspecionar, execute o seguinte comando para inspecionar o estado do recurso gerenciado pelo 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"

SAE console

Para continuar, acesse o Serverless App Engine (SAE) console e visualize o namespace criado.

Na página Namespaces, verifique se o namespace admin está listado com o ID cn-hangzhou:admin.

Atualize o namespace

Com o exemplo a seguir, atualize o nome do namespace na região China (Hangzhou) de admin para prod.

  1. Abra o arquivo main.tf e defina o valor padrão da variável namespace_name de "admin" para "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. Inicialize o ambiente de execução do Terraform.

    terraform init

    A saída confirma que o Terraform foi inicializado.

    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. Execute o seguinte comando para aplicar as alterações. Quando solicitado, por favor insira yes e pressione Enter.

terraform apply

Saída esperada:

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"

O nome do namespace foi atualizado para prod.

Comando show do Terraform

Para inspecionar, execute o seguinte comando para inspecionar o estado do recurso gerenciado pelo 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"

SAE console

Para continuar, acesse o Serverless App Engine (SAE) console e visualize o namespace atualizado.

A lista de namespaces agora exibe o namespace como prod com o ID cn-hangzhou:admin; confirme a atualização.

Exclua o namespace

Com o exemplo a seguir, exclua o namespace chamado prod com o ID cn-hangzhou:admin da região China (Hangzhou).

  1. No diretório do projeto, execute o seguinte comando para destruir o namespace e exclua o recurso. Para mais informações sobre o comando terraform destroy, consulte Comandos comuns.

    terraform destroy

    Saída esperada:

    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.

    O namespace foi excluído.

Exemplo completo

Nota

O código de exemplo deste tutorial pode ser executado diretamente no 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."
}

Referências