I haven't done this in AWS yet, but I've been growing mounted block devices/disks Google Cloud for a while now. It's more or less just like growing a disk on a SAN.
You still have to grow the filesystem it self though, so if you're trying to grow the root mount, using a partitioned disk, and not using an abstraction like LVM you will need to reboot to be able to use the full disk.
I wonder if Linux can mimic the technique Microsoft uses to grow volumes and filesystems on the fly. It's something I've missed on the occasion. It's pretty slick.
All my VMs have a separate /boot and ext4 as / (xfs would work, too).
With this setup - using KVM, mind you - I can change the disk size of the VM and resize the / filesystem inside by just using resize2fs, no need to reboot, umount or anything else.
Let's say I have an EBS volume of 500GB with 300GB of data. What happens if I mistakenly resize the EBS volume to 200GB? Do I get an error message or does part of my data get wiped out?
I suspect it's the underlying systems that aren't good at handling online decreases. But the good news is, if you're happy to lose data, you can just delete the volume and create a smaller one.
(Yes I know that's probably not what you meant, but it does highlight the question of what exactly is non-valuable data?)
Tried this just now. Spun up 8GB ec2+ebs instance. Booted and logged in as root. Deleted the root partition using fdisk, carefully recreated it from the same starting sector but to new 100GB capacity (check lsblk output to confirm). Then resize2fs /dev/xvda1 my ext4 FS. All online, hot. Obviously it's risky, but you can take a snapshot of the EBS before starting. Seems very nice for the common use case of slowly growing storage needs that are best served by a simple disk.
I've been procrastinating on moving our app to aws because this was not supported, I was going to have to rewrite some horrible code to support using s3 for scaling (EFS is not in the new Canada region). This should save me a few hundred hours!
So can I change to spinners at night with low I/O to save on daytime costs with higher SSD IOPs? "Automate" with lambda seems like it begging for cost optimization as well.