Todos os produtos
Search
Central de documentação

Resource Orchestration Service:ALIYUN::ROS::WaitConditionHandle

Última atualização: Aug 29, 2026

O ALIYUN::ROS::WaitConditionHandle recebe sinais e atua em conjunto com o ALIYUN::ROS::WaitCondition para controlar o fluxo de execução da stack. Por exemplo, ao criar uma instância ECS, o sistema envia um sinal durante a execução dos dados do usuário.

Sintaxe

{
  "Type": "ALIYUN::ROS::WaitConditionHandle",
  "Properties": {
    "Mode": String,
    "Count": Integer
  }
}

Propriedades

Propriedade

Tipo

Obrigatória

Editável

Descrição

Restrição

Mode

String

Não

Sim

Modo de exclusão de sinais antes das atualizações de recursos.

Valores válidos:

  • Increment: exclui todos os sinais existentes antes da atualização do recurso.

    Nota

    Durante as atualizações, a contagem esperada de sinais corresponde ao valor de Count no ALIYUN::ROS::WaitCondition.

  • Full: exclui os sinais existentes antes da atualização do recurso apenas se a propriedade Count entrar em vigor.

    Nota

    Durante as atualizações, a contagem esperada de sinais = valor de Count no ALIYUN::ROS::WaitCondition - sinais restantes após a exclusão.

Count

Integer

Não

Sim

Quando Mode está definido como Full, o sistema exclui os sinais com IDs inteiros maiores que o valor de Count antes da atualização do recurso.

Valor padrão: -1.

A propriedade Count entra em vigor quando:

  • Mode está definido como Full.

  • Count é igual ou superior a 0.

Se Count entrar em vigor, o sistema excluirá os sinais com IDs inteiros maiores que o valor de Count antes da atualização. Caso algum ID de sinal não seja inteiro, a atualização falhará.

Nota

Para dimensionamento elástico via atualizações de stack, defina Count no ALIYUN::ROS::WaitConditionHandle para corresponder ao valor de Count no ALIYUN::ROS::WaitCondition.

Valores de retorno

Fn::GetAtt

  • CurlCli: comando cURL gerado pelo ALIYUN::ROS::WaitConditionHandle. Execute este comando para enviar os resultados da execução dos dados do usuário ao ROS.

  • WindowsCurlCli: prefixo do comando cURL para Windows. Instale o curl.exe e adicione-o ao PATH antes de usar. Acrescente -d "{\"status\": \" SUCCESS \"} para sucesso ou -d "{\"status\": \" FAILURE \"} para falha.

  • PowerShellCurlCli: prefixo do comando cURL para PowerShell 3.0 ou posterior. Verifique sua versão com $PSVersionTable.PSVersion. Acrescente -Body '{"status": " SUCCESS "} para sucesso ou -Body '{"status": " FAILURE "} para falha.

  • Headers: cabeçalho da requisição HTTP POST para envio de sinais de status de execução ao seu programa.

  • URL: URL da requisição HTTP POST para envio de sinais de status de execução ao seu programa.

Nota
  • Use o parâmetro id (STRING) no corpo da requisição do CurlCli, WindowsCurlCli ou PowerShellCurlCli para especificar um ID de sinal.

    Exemplo: -d "{\"status\": \" SUCCESS \", \"id\": \"test\".

    Sinais com o mesmo ID sobrescrevem os anteriores.

    Se nenhum ID de sinal for especificado, o ROS atribui automaticamente um ID inteiro igual à contagem de sinais existentes + 1.

  • Use o parâmetro reason (STRING) para indicar o motivo do sucesso ou da falha na execução. Esse valor aparece no evento da stack que registra a notificação do sinal.

    Exemplo: -d "{\"status\": \" SUCCESS \", \"reason\": \"nginx is installed successfully.\"}".

    O valor de reason fica registrado no evento correspondente da stack.

  • Use o parâmetro data (STRING) para anexar dados ao sinal. Recupere essas informações por meio dos valores de retorno Data, ErrorData ou JoinedErrorData do ALIYUN::ROS::WaitCondition.

    Exemplo: -d "{\"id\" : \"ssh_pub_key\", \"data\" : \"$pub_key\"}".

  • O parâmetro status define o tipo de sinal: SUCCESS, FAILURE ou WARNING. Os tipos de sinal determinam o resultado da operação do recurso, seguindo esta ordem de prioridade decrescente:

    • Um sinal FAILURE causa falha na operação do recurso.

    • Se a quantidade de sinais recebidos dentro do período de tempo limite for inferior ao valor de Count, a operação expira.

    • Caso a contagem de sinais atinja ou ultrapasse o valor de Count, mas todos sejam do tipo WARNING, a operação falhará.

    • Nos demais casos, a operação será bem-sucedida.

Exemplos

  • Formato YAML

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      InstanceId:
        Type: String
        AssociationProperty: ALIYUN::ECS::Instance::InstanceId
    Resources:
      InstallNginx:
        Type: 'ALIYUN::ECS::RunCommand'
        Properties:
          Type: RunShellScript
          CommandContent:
            Fn::Sub: |
                #!/bin/sh
                yum install -y nginx
                systemctl restart nginx
                if [[ $? -eq 0 ]];
                then
                ${InstallNginxWaitConditionHandle.CurlCli} --data-binary "{\"status\": \"SUCCESS\", \"data\": \"Nginx is installed successfully.\"}"
                else
                ${InstallNginxWaitConditionHandle.CurlCli} --data-binary "{\"status\": \"FAILURE\", \"reason\": \"Failed to install and start nginx.\"}"
                fi
          Name: InstallNginxScript
          InstanceIds:
            - Ref:
                InstanceId
          Timeout: 60
      InstallNginxWaitConditionHandle:
        Type: 'ALIYUN::ROS::WaitConditionHandle'
      InstallNginxWaitCondition:
        Type: 'ALIYUN::ROS::WaitCondition'
        Properties:
          Handle:
            Ref: InstallNginxWaitConditionHandle
          Timeout: 60
    Outputs:
      InstallNginxData:
        Description: Received the data sent by the first ecs, JSON serialized dict containing
          data associated with wait condition signals sent to the handle.
        Value:
          Fn::GetAtt:
          - InstallNginxWaitCondition
          - Data
  • Formato JSON

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Parameters": {
        "InstanceId": {
          "Type": "String",
          "AssociationProperty": "ALIYUN::ECS::Instance::InstanceId"
        }
      },
      "Resources": {
        "InstallNginx": {
          "Type": "ALIYUN::ECS::RunCommand",
          "Properties": {
            "Type": "RunShellScript",
            "CommandContent": {
              "Fn::Sub": "#!/bin/sh\nyum install -y nginx\nsystemctl restart nginx\nif [[ $? -eq 0 ]];\nthen\n${InstallNginxWaitConditionHandle.CurlCli} --data-binary \"{\\\"status\\\": \\\"SUCCESS\\\", \\\"data\\\": \\\"Nginx is installed successfully.\\\"}\"\nelse\n${InstallNginxWaitConditionHandle.CurlCli} --data-binary \"{\\\"status\\\": \\\"FAILURE\\\", \\\"reason\\\": \\\"Failed to install and start nginx.\\\"}\"\nfi\n"
            },
            "Name": "InstallNginxScript",
            "InstanceIds": [
              {
                "Ref": "InstanceId"
              }
            ],
            "Timeout": 60
          }
        },
        "InstallNginxWaitConditionHandle": {
          "Type": "ALIYUN::ROS::WaitConditionHandle"
        },
        "InstallNginxWaitCondition": {
          "Type": "ALIYUN::ROS::WaitCondition",
          "Properties": {
            "Handle": {
              "Ref": "InstallNginxWaitConditionHandle"
            },
            "Timeout": 60
          }
        }
      },
      "Outputs": {
        "InstallNginxData": {
          "Description": "Received the data sent by the first ecs, JSON serialized dict containing data associated with wait condition signals sent to the handle.",
          "Value": {
            "Fn::GetAtt": [
              "InstallNginxWaitCondition",
              "Data"
            ]
          }
        }
      }
    }