PitchHut
Log in / Sign up
s3-from-scratch
6 views
Build your own cloud: Open-source S3 from scratch.
Pitch

Explore the journey of creating a cloud storage solution like AWS S3 on bare-metal infrastructure using a full open-source tech stack. This comprehensive guide walks you through automated bucket deployment, volume expansion, and security features while empowering you to regain control over your data without relying on cloud platforms.

Description

Discover the ultimate guide to building your own AWS S3-like storage system with S3 From Scratch. This project provides a comprehensive walkthrough on how to create a fully functional, open-source solution, enabling users to deploy their own scalable storage without relying on cloud providers like AWS or GCP.

Key Features:

  • Automated Bucket Deployment: Streamline the process with automation for creating and managing S3 buckets seamlessly.
  • Dynamic Resource Scaling: Implement a system that allows for dynamically expanding volumes, ensuring your storage solution grows with your needs.
  • Secure Infrastructure: Design your storage solution with security at its core, safeguarding data with top-notch practices.

Technical Insights:

Gain insights into the technical framework of the project:

  • Node Architecture: Utilize Raspberry Pi units equipped with SSDs to create an efficient enterprise-grade compute unit, ideal for bulk operations.
  • Custom Console: Engage directly with your infrastructure through a tailored console set-up, designed for ease of use and management.
  • Robust API: Interact programmatically with your storage service using the exemplified API that mimics AWS functionalities.

Examples:

Here's a quick JavaScript snippet showcasing how to interact with the service using the @aws-sdk/client-s3:

const { S3Client, ListObjectsV2Command, PutObjectCommand } = require("@aws-sdk/client-s3");

const Bucket = 'BUCKET_NAME_HERE';
const Namespace = 'NAMESPACE_HERE';
const accessKeyId = "xxxxxxxxxxxxxxxxxxxx";
const secretAccessKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

(async function () {
    const client = new S3Client({
        region: 'us-west-2',
        endpoint: `https://${Bucket}.${Namespace}.s3.anthonybudd.io`,
        forcePathStyle: true,
        sslEnabled: true,
        credentials: {
            accessKeyId,
            secretAccessKey
        },
    });

    const Key = `${Date.now().toString()}.txt`;
    await client.send(new PutObjectCommand({
        Bucket,
        Key,
        Body: `The time now is ${new Date().toLocaleString()}`,
        ACL: 'public-read',
        ContentType: 'text/plain',
    }));
    console.log(`New object successfully written to: ${Bucket}://${Key}\n`);

    const { Contents } = await client.send(new ListObjectsV2Command({ Bucket }));
    console.log("Bucket Contents:");
    console.log(Contents.map(({ Key }) => Key).join("\n"));
})();

Live Demonstration:

Experience the power of your self-hosted S3 solution with our live Proof of Concept demonstrating its functionality

By following the detailed sections in this repository, you will be equipped to construct each part of your storage system from the ground up. Join the journey of building a scalable, secure, and entirely open-source alternative to AWS S3. Start your development today!