This web app shows how to build a complex backend workflows as stand-alone AWS Step Functions applications. See the Compute Blog articles to learn more. @jbesw
This example application shows how to build flexible serverless backends for web apps. This sample application is called Happy Path.
This app is designed to help state parks and nonprofit organizations digitalize printed materials, such as flyers and maps. It allows visitors to capture images of documents and photos of hiking trails. They can share these with other users to reduce printed waste.
The frontend displays and captures images for different locations, and the backend processes this data according to a set of business rules. This web application is designed for smartphones so it’s used while visitors are at the locations.
To learn more about how this application works, see the 3-part series on the AWS Compute Blog:
Important: this application uses various AWS services and there are costs associated with these services after the Free Tier usage - please see the AWS Pricing page for details. You are responsible for any AWS costs incurred. No warranty is implied in this example.
.
├── README.MD <-- This instructions file
├── frontend <-- Source code for the Vue.js
├── backend <-- Source code for the serverless backend
├── workflows <-- Step Functions applications
├── localTesting <-- Test harness/test events for local debugging
Domain
and ClientID
for installation of the application backend and frontend.Auth0 is now configured for you to use. The backend uses the domain
value to validate the JWT token. The frontend uses the identifier (also known as the audience), together with the Client ID to validate authentication for this single application. For more information, see the Auth0 documentation.
Create an AWS account if you do not already have one and login.
Clone the repo onto your local development machine:
git clone https://github.com/aws-samples/happy-path
cd backend
sam deploy --guided --template-file realtime.yaml
During the prompts, enter happy-path-realtime
for the Stack Name, enter your preferred Region, and accept the defaults for the remaining questions.
aws iot describe-endpoint --endpoint-type iot:Data-ATS
aws cognito-identity list-identity-pools --max-results 10
Note that you must run these instructions on a Linux x64 platform to ensure the correct Sharp binaries are included. If you are using another operating system, see the AWS Lambda Sharp installation instructions. Alternatively, use AWS Cloud9 to complete this step to ensure compatibility.
cd ./backend/layers/sharp-layer
npm install
mkdir -p ./layer/nodejs
mv ./node_modules ./layer/nodejs
sam deploy --guided
Take a note of the output ARN - it is used in subsequent deployments wherever you see the SharpLayerARN
parameter.
From the command line, deploy the SAM template. Note that your SAM version must be at least 0.48 - if you receive build errors, it is likely that your SAM CLI version is not up to date. Run:
cd ../..
sam build
sam deploy --guided
When prompted for parameters, enter:
This takes several minutes to deploy. At the end of the deployment, note the output values, as you need these in the frontend installation.
The frontend code is saved in the frontend
subdirectory.
src\main.js
file:APIendpoint
value from the last section.src\auth_config.json
and enter the values from your Auth0 account:dev-12345678.auth0.com
.cd ../frontend
npm install
npm run serve
To show the progression of increasingly complex workflows, this repo uses four separate AWS Step Functions state machines. Part 3 of the blog series shows how to deploy each one. The deployment pattern is the same for each version.
workflows/templates
.workflows/state machines
.To deploy:
cd workflows/templates/v1
sam build
sam deploy --guided
A sample photo dataset is provided for download. These photos are provided by the blog author (James Beswick) under the Creative Commons Attribution 4.0 International license.
The AWS Compute Blog series and video link at the top of this README file contains additional information about the application design and architecture.
If you have any questions, please contact the author or raise an issue in the GitHub repo.
==============================================
Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
SPDX-License-Identifier: MIT-0