Todos os produtos
Search
Central de documentação

Resource Orchestration Service:Recursos personalizados

Última atualização: Jun 27, 2026

Recursos personalizados permitem incorporar lógica de configuração personalizada em modelos do Resource Orchestration Service (ROS), estendendo suas stacks para incluir recursos além dos tipos nativos do ROS.

O ROS executa a lógica de recursos personalizados sempre que você cria, atualiza (caso tenha modificado os recursos personalizados) ou exclui uma stack. Por exemplo, se o ROS não oferecer suporte nativo a um tipo de recurso, defina-o como recurso personalizado e gerencie-o junto com outros recursos na mesma stack.

Para definir um recurso personalizado, use o tipo de recurso ALIYUN::ROS::CustomResource ou Custom::MyCustomResourceTypeName no modelo. Cada recurso personalizado exige uma propriedade de token de serviço que indica ao ROS para onde enviar as requisições. O token de serviço pode ser um tópico ou fila do Message Service (MNS), uma função do Function Compute ou uma URL HTTP ou HTTPS.

Os recursos personalizados devem enviar respostas para URLs de resposta pré-assinadas. Se um recurso personalizado não conseguir responder, a operação da stack falhará. Use ResponseURL para acesso à Internet e InnerResponseURL para a rede interna da Alibaba Cloud.

Como funcionam os recursos personalizados

As operações de recursos personalizados envolvem três partes:

  • desenvolvedor do modelo

    • Crie um modelo que inclui um tipo de recurso personalizado, especificando o token de serviço e todos os dados de entrada.

  • provedor do recurso personalizado

    • É proprietário do recurso personalizado e determina como processar e responder às requisições do ROS. O provedor deve fornecer um token de serviço ao desenvolvedor do modelo.

  • ROS

    • Envia uma requisição para o token de serviço especificado no modelo durante uma operação de stack e aguarda uma resposta antes de prosseguir.

O desenvolvedor do modelo e o provedor do recurso personalizado podem ser a mesma pessoa ou entidade. O processo geral é o seguinte:

  1. Defina um recurso personalizado em um modelo contendo um token de serviço e parâmetros opcionais de dados de entrada. O token de serviço é sempre obrigatório.

    O token de serviço especifica para onde o ROS envia requisições, como um ARN de tópico MNS ou um ARN de função do Function Compute. Para mais informações, consulte ALIYUN::ROS::CustomResource. O provedor do recurso personalizado define o token de serviço e a estrutura dos dados de entrada.

  2. Quando uma operação de stack cria, atualiza ou exclui um recurso personalizado, o ROS envia uma requisição para o token de serviço especificado. O token de serviço pode estar em qualquer região.

    A requisição inclui o tipo de requisição e uma URL pré-assinada para a resposta. Para mais informações, consulte Objetos de requisição de recurso personalizado.

    O exemplo a seguir mostra uma requisição do ROS:

    {
       "RequestType" : "Create",
       "RequestId" : "unique id for this create request",
       "ResponseURL" : "pre-signed-url-for-create-response",
       "InnerResponseURL" : "pre-signed-inner-url-for-create-response",
       "ResourceType" : "Custom::MyCustomResourceType",
       "LogicalResourceId" : "name of resource in template",
       "StackId" : "stack id",
       "StackName" : "stack name",
       "ResourceOwnerId": "resource owner id",
       "CallerId": "caller id",
       "RegionId": "region id",
       "ResourceProperties" : {
          "key1" : "string",
          "key2" : [ "list" ],
          "key3" : { "key4" : "map" }
       }
    }
    						
  3. Processe a requisição e retorne uma resposta SUCCESS ou FAILED para a URL pré-assinada. A resposta contém dados formatados em JSON.

    A resposta pode incluir pares nome-valor acessíveis ao desenvolvedor do modelo. Por exemplo, ela pode conter dados de saída em caso de sucesso ou uma mensagem de erro em caso de falha. Para mais informações, consulte Objetos de resposta de recurso personalizado.

    O provedor do recurso personalizado deve escutar e responder às requisições. Por exemplo, ele deve lidar com notificações de tópicos MNS enviadas para um ARN de tópico específico. O ROS aguarda a resposta na URL pré-assinada.

    O exemplo a seguir mostra uma resposta de recurso personalizado:

    {
       "Status" : "SUCCESS",
       "RequestId" : "unique id for this create request (copied from request)",
       "LogicalResourceId" : "name of resource in template (copied from request)",
       "StackId" : "stack id (copied from request)",
       "PhysicalResourceId" : "required vendor-defined physical id that is unique for that vendor",
       "Data" : {
          "keyThatCanBeUsedInGetAtt1" : "data for key 1",
          "keyThatCanBeUsedInGetAtt2" : "data for key 2"
       }
    }
  4. Após receber uma resposta SUCCESS, o ROS prossegue com a operação da stack. Uma resposta FAILED ou a ausência de resposta causa falha na operação. Os dados de saída do recurso personalizado são armazenados na URL pré-assinada e o desenvolvedor do modelo pode recuperá-los usando a função Fn::GetAtt.