StepFunctions で複数のインスタンスのスナップショットを作成したい
0
次のステートマシンは、DescribeInstances で特定のタグがついた複数のインスタンスを取得します。 その結果、CreateSnapshots で スナップショットを作成するのですが最初の 1 台のみのインスタンスのスナップショットしか作成されません。 DescribeInstances で取得した複数のインスタンスのスナップショットを作成するためにはどのようにしたら良いでしょうか?
{
"Comment": "A Snapshot of my state machine",
"StartAt": "ServiceStop",
"States": {
"ServiceStop": {
"Type": "Task",
"Parameters": {
"DocumentName": "AWS-RunShellScript",
"Parameters": {
"commands": [
"#!/bin/bash",
"sudo systemctl stop httpd"
]
},
"Targets": [
{
"Key": "tag:Name",
"Values": [
"Web"
]
}
]
},
"Resource": "arn:aws:states:::aws-sdk:ssm:sendCommand",
"Next": "ServiceStopWait",
"ResultPath": "$.ServiceStop"
},
"ServiceStopWait": {
"Type": "Wait",
"Seconds": 5,
"Next": "ServiceStopList"
},
"ServiceStopList": {
"Type": "Task",
"Next": "ServiceStopStatus",
"Parameters": {
"CommandId.$": "$.ServiceStop.Command.CommandId"
},
"Resource": "arn:aws:states:::aws-sdk:ssm:listCommands",
"ResultPath": "$.ServiceStopList"
},
"ServiceStopStatus": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.ServiceStopList.Commands[0].Status",
"StringEquals": "Success",
"Next": "DescribeInstances"
}
],
"Default": "ServiceStopWait"
},
"DescribeInstances": {
"Type": "Task",
"Parameters": {
"Filters": [
{
"Name": "tag:Name",
"Values": [
"Web"
]
}
]
},
"Resource": "arn:aws:states:::aws-sdk:ec2:describeInstances",
"ResultPath": "$.DescribeInstances",
"Next": "CreateSnapshots"
},
"CreateSnapshots": {
"Type": "Task",
"Parameters": {
"InstanceSpecification": {
"InstanceId.$": "$.DescribeInstances.Reservations[0].Instances[0].InstanceId"
}
},
"Resource": "arn:aws:states:::aws-sdk:ec2:createSnapshots",
"ResultPath": "$.CreateSnapshots",
"Next": "CreateSnapshotsWait"
},
"CreateSnapshotsWait": {
"Type": "Wait",
"Seconds": 30,
"Next": "DescribeSnapshots"
},
"DescribeSnapshots": {
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:ec2:describeSnapshots",
"Parameters": {
"SnapshotIds.$": "States.Array($.CreateSnapshots.Snapshots[0].SnapshotId)"
},
"ResultPath": "$.DescribeSnapshots",
"Next": "SnapshotsStatus"
},
"SnapshotsStatus": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.DescribeSnapshots.Snapshots[0].State",
"StringEquals": "completed",
"Next": "ServiceStart"
}
],
"Default": "SnapshotsStatusWait"
},
"ServiceStart": {
"Type": "Task",
"Parameters": {
"DocumentName": "AWS-RunShellScript",
"Parameters": {
"commands": [
"#!/bin/bash",
"sudo systemctl start httpd"
]
},
"Targets": [
{
"Key": "tag:Name",
"Values": [
"Web"
]
}
]
},
"Resource": "arn:aws:states:::aws-sdk:ssm:sendCommand",
"Next": "ServiceStartWait",
"ResultPath": "$.ServiceStart"
},
"ServiceStartWait": {
"Type": "Wait",
"Seconds": 5,
"Next": "ServiceStartList"
},
"ServiceStartList": {
"Type": "Task",
"Next": "ServiceStartStatus",
"Parameters": {
"CommandId.$": "$.ServiceStart.Command.CommandId"
},
"Resource": "arn:aws:states:::aws-sdk:ssm:listCommands",
"ResultPath": "$.ServiceStartList"
},
"ServiceStartStatus": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.ServiceStartList.Commands[0].Status",
"StringEquals": "Success",
"Next": "Parallel"
}
],
"Default": "ServiceStartWait"
},
"Parallel": {
"Type": "Parallel",
"Branches": [
{
"StartAt": "DeleteSnapshot",
"States": {
"DeleteSnapshot": {
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"FunctionName": "${DeleteSnapshotLambdaFunction}",
"Payload.$": "$.CreateSnapshots.Snapshots[0]"
},
"End": true
}
}
},
{
"StartAt": "CopySnapshot",
"States": {
"CopySnapshot": {
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"FunctionName": "${CopySnapshotLambdaFunction}",
"Payload.$": "$.CreateSnapshots.Snapshots[0]"
},
"End": true
}
}
}
],
"Next": "Success"
},
"Success": {
"Type": "Succeed"
},
"SnapshotsStatusWait": {
"Type": "Wait",
"Seconds": 30,
"Next": "DescribeSnapshots"
}
}
}
feita há 9 meses195 visualizaçõeslg...
Sem respostas
- Mais recentes
- Mais votos
- Mais comentários
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos