Skip to content

szahn/BlobStorageFtpServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Blob Storage FTP Server

AWS, Go, Docker Blob Storage File Server

How do you expose static files in the cloud? Learn the architecture of containerized FTP Server built in GoLang. The FTP server will feature a Docker container, blob storage API access to AWS S3 and Cognito for OAuth authentication.

Why FTP?

FTP is considered a legacy, insecure protocol. SFTP supersedes FTP. However, it is the easiest way to provide AWS blob storage access to the public without requiring additional dependencies. Most organizations know FTP pretty well.

Why Blob Storage?

Secure, scaleable, store any kind of data, does not require (NFS) file system knowledge.

Architecture

  • AWS S3 Bucket: hosts files in blob storage
  • AWS Cognito: IAM - identity access management, OAuth, user pools
  • Go: Server-side, compiled language
  • Docker: Container technology providing namespace isolation

Dependencies

Packages

AWS Environment Setup

Run aws configure to setup the default credentials

S3 Bucket

Create an S3 Bucket to store FTP files

Cognito User Pool

Setup a user pool and app client to authenticate users with. Be sure to use the same region as the default credentials are set to (example: us-east-1).

Testing via FTP

ftp -p 127.0.0.1 3000
ls
get c.pdf
cp c.pdf d.pdf
put d.pdf
ls

Testing via Telnet

telnet 127.0.0.1 3000
USER admin
PASS password

Docs

Learning Go

Releases

No releases published

Packages

No packages published