Here are the steps that I’ve used to move some Windows Server EC2 instances to a different AWS account.  This method should work for any OS, but I’ve only tested with Server 2008 R2.
The simple version:
- In the source account, stop the instance
- Make a snapshot of the instance’s system volume
- Share the snapshot with the destination account number
- In the destination account, make a volume from the snapshot
- Create an instance with the same OS as the source instance
- Detach and delete the new instance’s system volume
- Attach the volume from step 4
- Start the instance
The detailed version:
- In the source AWS account, stop the instance
- Go to Volumes, search for your instance name or ID, choose the volume, and click Actions – Create Snapshot. Â Note the Snapshot ID.
- Wait for the creation to finish, then click Permissions in the bottom pane and share with the destination account number (get it from the destination account by clicking on your username in the header and choosing “My Account”)
- In the destination AWS account, go to Snapshots. Â Change the drop-down to “Private Snapshots”. Search for the Snapshot ID, select it, and click Action – Create Volume. Â The default settings should be OK. Â Click Create. Â Note the Volume ID.
- Create an instance. Â I don’t know any way to create one without launching, so launch it and then stop it.
- Go to Volumes, search for your instance name or ID, choose the volume, and note where it is attached (most likely /dev/sda1). Â Click Actions – Detach, then Actions – Delete Volume.
- Search for the volume created in step 4 and choose it. Â Click Actions – Attach Volume. Â Fill in t the instance ID (you can search by name) and Device path from step 6 (most likely /dev/sda1). Â Ignore the note about xvdf – xvdp.
- Start the instance