This week, I finally managed to get back on track with the schedule. I was able to complete the Lambda that handles all of the request logic and set up the WebSocket API. I tested each of the different API endpoints and Lambda handlers using the wscat tool and the Lambda successfully integrates with the DynamoDB tables. There may be small tweaks that I need to make later on, but those changes should be very simple since all of the infrastructure is already in place.
There are a couple of changes of note that I made to the AWS infrastructure. One change that I made to the system is that I picked up the Serverless framework (https://www.serverless.com/) to manage the AWS deployments. Serverless greatly simplified the deployment process since it manages API Gateway and Lambda configuration in an easy-to-edit configuration file. I also did not use the pynamodb library as originally planned because boto3, the Python AWS SDK, already has methods that allow me to read and write to DynamoDB tables.
Now that all of the AWS functionality works, I need to begin working on the integration with the RPi and Android phone app to ensure that they can communicate with AWS. Since we plan to use IAM authentication to secure our API requests, I need to figure out how to set up the access keys on the RPi and the Android app so that they can make requests to the API. I plan to meet up with both Alex’s to figure that out. One risk associated with this is that it may not be possible to actually manage the access keys securely. In this case, I would likely have to change the authentication method to use a Lambda authorizer instead, which would add additional work of writing the authorizer.