DEV Community

Oleksandr Hanhaliuk
Oleksandr Hanhaliuk

Posted on

AWS S3 Upload API Implementation

Amazon Web Services (AWS) offers a versatile and secure solution for uploading files to S3 buckets. This article explores the distinct approaches including API Gateway with Lambda, CloudFront with Lambda@Edge for authorization, leveraging AWS Fargate or EC2 instances, and using Signed URLs.
We'll dive into the nuances of each method, evaluating its benefits and drawbacks to empower you with the knowledge to select the most appropriate solution for your needs.


API Gateway + Lambda -> S3 Bucket

Api Gateway - Lambda - S3 bucket

Method Overview

Leveraging AWS API Gateway in combination with Lambda functions emerges as an efficient strategy for uploading smaller files, capped at 6MB for rapid transfers.

Pros:

  • Simple Implementation: Utilizing serverless Lambda functions simplifies the architecture.
  • Cost-Effective: Incurs lower costs compared to maintaining continuous compute resources.
  • Scalability: Naturally scales with serverless architecture, handling varying load effortlessly.
  • Documentation: Working with AWS Lambda and API Gateway

Cons:

  • Size Limitations: The 6MB Lambda and 10MB API Gateway payload limits might be restrictive.
  • Execution Time Limit: Lambda functions have a timeout of 15 minutes.

CloudFront + Lambda@Edge (For Authorisation)

CloudFront - Lambda@Edge

Method Overview

Ideal for larger files beyond the limitations of API Gateway and Lambda, this method enables direct uploads to S3 buckets with a single request, incorporating authorization via Lambda@Edge

Pros:

  • Handles Large Files: Capable of processing significant file sizes directly.
  • Custom Authorization: Allows integrating sophisticated authorization mechanisms based on headers or any URL params using Lambda@Edge

Cons:

  • Cost: CloudFront is relatively more expensive.
  • Payload Limitations: You cannon pass any data in payload body except file itself

Fargate Containers Or EC2 Instances With ALB

Fargate - ALB

Method Overview

A versatile approach merging the strengths of previous methods, suitable for any file size and prolonged uploads, relying on either Fargate containers or EC2 Instances.

Pros:

  • Flexibility: Supports large files and any HTTP request type.

Cons:

  • Cost of Resources: Continuous expenditure even during idle times.

Signed URL Upload

Signed URL Upload


Method Overview

AWS highly recommends using Signed Urls for a secure, two-step upload process that encompasses acquiring a signed URL followed by the file upload using this URL.

Pros:

  • Unlimited Size and Duration: No restrictions on file sizes or upload duration.
  • Enhanced Security: Boosts security by controlling access through Signed URLs.

Cons:

  • Implementation Overhead: Requires additional effort to implement two-step process.

Summary

  • API Gateway + Lambda: Ideal for small, quick uploads; simple and cost-effective.
  • CloudFront + Lambda@Edge: Suited for larger files needing direct transfer and custom authorization.
  • AWS Fargate/EC2 + ALB: Flexible for any file size but incurs continuous resource costs.
  • Signed URLs: Highly secure, no size limits, but with slight overhead.

Choosing the right method balances functionality, cost, and complexity for optimized file uploads.

Top comments (0)