Overview

The workflow removes the manual step of inspecting every uploaded file before its metadata can be recorded or used elsewhere.

Input

A file is uploaded into a designated prefix in an Amazon S3 bucket.

Processing

An S3 event invokes Lambda, which validates the event and reads object headers with HeadObject.

Output

A normalized metadata item is written to DynamoDB with a deterministic record identifier.

Architecture

Each service has one responsibility, which keeps the workflow small enough to troubleshoot and inexpensive to operate.

Architecture diagram showing a file upload entering Amazon S3, an S3 event invoking AWS Lambda, normalized metadata being written to Amazon DynamoDB, and monitoring around the processing path.
S3 stores the object, Lambda processes the event, and DynamoDB stores the metadata record.

Storage and event source

Amazon S3

Stores uploaded files and emits object-created notifications only for the configured intake prefix.

Compute

AWS Lambda

Decodes the key, reads metadata, validates required values, and prepares a normalized item.

Persistence

Amazon DynamoDB

Stores one record per object identity and rejects duplicate conditional writes safely.

What I built during the internship

The original capstone covered the complete path from upload through storage and presentation.

  • Connected S3 object-created events to a Lambda metadata extraction function.
  • Defined and wrote structured metadata records to DynamoDB.
  • Worked through IAM permissions, service configuration, logs, and failure investigation.
  • Built a static frontend that explained the workflow and presented its results.
  • Created a usage-based cost model using storage, requests, compute duration, reads, writes, and transfer.
  • Documented the architecture and the operational assumptions behind it.

Public implementation

The public repository recreates the architecture without exposing internal Amazon files, accounts, or customer information.

Deployable infrastructure

template.yaml defines the S3 bucket, Lambda function, DynamoDB table, SQS failure destination, IAM permissions, log retention, and CloudWatch alarms.

Open the AWS SAM template

Tested Lambda code

The Python function handles URL-encoded keys, versioned objects, deterministic record IDs, duplicate deliveries, and clear failure propagation.

Open the Lambda function

Reliability and operations

S3 event notifications can be delivered more than once, so the workflow treats duplicate delivery as normal system behavior rather than an exceptional case.

1

Deterministic identity

The bucket, object key, and object version are combined into a stable record ID.

2

Conditional persistence

DynamoDB uses attribute_not_exists(RecordId) so a duplicate event cannot overwrite an existing record.

3

Retry and recovery

Lambda retries asynchronous failures and sends exhausted events to an encrypted SQS failure queue.

4

Monitoring

CloudWatch alarms cover function errors, throttling, and messages waiting in the failure queue.

Evidence

The public implementation is checked as code, infrastructure, and documentation rather than presented only as an architecture graphic.

11unit tests
100%statement coverage
100%branch coverage
1 commandlocal verification with make check

Related AWS writing

These articles provide the longer context behind the internship, cloud cost decisions, and the way I learned the platform.

Illustration of an AWS troubleshooting console and connected services.

AWS Cloud Support Internship: What I Actually Practiced

The training environment, troubleshooting process, capstone, and exact scope of the work.

Read article
Illustration of AWS cost monitoring and billing controls.

AWS Free Tier: What Actually Costs Money

A practical checklist for finding active resources, setting alerts, and avoiding surprise charges.

Read article
Illustration of a structured AWS certification and learning path.

Certifications and Continuous Learning

How certification study connected cloud theory to consoles, permissions, logs, and troubleshooting.

Read article

View all AWS-related writing

Project scope

Original work and public code are intentionally separated

The original project was completed in isolated AWS internship training and project environments. This repository is a public reconstruction of the architecture, not an export of internal Amazon material. It contains no production customer data and does not imply ownership of live customer systems or an enterprise on-call rotation.

Explore the rest of my work

My portfolio includes cloud support, full-stack development, AI systems, technical documentation, and open-source contributions.