Hello, my name is Eveling Castillo, and I embarked on the Cloud Resume Challenge as an opportunity to expand my knowledge of AWS and gain hands-on experience in building a full-stack, serverless application. Introduced to the challenge by my professor, I saw it as the perfect way to develop practical cloud computing skills while creating a fully functional website.
This experience has been both challenging and rewarding. It required persistence, problem-solving, and the ability to integrate multiple AWS services effectively. By overcoming technical obstacles, I gained confidence in cloud infrastructure, automation, and serverless architecture.
*Technologies & Tools Used *
Throughout the project, I leveraged several AWS services and automation tools to streamline the development process:
- AWS – The core cloud platform for hosting and managing resources.
- CloudFormation – Enabled Infrastructure as Code (IaC) to automate AWS resource deployment.
- S3 – Served as the storage solution for my website’s front-end files.
- Lambda – Provided a serverless compute environment to execute back-end logic.
- API Gateway – Facilitated communication between the front-end and Lambda functions.
- DynamoDB – Stored website visitor data efficiently.
- GitHub Actions – Implemented CI/CD to automate deployments and ensure a seamless workflow.
Key Takeaways & Skills Gained
Infrastructure as Code (IaC)
By utilizing CloudFormation and the AWS Serverless Application Model (SAM), I automated the deployment of AWS resources. This approach ensured consistency, reduced manual configuration errors, and improved overall efficiency.
CI/CD & Automated Deployments
Integrating GitHub Actions allowed me to implement Continuous Integration and Continuous Deployment (CI/CD), automating the deployment process for my Lambda functions. This eliminated the need for manual updates and ensured seamless deployments.
Front-End Integration with AWS Services
Hosting the website on S3 and configuring CloudFront for content delivery enabled global distribution. Additionally, I learned how to handle cache invalidation to ensure users always viewed the latest version of the site.
Serverless Back-End Development
The back-end consisted of an API Gateway, Lambda functions, and DynamoDB. I developed an API to handle user interactions and store visitor data efficiently. Debugging and optimizing API requests played a crucial role in ensuring a smooth user experience.
Challenges & Problem-Solving
API Integration & JavaScript Troubleshooting
Connecting the front-end to the back-end required writing JavaScript to make API calls to AWS services. Some key challenges I faced included:
- Debugging CORS (Cross-Origin Resource Sharing) errors that initially blocked API requests.
- Resolving formatting issues in API responses to ensure proper data handling.
- Identifying a typo in the API Gateway URL that caused failed requests.
CI/CD Configuration & AWS Permissions
Implementing GitHub Actions for automated deployments introduced its own challenges:
- Ensuring the correct IAM permissions for GitHub Actions to interact with AWS securely.
- Debugging syntax errors in YAML configuration files, which are highly sensitive to formatting.
- Interpreting AWS deployment logs to resolve failed deployment attempts.
CloudFront Caching & Content Updates
After making updates to my website, I initially encountered an issue where changes were not reflected immediately. I learned to configure CloudFront cache invalidation to ensure users always received the latest version of the site.
Lambda Function Debugging
Developing and troubleshooting AWS Lambda functions required:
- Adjusting IAM roles to grant the necessary access to AWS services.
- Correcting JSON request formats to avoid errors in API responses.
- Optimizing execution times by refining function logic and eliminating unnecessary loops.
Conclusion
The Cloud Resume Challenge was a transformative experience that strengthened my understanding of cloud computing, automation, and serverless technologies. Through hands-on implementation, I developed skills in AWS architecture, API development, and CI/CD workflows.
Beyond the technical aspects, this project reinforced the importance of problem-solving, debugging, and adaptability. Every challenge presented an opportunity to learn and grow, ultimately enhancing my confidence in cloud development.
I look forward to applying these skills to future projects and continuing to explore innovations in cloud technology.