説明
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 }}"
}
}
}