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

CloudOps Orchestration Service:ACS::CheckFor

最終更新日:Jan 17, 2025

説明

ACS::CheckFor アクションを使用すると、クラウドリソースが予期された状態にあるかどうかを確認できます。リソースが指定された状態にある場合、タスクは成功します。それ以外の場合、タスクは失敗します。このアクションは、通常、事前チェックを実行するために使用されます。たとえば、Elastic Compute Service(ECS)インスタンスを停止する場合、最初にインスタンスが実行中状態かどうかを確認できます。インスタンスが実行中状態の場合にのみ、インスタンスを停止できます。

構文

Action 属性が ACS::CheckFor に設定されていることを除いて、ACS::CheckFor アクションの他のすべての属性は ACS::WaitFor アクションの属性と同じです。 ACS::WaitFor アクションの構文の説明については、詳細をご確認ください。

Tasks:
  - Name: checkForTaskExample
    Action: ACS::CheckFor
    Properties: 
      # 次の属性は ACS::ExecuteAPI アクションの属性と同じです。 ACS::ExecuteAPI アクションの構文の説明については、詳細をご確認ください。
      Service: ECS
      API: DescribeInstances
      Parameters: 
        InstanceId: i-12345678abcedfg
      # 次の属性は ACS::CheckFor アクションに固有です。
      PropertySelector: "jq selector" # 必須。待機する API 結果を選択するためのセレクター。この例では、jQuery セレクターが使用されています。詳細については、ACS::ExecuteAPI アクションの ValueSelector 属性の説明をご確認ください。
      DesiredValues: # 予期される値。 PropertySelector 属性によって選択された値が DesiredValues 属性の指定された値のいずれかと一致する場合、タスクは成功します。 PropertySelector 属性によって選択された値が DesiredValues 属性の指定された値のいずれとも一致しない場合、タスクはタイムアウトして失敗します。 DesiredValues 属性と NotDesiredValues 属性のいずれかを指定する必要があります。
        - value1
        - value2
      NotDesiredValues: # 予期されない値。 PropertySelector 属性によって選択された値が NotDesiredValues 属性の指定された値のいずれとも一致しない場合、タスクは成功します。 PropertySelector 属性によって選択された値が NotDesiredValues 属性の指定された値のいずれかと一致する場合、タスクはタイムアウトして失敗します。 DesiredValues 属性と NotDesiredValues 属性のいずれかを指定する必要があります。
        - value3
        - value4
    Outputs: # ACS::CheckFor アクションが存在するタスクの出力パラメーター。 NotDesiredValues または DesiredValues 条件が満たされると、タスクは成功し、出力パラメーターが返されます。
      OutputParameter1: 
        ValueSelector: 'jq selector' # 返すデータを選択するための jQuery セレクター。 jQuery セレクターは、API 操作によって返された JSON データから情報を抽出します。 jq 構文の詳細については、https://stedolan.github.io/jq/ をご確認ください。
        Type: String/Boolean/List(Array)/Number/Object
{
    "Tasks": [
        {
            "Name": "checkForTaskExample",
            "Action": "ACS::CheckFor",
            "Properties": {
                "Service": "ECS",
                "API": "DescribeInstances",
                "Parameters": {
                    "InstanceId": "i-12345678abcedfg"
                },
                "PropertySelector": "jq selector",
                "DesiredValues": [
                    "value1",
                    "value2"
                ],
                "NotDesiredValues": [
                    "value3",
                    "value4"
                                    ]
                          }, 
		"Outputs": {
        "OutputParameter1": {
          "ValueSelector": "jq selector",
          "Type": "String/Boolean/List(Array)/Number/Object"
        }
      }
        }
            ]
}

次のサンプルコードは、指定されたディスクのスナップショットを作成する方法の例を示しています。この例では、ACS::CheckFor アクションを使用して、指定された ECS インスタンスが実行中状態または停止状態かどうかを確認します。

FormatVersion: OOS-2019-06-01
Parameters:
  DiskId:
    Description: コピーするスナップショットのディスク ID
    Type: String
  InstanceId:
    Description: コピーするスナップショットのインスタンス ID
    Type: String
  SnapshotName:
    Description: 新しいスナップショットの名前
    Type: String
Tasks:
- Name: checkInstanceReady
	Action: ACS::CheckFor
  Properties:
  	Service: ECS
    API: DescribeInstances
    DesiredValues:
    - Running
    - Stopped
    Parameters:
      InstanceIds:
      - '{{ InstanceId }} '
    PropertySelector: Instances.Instance[].Status
- Name: createSnapshot
	Action: ACS::ExecuteAPI
  Properties:
  	Service: ECS
    API: CreateSnapshot
    Parameters:
      DiskId: '{{ DiskId }}'
      SnapshotName: '{{ SnapshotName }}'
		Outputs:
      SnapshotId:
        Type: String
        ValueSelector: SnapshotId
- Name: waitSnapshotsReady
	Action: ACS::WaitFor
  Properties:
  	Service: ECS
    API: DescribeSnapshots
    DesiredValues:
    - accomplished
    Parameters:
      SnapshotIds:
      - '{{ createSnapshot.SnapshotId }}'
    PropertySelector: Snapshots.Snapshot[].Status
Outputs:
  SnapshotId:
    Type: String
    Value: '{{ createSnapshot.SnapshotId }}'
{
    "FormatVersion": "OOS-2019-06-01",
    "Parameters": {
        "DiskId": {
            "Description": "コピーするスナップショットのディスク ID",
            "Type": "String"
        },
        "InstanceId": {
            "Description": "コピーするスナップショットのインスタンス ID",
            "Type": "String"
        },
        "SnapshotName": {
            "Description": "新しいスナップショットの名前",
            "Type": "String"
        }
    },
    "Tasks": [
        {   
            "Name": "checkInstanceReady",
            "Action": "ACS::CheckFor",
            "Properties": {
                "Service": "ECS",
                "API": "DescribeInstances",
                "DesiredValues": ["Running", "Stopped"],
                "Parameters": {
                    "InstanceIds": ["{{ InstanceId }} "]
                },
                "PropertySelector": "Instances.Instance[].Status"
            }
        },
        {   
            "Name": "createSnapshot",
            "Action": "ACS::ExecuteAPI",
            "Properties": {
                "Service": "ECS",
                "API": "CreateSnapshot",
                "Parameters": {
                    "DiskId": "{{ DiskId }}",
                    "SnapshotName": "{{ SnapshotName }}"
                }
            },
            "Outputs": {
                "SnapshotId": {
                    "Type": "String",
                    "ValueSelector": "SnapshotId"
                }
            }
        },
        {   
            "Name": "waitSnapshotsReady",
            "Action": "ACS::WaitFor",
            "Properties": {
                "Service": "ECS",
                "API": "DescribeSnapshots",
                "DesiredValues": ["accomplished"],
                "Parameters": {
                    "SnapshotIds": ["{{ createSnapshot.SnapshotId }}"]
                },
                "PropertySelector": "Snapshots.Snapshot[].Status"
            }
        }
    ],
    "Outputs": {
        "SnapshotId": {
            "Type": "String",
            "Value": "{{ createSnapshot.SnapshotId }}"
        }
    }
}