Git Product home page Git Product logo

aws-toolkit-demo's Introduction

AWS Toolkits Demo Project

This is a non-trivial (mostly) serverless application to demonstrate the functionality of the AWS IDE Toolkits on a quasi-real world application.

Motivation

A lot of demo applications are extremely simple and don't reflect real world projects that are usually complex, with multiple layers, languages and moving pieces. This demo seeks to show how the IDE tooling from AWS helps you navigate such complexity in a cloud world.

Caveat

This is still a demo product - and doesn't necessarily reflect best architectural patterns - for advice on how to build AWS applications using recommended designs please checkout the AWS Well-Architected Framework.

Beer Identification App

Have you ever wanted to be able to systematically analyze images to detect if they contain beer? Now you can with the "Beer Identification App!" - this is a multi-layered architecture - with an image processing pipeline and a website for viewing results.

It's made up of several components and the architecture looks something like this:

Architecture Diagram

Components

To deploy everything, including building from source run the following:

./deploy.sh
Web Server

This is a Containerized Kotlin-JVM Spring Boot Web Server that hosts the front-end application for displaying results. The root of this component is located in the /web folder, and has the following requirements to build:

Build

To build the project run:

cd web/
docker build . beer-web-app

Run

To run locally run:

docker run -it -p8080:80 \
  --env DB_SECRET=**DB SECRET ARN** \
  --env CDN_DOMAIN=**CLOUD FRONT DOMAIN** \
  beer-web-app

Deployment

This component is deployed as an Amazon ECS Service.

Image Processor

This is a Python-based AWS Lambda function that listens for events on the Image Upload Bucket, calls Amazon Rekognition and publishes the results to a Topic. The source for this component is in the /image-processor folder and requires Python 3.8 to run.

Image Resizer

This is a Python-based AWS Lambda that resizes raw images from the S3 Image Upload bucket to create thumbnails and stores the results in the Image Storage bucket.

Metadata Storage

This is a TypeScript Node 12 based AWS Lambda that persists image metadata to an Amazon RDS MySql database. The source for this component is in the metadata-storage folder.

Infrastructure

This is a CDK module that models all of the infrastructure used in this project as a TypeScript project. To build and deploy this project run:

cd infra/
npm install
npm run deploy

Security

See CONTRIBUTING for more information.

License

This library is licensed under the MIT-0 License. See the LICENSE file.

aws-toolkit-demo's People

Contributors

amazon-auto avatar dependabot[bot] avatar floralph avatar kiiadi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.