I am looking to create a Spot Fleet in Cloudformation which runs a single game server at a time; if prices spike and the server needs to be terminated it will use the 2 minute heads-up to gracefully shutdown and store anything to be persisted on an EBS Volume. The next instance started by the fleet will then mount the volume and restart the game server from where the previous one left off.

```
  SpotFleet:
    Type: "AWS::EC2::SpotFleet"
    Properties:
      SpotFleetRequestConfigData:
        IamFleetRole: !Sub arn:aws:iam::${AWS::AccountId}:role/aws-ec2-spot-fleet-tagging-role
        TargetCapacity: 1
        LaunchSpecifications:
          - InstanceType: "m5.large"
            ImageId: "ami-abcd1234"
            IamInstanceProfile: !GetAtt InstanceProfile.Arn
            WeightedCapacity: 1

```

Now I'm stuck on defining the persisted volume in the cf template. Initially I would just add it as a resource:

```
  Volume:
    Type: "AWS::EC2::Volume"
    Properties:
      Size: 10
      AvailabilityZone: !Ref AWS::Region

```

But then how do I reference it in the fleet? You can define BlockDeviceMappings on LaunchSpeficiations within a fleet as per 
<http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings.html>
but from the attributes available I can't seem to reference existing volumes and as such am getting the idea that these volumes are not persisted.

Alternatively I thought of attaching the volume to the spot instance via a VolumeAttachment:

```
  VolumeAttachment:
    Type: "AWS::EC2::VolumeAttachment"
    Properties:
      Device: "dev/server"
      InstanceId: !Ref SpotFleet
      VolumeId: !Ref Volume

```

but obviously the SpotFleet reference here returns the fleet name, not the id of any created instances. And neither !Ref nor !GetAtt seem to be able to extract those ids from a fleet.

Am I overlooking anything cruicial as to how to accomplish the above in CloudFormation or should I be looking at adding the EC2:AttachVolume and EC2:DetachVolume permissions to the InstanceProfile and simply attaching the volume manually from within the EC2 instance?

Many thanks,