Designing a Cloud DAM

What does a digital asset management system do?

store, manage, organize and share digital files and assets across a team

A DAM system can have lots of features, image and video transforms, some store product information and additional metadata, link to ecommerce platforms like shopify. We’ll focus on a sub set of these features.

Objectives

We want to be offer a digital asset management solution in the cloud, hosted on AWS.

Technical constraints:

Our audience for this design will be the CTO.

We are going to use Amazon web services as our cloud provider, avoiding amplify and lighthouse, giving us potentially more work but more control over the solution.

Key Scenarios

We are not going to cover every aspect of a DAM, we will cover these core key scenarios:

Here is a simplified case diagram that shows our key scenarios: go_base

Overview

Candidate Solution

Web application UI

We will use a single page application, hosted in an S3 bucket, served via cloudfront CDN.

Authentication

We will use AWS Cognito for user authentication, specifically user pools feature, this allows us to manage users and groups. It will integrate with our lambda services allowing us to authenticate users and check tenant permissions. We can utilize the custom attributes feature to store tenant information.

Asset storage

We will use S3 to store assets, this will allow us to store large files and have a bucket per tenant.

Backend services

The backend will be an HTTP Api serverless application, using API Gateway and Lambda functions.

Database

We will use dynamodb as the database rather than RDS, as it is serverless and works well with lambda. We can also restrict access to tenants data using resource policies.

go_base

Multi tenant considerations

Each tennant would have its own bucket

© 2024 Timney.