What it's for
Moving a workload from AWS to OCI usually means rebuilding the image and re-pointing everything at a new address. This tool removes the first half: it takes your existing AWS AMI and produces a bootable OCI custom image, ready to launch.
Pair it with the Cloud Spectra proxy and the OCI instance wears its AWS VPC identity — so during and after the cutover the workload answers at the same AWS address it always did. You move the compute to OCI's cheaper tier underneath a front door that never changed, and roll back by re-pointing to AWS if you need to.
Built to be fast, safe and self-contained
⚡ Fast & sparse
Reads the AMI's root snapshot directly via the EBS direct APIs — allocated blocks only, no slow export-image queue. Tens of minutes, not hours, and parallelizable.
🔄 Idempotent
Each import is fingerprinted from the source AMI + snapshot. A re-run after a hiccup reuses the already-imported image and transfers nothing — safe to run again.
👁 Safe by default
With no flags it only plans (a dry run): source, virtual vs. allocated size, and the image it would create. Migrating requires --force. Refuses marketplace/product-coded AMIs.
🧩 Independent
One self-contained binary — no qemu-img, no AWS or OCI CLI, no dependencies. It writes a sparse QCOW2 in pure Go and drives the AWS + OCI SDKs directly.
Download
A single gzip-compressed binary. It runs on your workstation with your own AWS + OCI credentials.
Or install from your terminal (Linux x86-64):
# download, decompress, and make executable
curl -fsSL https://cloudspectra-gateway-17ylb4c35xo49-public.s3.us-east-1.amazonaws.com/gateway/cloud-image-import/latest/cloudspectra_cloud_image_import-linux-amd64.gz \
| gunzip > cloudspectra_cloud_image_import
chmod +x cloudspectra_cloud_image_import
Usage
It uses the standard AWS credential chain (add --profile <name>) for the source and your OCI config (~/.oci/config) for the target. You need ebs:ListSnapshotBlocks + ebs:GetSnapshotBlock on the AWS side and object-storage + compute-image permissions on the OCI side.
1 Preview (safe, this is the default)
Plan the migration — source, allocated vs. virtual size, and the image it would create. Nothing is transferred.
./cloudspectra_cloud_image_import ami-0abc123 --region us-east-1 \ --compartment ocid1.compartment.oc1..aaaa --bucket image-staging
2 Migrate
Read the snapshot, write a sparse QCOW2, upload it to OCI object storage, and import a custom image. Add --yes to skip the prompt.
./cloudspectra_cloud_image_import ami-0abc123 --region us-east-1 \ --compartment ocid1.compartment.oc1..aaaa --bucket image-staging --force