AWS S3 & Balancing all Business aspects…
…AWS S3 can be used in multiple ways with their own Strengths and Weaknesses…
AWS S3 is almost a silver bullet for solving most of the File Exchange related requirements. AWS has provided multiple options to perform IO using S3; each one having its own Pros and Cons.
In this article we will look at various options — taking a very generic and common example where an Enterprise has to share files with external Customers.
Being Traffic from External Entity, Security becomes an utmost concern; Being a customer Ease of Using Solution and Performance have to be a very high in consideration list; and being an enterprise keeping cost minimal also becomes important.
What all Options should we look at?
Let Customer upload to/ and download from S3
Pros:
- Cost Effective Solution from Enterprise Perspective.
- File transfer will be highly optimised.
Cons:
- Clumsy solution for Customers. Expect Customer to be familiar with AWS Technologies.
- With S3 shared with External entities — Security of the Data in the AWS may become a concern.
S3 Replication
Let customer upload to their own S3 — and let Enterprise get data from their S3 post replication.
Pros:
- Still a simple cost effective Solution from Enterprise Perspective.
- File transfer will remain quite fast.
- Customer will have access to its own S3; hence concern regarding security of the Data in the options above — is addressed.
Cons:
- Remains not so user friendly Solution. Customer is still expected to be familiar with AWS Technologies.
- Overall Cost of the solution will increase; as now multiple Buckets will need to be implemented and maintained.
UI/Service for uploading files to S3
Another option is to implement a simple UI or a service that will let user upload to S3.
Pros:
- Customer Usability improves drastically.
- No need to share S3 or AWS Account details. Data Security issue should also not be a concern.
Cons:
- One extra Application to develop and maintain; and hence impacts the cost.
- File transfer will be slower — as there would be one more hop. If the WebApp or Service is deployed Physically far away from Customer or S3 — performance will be significantly affected.
Signed S3
One more option that AWS provides for IO with S3 is Signed S3 URLs. These URLs are Timed URLs i.e. after specified time interval the URL expires; and would not work.
Pros:
- Security is not compromised — as one Signed S3 URL provides access to only one object. URL is also timed URL — and it expires after timeout specified.
- Performance is not impacted by any hops. Files are transferred directly from User machine to S3.
Performance may be a slight concern because it uses HTTP for file transfer.In our next discussion we will discuss addressing these performance concerns related to HTTP.
3. It is simple solution for User to invoke.
Cons:
- One Lambda code has to be developed; though being serverless — it would not be a great cost impacting proposition.
- Because of HTTP for File transfer, performance can become a slight concern. Though there are ways to address these. We will discuss further on this in our updoming discussions.
Overall
There are multiple ways to perform IO with AWS S3; it should be an Architect job to ensure all options are looked at — before making a decision.