| Day | Task | Start Date | Completion Date | Reference Material |
|---|---|---|---|---|
| 2 | Study authentication/authorization flows (JWT, Access Token, ID Token). - Review OWASP API security. | 10/11/2025 | 10/11/2025 | AWS Study Group |
| 3 | Deep dive into Cognito User Pool and Identity Pool. - Implement login, signup, refresh token flow. | 11/11/2025 | 11/11/2025 | AWS Study Group |
| 4 | Implement Lambda Authorizer and attach it to API Gateway routes. - Add permission policies. | 12/11/2025 | 12/11/2025 | AWS Study Group |
| 5 | Strengthen DynamoDB integration: - Add secondary indexes. - Improve validation & error handling. | 13/11/2025 | 13/11/2025 | AWS Study Group |
| 6 | Build end-to-end testing: - Client → API Gateway → Lambda → DynamoDB → Response. | 14/11/2025 | 14/11/2025 | AWS Study Group |
I learned in detail how JWT tokens work, how access/ID/refresh tokens differ, and how secure authentication is implemented in serverless applications. I also studied common attack vectors in API security and how to mitigate them using best practices.
This week, I configured Cognito to support signup, login, multi-factor authentication (optional), and token refreshing. I tested these flows using CLI and Postman, ensuring the backend can securely identify and authorize users.
I created a custom Lambda Authorizer to validate tokens sent from the client. This allowed me to enforce fine-grained access control and protect backend routes from unauthorized access. This step also increased my confidence with IAM policies and API Gateway security layers.
I implemented Global Secondary Indexes (GSI) to optimize queries and reduce latency for more complex data access patterns. I also improved error handling and input validation to ensure stable and predictable database behavior.
By the end of the week, I completed full request lifecycle testing:
Client request → API Gateway → Lambda → DynamoDB → API response.
I verified that authentication, database operations, and serverless execution flow work together smoothly.
I refactored Lambda functions to follow cleaner architecture principles, separating business logic, validation, and database operations. This makes future development easier and reduces potential bugs.