Tous les produits
Search
Centre de documentation

CloudOps Orchestration Service:ACS::ExecuteHttpRequest

Dernière mise à jour :Aug 11, 2026

Appelez des endpoints HTTP/HTTPS externes depuis les tâches d'exploitation et de maintenance (O&M) pour intégrer des services tiers, envoyer des notifications, collecter des données et vérifier les résultats.

Description

Cette action exécute des requêtes HTTP/HTTPS externes lors des tâches O&M, permettant l'interaction entre la gestion des ressources cloud et les services HTTP externes.

Scénarios d'utilisation typiques :

  1. Intégration d'API : utilisez l'action ACS::ExecuteHttpRequest pour appeler les API de services tiers, interroger des informations, effectuer des opérations ou intégrer ces services.

  2. Notification personnalisée : pour envoyer une notification à une étape précise de l'exécution d'un script, servez-vous de l'action ACS::ExecuteHttpRequest afin d'adresser une requête HTTP à un webhook ou à un service de notification spécifié. La notification peut ainsi être diffusée par e-mail, SMS ou notification push.

  3. Collecte et reporting de données : transmettez les informations relatives à une tâche O&M vers un serveur distant ou une plateforme de données pour l'audit, la surveillance et le reporting.

  4. Déclenchement automatisé de processus : lancez l'exécution d'autres outils automatisés ou scripts lors de l'exécution d'un modèle CloudOps Orchestration Service (OOS). Par exemple, démarrez un processus de déploiement dans un système d'intégration continue/déploiement continu (CI/CD) ou initiez des tâches O&M dans d'autres systèmes externes.

  5. Vérification et autorisation externes : si l'authentification des identités et la vérification des autorisations sont nécessaires durant le processus O&M, utilisez l'action ACS::ExecuteHttpRequest pour envoyer une requête à un système d'authentification externe. Cela permet de valider l'identité de l'opérateur ou de confirmer les autorisations requises.

  6. Attente de la fin d'une tâche asynchrone ou vérification des résultats d'appel : dans les scénarios impliquant des tâches asynchrones via des requêtes HTTP, il est souvent nécessaire d'interroger périodiquement certains champs de la réponse ou de vérifier les résultats. Utilisez les champs WaitFor ou CheckFor pour répondre à ces besoins.

Syntaxe

Tasks:
  - Name: executeHttpRequestExample
    Action: ACS::ExecuteHttpRequest
    Properties:
      Method: POST # Optional. The HTTP method used to submit the request. Valid values: POST and GET. Default value: POST.
      URL: 'https://example.com' # Required. The HTTP URL used to specify the location of a specific resource.
      Headers: # Optional. The HTTP request headers.
        Content-Type: 'application/json'
      Query: # Optional. The HTTP request parameters.
        Parameter1: value1
        Parameter2: value2
      Body: # Optional. The HTTP request body. This parameter is valid only if the HTTP method is POST.
        Parameter3: value3
        Parameter4: value4
      CheckFor: # Optional. Verifies the HTTP response results.
        # You can add multiple comparison groups under Rules. The relationship between groups is "AND".
        Rules:
          - PropertySelector: "jq selector" # JQ syntax
            Operator: "Equals" # Comparison operator. Valid values: "Equals", "In", "NotIn"
            Value: "1" # Expected value
      WaitFor: # Optional. Polls and verifies the HTTP response results.
        # Rules are the same as above
        Rules:
          - PropertySelector: "jq selector" 
            Operator: "Equals"
            Value: "1"
        FailRules:
        # When conditions are met, the task fails immediately
          - PropertySelector: "jq selector" 
            Operator: "Equals"
            Value: "1"
        # The Retry module configures retry-related parameters
        Retry:
          Retries: # Optional. The maximum number of retries. The value must be a positive integer, such as 5. Valid values: 0 to 300. Default value: 10.
          DelayType: # Exponential(Default), Constant, Linear. For Exponential type, the retry interval is: 2 ^ times(retry count); For Constant type, the retry interval is fixed at Delay; For Linear type, the retry interval is: Delay + BackOff * times(retry count).
          Delay: # The retry interval. The value must be a positive integer, such as 10. A value of 10 indicates that the retry interval is 10 seconds. Valid values: 1 to 3600. Default value: 2. This parameter is required if the DelayType attribute is set to Constant or Linear.
          BackOff: # The retry interval compensation. The value must be a positive integer. Valid values: 1 to 3600. Default value: 2. This parameter is required if the DelayType attribute is set to Linear.
          MaxRetryInterval: # The maximum retry interval. The value must be a positive integer. Valid values: 1 to 1800. Default value: 1800. Unit: seconds.
    Outputs:
      OutputParameter1:
        ValueSelector: 'jq selector' # The jQuery selector for selecting the data to return. The jQuery selector extracts information from the JSON data returned by the API operation. For more information about the jq syntax, visit https://stedolan.github.io/jq/.
        Type: String/Boolean/List/Number/Object
{
  "Tasks": [
    {
      "Name": "executeHttpRequestExample",
      "Action": "ACS::ExecuteHttpRequest",
      "Properties": {
        "Method": "POST",
        "URL": "https://example.com",
        "Headers": {
          "Content-Type": "application/json"
        },
        "Query": {
          "Parameter1": "value1",
          "Parameter2": "value2"
        },
        "Body": {
          "Parameter3": "value3",
          "Parameter4": "value4"
        },
        "CheckFor": {
          "Rules": [
            {
              "PropertySelector": "jq selector",
              "Operator": "Equals",
              "Value": "1"
            }
          ]
        },
        "WaitFor": {
          "Rules": [
            {
              "PropertySelector": "jq selector",
              "Operator": "Equals",
              "Value": "1"
            }
          ],
          "FailRules": [
            {
              "PropertySelector": "jq selector",
              "Operator": "Equals",
              "Value": "1"
            }
          ],
          "Retry": {
            "Retries": null,
            "DelayType": null,
            "Delay": null,
            "BackOff": null,
            "MaxRetryInterval": null
          }
        }
      },
      "Outputs": {
        "OutputParameter1": {
          "ValueSelector": "jq selector",
          "Type": "String/Boolean/List/Number/Object"
        }
      }
    }
  ]
}

Exemples

L'exemple suivant illustre le déclenchement d'un workflow GitHub Actions depuis un modèle OOS afin de déployer des instances Elastic Compute Service (ECS) spécifiques :

FormatVersion: OOS-2019-06-01
Description: 
    en: OOS template for deploying ECS instances using GitHub Actions.
     
Parameters:
  regionId:
    Type: String
    Label:
      en: RegionId
       
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  targets:
    Type: Json
    Label:
      en: TargetInstance
       
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: ALIYUN::ECS::Instance
      RegionId: regionId
      Status: Running
  gitHubBranch:
    Type: String
    Description:
        en: Branch where the deployment will occur.
         
Tasks:
  - Name: getInstance
    Description:
      en: Views the ECS instances
       
    Action: ACS::SelectTargets
    Properties:
      ResourceType: ALIYUN::ECS::Instance
      RegionId: '{{ regionId }}'
      Filters:
        - '{{ targets }}'
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: Instances.Instance[].InstanceId
  - Name: DeployCodeByGitHubAction
    Action: ACS::ExecuteHttpRequest
    Properties:
      Method: POST
      URL: "https://api.github.com/repos/<YOUR-GITHUB-ACCOUNT>/<YOUR-GITHUB-REPO>/actions/workflows/<YOUR-WORKFLOW-ID>/dispatches"
      Headers:
        Accept: application/vnd.github+json
        Authorization: "Bearer <YOUR-TOKEN>"
        X-GitHub-Api-Version: 2022-11-28
      Body: 
        ref: "{{gitHubBranch}}"
        inputs:
          instance_ids: "{{getInstance.instanceIds}}"
{
  "FormatVersion": "OOS-2019-06-01",
  "Description": {
    "en": "OOS template for deploying ECS instances using GitHub Actions.",
     
  },
  "Parameters": {
    "regionId": {
      "Type": "String",
      "Label": {
        "en": "RegionId",
         
      },
      "AssociationProperty": "RegionId",
      "Default": "{{ ACS::RegionId }}"
    },
    "targets": {
      "Type": "Json",
      "Label": {
        "en": "TargetInstance",
         
      },
      "AssociationProperty": "Targets",
      "AssociationPropertyMetadata": {
        "ResourceType": "ALIYUN::ECS::Instance",
        "RegionId": "regionId",
        "Status": "Running"
      }
    },
    "gitHubBranch": {
      "Type": "String",
      "Description": {
        "en": "Branch where the deployment will occur.",
         
      }
    }
  },
  "Tasks": [
    {
      "Name": "getInstance",
      "Description": {
        "en": "Views the ECS instances",
         
      },
      "Action": "ACS::SelectTargets",
      "Properties": {
        "ResourceType": "ALIYUN::ECS::Instance",
        "RegionId": "{{ regionId }}",
        "Filters": [
          "{{ targets }}"
        ]
      },
      "Outputs": {
        "instanceIds": {
          "Type": "List",
          "ValueSelector": "Instances.Instance[].InstanceId"
        }
      }
    },
    {
      "Name": "DeployCodeByGitHubAction",
      "Action": "ACS::ExecuteHttpRequest",
      "Properties": {
        "Method": "POST",
        "URL": "https://api.github.com/repos/<YOUR-GITHUB-ACCOUNT>/<YOUR-GITHUB-REPO>/actions/workflows/<YOUR-WORKFLOW-ID>/dispatches",
        "Headers": {
          "Accept": "application/vnd.github+json",
          "Authorization": "Bearer <YOUR-TOKEN>",
          "X-GitHub-Api-Version": "2022-11-28T00:00:00.000Z"
        },
        "Body": {
          "ref": "{{gitHubBranch}}",
          "inputs": {
            "instance_ids": "{{getInstance.instanceIds}}"
          }
        },
        "Query": {}
      }
    }
  ]
}