Tools
If we were to try and build scalable and highly-available systems to handle each of the above concerns on our own, we would probably never get around to building our app! Fortunately, AWS provides services and tooling to handle a lot of the undifferentiated heavy lifting involved in building modern, robust applications. We will use a number of these services and tools in our solution, including:
- Amazon Kendra index to power the search
- Amazon Simple Storage Service (S3), as a data source to store the documents as well as to host the static assets for our app
- Amazon Lambda to handle the event of a document being put in an S3 bucket by ingesting it in the Kendra index with appropriate access attributes
- Amazon Textract to extract text from images
- Amazon Lex to implement a chatbot interface to the Kendra index
- AWS Cloud9 Interactive Development Environment
- Amazon Cognito, to handle guest access, user sign up, authentication and authorization
- The AWS Amplify CLI, to rapidly provision and configure our cloud services
- The AWS Amplify JavaScript library, to connect our front end to cloud resources
If any or all of these services are new to you, no need to worry. We will cover everything you need to know to get started using all of these. And there is no better way to learn than to build.