Serverless Video Metadata Management UI

The solution provides a web application and cloud-based backend to manage video metadata.

The challenge

The client asked Merapar to create a web UI for their editors to easily and securely access, manage, edit and share the metadata for their rich catalogue of video content. They had a series of backend APIs for storing and retrieving video metadata, and they wanted a new UI to allow their editorial staff to view and manage that data.

Part of the challenge was to develop a Single Sign On (SSO) solution to provide the required authentication functions. Moreover, the backend APIs were not capable of authorisation at the individual user level as they were protected by API keys unique to each client application. In addition, all changes made by the editorial staff had to be logged for audit purposes and displayed in the web UI.

Our approach

All of the typical backend components of a web app are handled by AWS services, without any need to manage EC2 compute instances. The app static files are loaded from an S3 bucket, so a traditional webserver is not required. All dynamic data is loaded in via an API Gateway and secured using AWS Cognito. The user pool is managed using the AWS Console, removing the need to build user management screens in the web UI.

The audit log requirement is handled by a node.js proxy running in Lambda, which writes details of changes − including the username of the user making the change − to DynamoDB. This information is then displayed in the app using API Gateway as a proxy to DynamoDB. Having used Saltstack extensively in previous Kubernetes-based projects (and KOPs since then), in this project we used Cloudformation throughout the solution. The use of nested templates greatly helped in adhering to the DRY principle when writing the templates.

The result

The project was delivered on time with very little effort expended on the backend. Leveraging the AWS serverless approach meant that the backend was very quickly configured, and the request-based usage model meant that running multiple instances for testing had very little cost impact.