Difficulty 1: Resource collisions due to Hard-coded Names
develop and local) on the same AWS account (due to duplicate TopicName and Secrets Manager Name).${AWS::StackName} or allowing AWS to auto-generate random physical IDs, making the environments completely isolated and infinitely scalable.Difficulty 2: Silent AccessDenied from Policy Templates
AWSSecretsManagerGetSecretValuePolicy to grant Lambda permissions to read the HMAC key. However, upon deployment, Lambda still threw 500 errors due to AccessDeniedException and ResourceNotFoundException.Statement block with Resource: !Ref HmacSecretV2). Changing the Logical ID to HmacSecretV2 also forced CloudFormation to provision a new resource, perfectly syncing the correct ARN.These debugging experiences provided invaluable lessons on the meticulousness required when operating Serverless infrastructure and enforcing the Principle of Least Privilege on AWS.
During the project’s implementation, I was directly involved in bringing both the Frontend and Backend to life. Connecting the backend Serverless services with the user interface myself helped me grasp the overarching data flow comprehensively. Thanks to this holistic view, I was also able to oversee the general technical progress, assist with debugging, and guide how different modules should be pieced together to ensure the system operates as smoothly and uniformly as possible.