This is easier than you probably think: AWS will expand the EBS boot volume of an EC2 instance running Linux automatically when you launch a new instance off of it with the desired capacity.
Here is how it works in more detail.
Step 1. Check storage space utilization
Check the storage space utilization using the command:
This gives you an output in a human-readable form.
If you would rather check the size of individual items in the root directory, use this command (add the -x flag to skip items located on other file systems):
du -hs /* | sort -h
The du command shows you the totals (-s) for each item (*) at root (/) in a human-readable form (-h), and pipes its output to the sort command. The sort command orders the results in human-readable form (-h).
Step 2. Create a new AMI based on the instance you want to modify.
Stop any services on the instance you want to modify, then stop the instance (any data on ephemeral storage will be lost). Create a new AMI based on the stopped instance. This ensures that any data you saved will persist to the new instance.
Step 3. Launch a new instance based on the AMI
Launch a new instance based on the newly created AMI.
When configuring the storage details of the new instance, increase the size of the boot volume. If you want to use an existing reservation to cover the costs, make sure you select the same settings as for the original instance (instance type, region/zone, etc.).
Step 4. Reassign EIP and terminate the old instance
Reassign your EIP to the new instance and restart any services that need restarting.
Step 5. Terminate the old instance
Terminate the old instance. Remember to delete any leftover resources which you no longer need.