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.
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.
Secure, scaleable, store any kind of data, does not require (NFS) file system knowledge.
- 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
Run aws configure
to setup the default credentials
Create an S3 Bucket to store FTP files
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).
ftp -p 127.0.0.1 3000
ls
get c.pdf
cp c.pdf d.pdf
put d.pdf
ls
telnet 127.0.0.1 3000
USER admin
PASS password