Camera as a Service
Publication date: January 25, 2023 (Diagram history)
With this architecture, you can use Internet of Things (IoT)-enabled cameras to generate live video feed and machine learning (ML) inference that you can consume in near real-time. The solution uses Amazon Kinesis Video Streams, Amazon Rekognition, Amazon Elastic Kubernetes Service (Amazon EKS), and Amazon API Gateway.
Camera as a service diagram
The following steps describe the architecture:
-
Generate video feed by using Amazon Kinesis Video Streams Producer libraries.
-
Ingest live video feed to Amazon Kinesis Video Streams.
-
Convert the live feed into images through an on-demand or automated feature and send the images to Amazon Simple Storage Service (Amazon S3).
-
An Amazon S3 write event invokes a AWS Lambda function. The function sends the image to Amazon Rekognition to generate inference.
-
Store the inference and metadata in Amazon DynamoDB.
-
Use APIs to fetch the inference from DynamoDB.
-
The user app consumes live feed from Kinesis Video Streams, fetches inference from DynamoDB, and exposes the live feed by using a REST API. The user app runs on Amazon EKS.
-
API Gateway exposes the API for video feed and inference.
-
The end user consumes two APIs from API Gateway. The first provides video feed by using HTTP Live Streaming (HLS), MPEG-DASH
, or GetMedia streaming. The second provides the ML inference. -
The admin app on Amazon EKS handles governance, administrative APIs, user APIs, camera onboarding, metrics, and insights.
-
Use Amazon CloudWatch to store logs and metrics from the complete stack. Use Amazon Cognito to secure the API feed generated by API Gateway.
Further reading
For additional information, see the following resources:
Diagram history
To receive updates about this reference architecture diagram, subscribe to the RSS feed.
| Change | Description | Date |
|---|---|---|
Initial publication | Reference architecture diagram first published. | January 25, 2023 |
RSS subscription requirement
To subscribe to RSS updates, you must have an RSS plugin enabled for the browser you are using.