すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:ACS::ExecuteHttpRequest

最終更新日:Jul 04, 2025

説明

ACS::ExecuteHttpRequest 操作を使用すると、運用および保守 (O&M) タスク中に外部 HTTP/HTTPS リクエストを呼び出し、クラウド リソース O&M タスクと外部 HTTP サービス間の相互作用を容易にすることができます。

ACS::ExecuteHttpRequest 操作は、以下のシナリオで使用できます。

  1. API 統合: ACS::ExecuteHttpRequest 操作を使用して、サードパーティ サービスの API を呼び出し、情報のクエリ、操作の実行、またはサードパーティ サービスの統合を行うことができます。

  2. カスタム通知: スクリプト実行中の特定の段階で通知を送信する場合、ACS::ExecuteHttpRequest 操作を使用して、指定された Webhook または通知サービスに HTTP リクエストを送信できます。これにより、メール、ショートメッセージ、またはプッシュ通知で通知を送信できます。

  3. データ収集とレポート: ACS::ExecuteHttpRequest 操作を使用して、O&M タスクに関する情報をリモートサーバーまたはデータプラットフォームに送信し、監査、監視、およびレポート作成を行うことができます。

  4. 自動プロセス起動: CloudOps Orchestration Service(OOS)テンプレートの実行時に、ACS::ExecuteHttpRequest 操作を使用して、他の自動ツールまたはスクリプトの実行をトリガーできます。たとえば、継続的インテグレーション/継続的デプロイメント(CI/CD)システムでデプロイメントプロセスを開始したり、他の外部システムで O&M タスクを開始したりできます。

  5. 外部検証と承認: O&M プロセス中に ID を認証し、操作権限を検証する必要がある場合があります。この場合、ACS::ExecuteHttpRequest 操作を使用して、外部認証システムにリクエストを送信し、オペレーターの ID を検証したり、必要な操作権限を検証したりできます。

  6. 非同期タスクの完了を待機する、または呼び出し結果を確認する: HTTP リクエストに非同期タスクが含まれる一部のシナリオでは、レスポンス内の特定のフィールドをポーリングして確認するか、呼び出し結果を確認する必要があります。 WaitFor/CheckFor フィールドを使用して、これらの要件を実装できます。

構文

Tasks:
  - Name: executeHttpRequestExample
    Action: ACS::ExecuteHttpRequest
    Properties:
      Method: POST # オプション。リクエストの送信に使用する HTTP メソッド。有効な値: POST および GET。デフォルト値: POST。
      URL: 'https://example.com' # 必須。特定のリソースの場所を指定するために使用される HTTP URL。
      Headers: # オプション。HTTP リクエスト ヘッダー。
        Content-Type: 'application/json'
      Query: # オプション。HTTP リクエスト パラメーター。
        Parameter1: value1
        Parameter2: value2
      Body: # オプション。HTTP リクエスト本文。このパラメーターは、HTTP メソッドが POST の場合にのみ有効です。
        Parameter3: value3
        Parameter4: value4
      CheckFor: # オプション。HTTP 応答結果を確認します。
        # Rules の下に複数の比較グループを追加できます。グループ間の関係は「AND」です。
        Rules:
          - PropertySelector: "jq selector" # JQ 構文
            Operator: "Equals" # 比較演算子。有効な値: "Equals"、"In"、"NotIn"
            Value: "1" # 期待値
      WaitFor: # オプション。HTTP 応答結果をポーリングして確認します。
        # Rules は上記と同じです
        Rules:
          - PropertySelector: "jq selector" 
            Operator: "Equals"
            Value: "1"
        FailRules:
        # 条件が満たされると、タスクはすぐに失敗します
          - PropertySelector: "jq selector" 
            Operator: "Equals"
            Value: "1"
        # Retry モジュールは、リトライ関連のパラメーターを設定します
        Retry:
          Retries: # オプション。最大リトライ回数。値は 5 などの正の整数である必要があります。有効な値: 0 ~ 300。デフォルト値: 10。
          DelayType: # Exponential(デフォルト)、Constant、Linear。Exponential タイプの場合、再試行間隔は 2 ^ 回数(再試行回数) です。Constant タイプの場合、再試行間隔は Delay に固定されます。Linear タイプの場合、再試行間隔は Delay + BackOff * 回数(再試行回数) です。
          Delay: # 再試行間隔。値は 10 などの正の整数である必要があります。値 10 は、再試行間隔が 10 秒であることを示します。有効な値: 1 ~ 3600。デフォルト値: 2。このパラメーターは、DelayType 属性が Constant または Linear に設定されている場合に必須です。
          BackOff: # 再試行間隔の補正。値は正の整数である必要があります。有効な値: 1 ~ 3600。デフォルト値: 2。このパラメーターは、DelayType 属性が Linear に設定されている場合に必須です。
          MaxRetryInterval: # 最大再試行間隔。値は正の整数である必要があります。有効な値: 1 ~ 1800。デフォルト値: 1800。単位: 秒。
    Outputs:
      OutputParameter1:
        ValueSelector: 'jq selector' # 返すデータを選択するための jQuery セレクター。jQuery セレクターは、API 操作によって返された JSON データから情報を抽出します。 jq 構文の詳細については、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"
        }
      }
    }
  ]
}

次のサンプルコードは、GitHub Actions をトリガーして指定された Elastic Compute Service(ECS)インスタンスをデプロイするために使用される OOS テンプレートで使用するコードブランチを指定する HTTP リクエストを送信する方法の例を示しています。

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": {}
      }
    }
  ]
}