High-level migration plan:
Re-develop kabuter UI using Angular 8 and Amplify
Use AWS Cognito for user-management and social federation (facebook and google)
Implemented social federation using AWS Cognito by referring Michael Labieniec’s blog on PWA Social Federation
Note: I had to use Cognito – implicit grant option to eliminate token url resulting in invalid_request error that prevented social federated users to get navigated to home page after successful login. Refer AWS Token link for more.
Use AWS DynamoDB as a backend no-sql database
Created a DynamoDB table named kabuterio with partition-key=pk, sort-key=sk.
Implemented a python lambda invoked by AWS Cognito pre-Sign-up trigger to write user info to kabuterio table.
MILESTONE #1 Use AWS Cognito to trigger a Python lambda to save pre sign-up user info in the kabuterio DynamoDB database.
Created user-add, user-get python lambda functions to write to kabuterio table.
Note: Make sure to return event from lambda functions so that Cognito can return back to the caller webapp.
Use Swagger to define REST API
MILESTONE #2: Upon successful sign-up and authentication, allow users to update profile/preference info.
Use AWS CodeCommit
Created a repository “KabuterAngularApp” in AWSCodeCommit.
Pointed the local directory of angular app to remote AWS repository using the command below:
git remote add <remote-name> <remote-url>
Validate the remote url:
git remote -v
Pushed local code to remote using:
git push <remote-name> <branch-name>
For more info refer Linuxize blog How to add git remote
Import Swagger definition into SOAP UI to run API tests
MILESTONE #3: Implement code-change to code-deployment cycle using AWS Bamboo
Implement Group, Event, and Message CRUD UI and REST functionality
MILESTONE #4: Kabuter.io is up and running on AWS platform and users are able to create groups, events and messages.
Implement workflow using AWS State Machine.
MILESTONE #5: Kabuter.io is able to send email and SMS notifications
Update ios and android apps
MILESTONE #6: Kabuter.io is fully functional on AWS.
A blog by Mark McDonell on AWS Cognito