In my opinion, the most complicated part of this entire system is set up all of the various resources and the interplay between them all. If you count up the number of resources we need to make this system work, the list quickly grows:
- Two S3 buckets
- One Kinesis stream
- One Kinesis Firehose stream
- One DynamoDB table
- Four Lambda functions
- Multiple IAM roles
Not only do we need to create all of the preceding resources, but we need to ensure they can communicate with one another. As is often the case with building with AWS, much of the work involved in managing a stack such as this is getting permissions correct so that the Lambda function can read/write from/to the right S3 buckets, DynamoDB table, or Kinesis stream.
You can ...