Files
spinifex/docs/migration/moving-aws-workload

title, seoTitle, description, category, tags, resources
title seoTitle description category tags resources
Moving an AWS Workload to Mulga Migrate an AWS Workload to Spinifex — Spinifex Docs Move existing AWS workloads onto Spinifex using compatible APIs, SDKs, and Terraform across EC2, VPC, EBS, S3, IAM, STS, ELBv2, ACM, ECR, ECS, and EKS. Migration
migration
aws
terraform
title url
Spinifex Repository https://github.com/mulgadc/spinifex
title url
AWS CLI Reference https://docs.aws.amazon.com/cli/latest/reference/
title url
Terraform AWS Provider https://registry.terraform.io/providers/hashicorp/aws/latest

Moving an AWS Workload to Mulga

Migrate existing AWS workloads to Spinifex using compatible APIs, SDKs, and Terraform.

Table of Contents


Overview

Spinifex provides drop-in compatibility with AWS APIs, making it possible to migrate existing workloads with minimal changes.

Supported Services: EC2, VPC, EBS, S3, IAM, STS, ELBv2 (ALB/NLB), ACM, ECR, ECS, EKS

Compatible Tools: AWS CLI, AWS SDKs, Terraform, kubectl (via aws eks get-token), any S3-compatible client

Instructions

Prerequisites

export AWS_PROFILE=spinifex

Configure AWS CLI

aws ec2 describe-instances
aws s3 ls

Terraform

provider "aws" {
  region     = "ap-southeast-2"
  access_key = "your-spinifex-access-key"
  secret_key = "your-spinifex-secret-key"

  endpoints {
    ec2                = "https://localhost:9999"
    iam                = "https://localhost:9999"
    sts                = "https://localhost:9999"
    elbv2              = "https://localhost:9999"
    acm                = "https://localhost:9999"
    ecr                = "https://localhost:9999"
    ecs                = "https://localhost:9999"
    eks                = "https://localhost:9999"
    s3                 = "https://localhost:8443"
  }

  skip_metadata_api_check = true
  skip_region_validation  = true
}

Hybrid S3 Sync

aws s3 sync s3://local-bucket/ s3://cloud-bucket/ --source-region spinifex --region us-east-1

Troubleshooting

Terraform Provider Errors

Ensure these two skip flags are set in your provider configuration:

skip_metadata_api_check = true
skip_region_validation  = true

Without them, Terraform queries the EC2 instance metadata service for credentials and rejects a region name AWS does not know.

Leave skip_credentials_validation and skip_requesting_account_id unset, and point the sts endpoint at Spinifex. The provider then learns the account ID from GetCallerIdentity as it does on AWS. With the account ID blank, a security group rule that references a group in the same account reads back as <account>/sg-... and never reaches a clean plan.

S3 Signature Errors

Spinifex uses AWS Signature V4. Ensure your AWS CLI is version 2.0 or higher:

aws --version

If using an older version, upgrade:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update