Tutorial

Migrating from AWS S3

A step-by-step guide to migrating your data from AWS S3 to ElasticLake.

E

ElasticLake Team

November 15, 2025

Migrating from AWS S3

Why Migrate?

If you're considering moving from AWS S3 to ElasticLake, you're likely looking for:

  • More predictable pricing
  • Lower egress costs
  • Better value for your storage needs

The good news: migration is straightforward thanks to S3 compatibility.

Before You Start

1. Create Your ElasticLake Account

Sign up at elasticlake.com and create your account. You'll get:

  • Access credentials (Access Key ID and Secret Key)
  • Your endpoint URL
  • A default Lake and Pond

2. Plan Your Migration

Consider:

  • Data volume: How much data are you moving?
  • Downtime tolerance: Can your application handle a brief switch?
  • Verification needs: How will you confirm data integrity?

Migration Methods

Method 1: Using rclone (Recommended)

rclone is a powerful tool for cloud-to-cloud transfers.

# Configure AWS S3
rclone config create aws s3 \
  provider AWS \
  access_key_id YOUR_AWS_KEY \
  secret_access_key YOUR_AWS_SECRET \
  region us-east-1

# Configure ElasticLake
rclone config create elasticlake s3 \
  provider Other \
  access_key_id YOUR_EL_KEY \
  secret_access_key YOUR_EL_SECRET \
  endpoint https://api.elasticlake.com

# Sync your bucket
rclone sync aws:lake1--pond1--my-bucket elasticlake:lake1--pond1--my-bucket --progress

Method 2: Using AWS CLI with Custom Endpoint

# Copy from AWS to local
aws s3 sync s3://lake1--pond1--my-bucket ./local-copy

# Upload to ElasticLake
aws s3 sync ./local-copy s3://lake1--pond1--my-bucket \
  --endpoint-url https://api.elasticlake.com

Method 3: Application-Level Migration

For live applications, you can implement a gradual migration:

import boto3

aws_s3 = boto3.client('s3')
el_s3 = boto3.client(
    's3',
    endpoint_url='https://api.elasticlake.com',
    aws_access_key_id='YOUR_EL_KEY',
    aws_secret_access_key='YOUR_EL_SECRET'
)

def migrate_object(bucket, key):
    # Download from AWS
    response = aws_s3.get_object(Bucket=bucket, Key=key)
    data = response['Body'].read()

    # Upload to ElasticLake
    el_s3.put_object(Bucket=bucket, Key=key, Body=data)

Updating Your Application

Once data is migrated, update your application's S3 configuration:

# Before
s3 = boto3.client('s3')

# After
s3 = boto3.client(
    's3',
    endpoint_url='https://api.elasticlake.com',
    aws_access_key_id='YOUR_EL_KEY',
    aws_secret_access_key='YOUR_EL_SECRET'
)

Verification Checklist

After migration:

  • Verify object counts match
  • Spot-check random files for integrity
  • Test application functionality
  • Monitor for errors in logs
  • Confirm billing is as expected

Need Help?

Our support team has helped hundreds of companies migrate. Contact us if you need assistance with your migration.


Ready to switch? Create your free account and start migrating today.

Ready to Try ElasticLake?

Start with our free tier and experience predictable cloud storage pricing.