In AWS EBS ("Elastic Block Storage") is the underlying technology that (virtual) hard disks of your instances (virtual machines) use. You can take snapshots of those virtual hard disks and use those snapshots to, for example:
- Debugging issues with unbootable virtual machines: attach and then mount the snapshot on another virtual machine and investigate what is wrong.
- Creating AMI images from which you can launch new instances
- Sharing EBS volumes (between regions and AWS accounts), e.g. for purposes of migrating VMs
Here we'll focus on the last use-case: being able to create copies of virtual machines on another AWS account. The reason why I even bothered writing this blog post is that most of the articles on the Internet do not cover this use-case: they assume you're working within one AWS account and/or one region. The use-case covered here requires a few extra steps:
- In the origin AWS account take a snapshot of the virtual machine's EBS volume
- In the origin AWS account (If needed) copy the EBS snapshot to the region where it will be deployed on on the other AWS account
- In the origin AWS account configure snapshot permissions to grant access to the target AWS account
- In the target AWS account create a snapshot from the snapshot that was shared with you (creating an AMI directly from a snapshot shared with you does not work)
- In the target AWS account create an AMI from the snapshot that was created from the EBS volume
- In the target AWS account launch a new instance (virtual machine) from the AMI you just created
Why the process needs this extra step (snapshot -> snapshot) I do not know. Possibly it has something to do with how the snapshot permissions/sharing works.