Search code examples
amazon-web-servicesamazon-ec2amazon-ebsaws-batchspot-instances

Attaching an EBS volume to AWS Batch Compute Environments


I want to set up AWS Batch running few python scripts to do some batch operations on file fetched from S3 and post processing they need to be saved to a volume.

For this I want to configure compute environments in AWS batch.

I wish to use spot instances but i need my EBS volume to be there even after instance is terminated and if new instance is spin up it has to mount same volume as used before.


Solution

  • Create a instance-template, provide a bootstrap script, for the mentioned case something like:

    sudo mkdir -p /<any directory name where volume will be mounted eg: dir>
    
    aws ec2 attach-volume --volume-id <volume_id> --instance-id $(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id) --device /dev/sdf
    
    sudo mount /dev/sdf /<above mentioned dir rg :dir>
    

    in AWS batch definition, use the above template to launch your ec2 machine.