Mount EBS volume to a running AWS instance with a script

1.8k Views Asked by At

I'd like to dynamically mount and unmount an EBS volumes to a running AWS instance using a script and was wondering whether this is achievable, both on linux and windows instances, and if so, what is the expected duration of such operation.

1

There are 1 best solutions below

1
On BEST ANSWER

Using AWS CLI and Bourne shell script.

attach-volume

Attaches an EBS volume to a running or stopped instance and exposes it to the instance with the specified device name.

aws ec2 attach-volume --volume-id vol-1234567890abcdef0 --instance-id i-01474ef662b89480 --device /dev/sdf

detach-volume

Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume.

aws ec2 detach-volume --volume-id vol-1234567890abcdef0

--------------------------------------------------------------------------

Use Python and Boto3 which has APIs to attach and detach volumes.

attach_volume

Attaches an EBS volume to a running or stopped instance and exposes it to the instance with the specified device name.

import boto3

client = boto3.client('ec2')
response = client.attach_volume(
    DryRun=True|False,
    VolumeId='string',
    InstanceId='string',
    Device='string'
)

detach_volume

Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume.

response = client.detach_volume(
    DryRun=True|False,
    VolumeId='string',
    InstanceId='string',
    Device='string',
    Force=True|False
)