Minecloudcraft - Cloud Developer - Code Challenges Placeholder
Your task is to demonstrate your skills in using Infrastructure as Code (IaC) to automate cloud resources provisioning. You will create a project on GitHub that provisions an AWS Step Function (Express) in AWS, integrating with other AWS services to simulate a game session workflow.
-
Infrastructure as Code: Utilize an IaC tool of your choice (e.g., AWS CloudFormation, Terraform) to provision the required AWS resources. Your code should be well-organized, commented, and follow best practices.
-
AWS Step Function (Express): Create an AWS Step Function (Express) that orchestrates the following workflow, which should be triggered by the reception of a game-session-request.requested event on the custom event bus
my-event-bus
:- Event Publishing: At the start of the workflow, publish an event game-session-request.started to a custom event bus named my-event-bus.
- DynamoDB Interaction: Insert an object into a DynamoDB table named my-dynamo-db-table. The object should describe a game session, including fields like hostname, players, map, and mode.
- Error Handling: In case of any errors during the workflow, publish a game-session-request.failed event to my-event-bus.
- Success Completion: Upon successful completion of the workflow, publish a game-session-request.finished event to my-event-bus.
-
Event Examples:
- game-session-request.requested
{
"source": "code-challenge",
"detail-type": "game-session-request.requested",
"detail": {
"sessionId": "<unique_session_id>",
"gameDetails": {
"hostname": "<hostname>",
"players": <number_of_players>,
"map": "<game_map>",
"mode": "<game_mode>"
}
}
}
- game-session-request.started
{
"source": "code-challenge",
"detail-type": "game-session-request.started",
"detail": {
"sessionId": "<unique_session_id>"
}
}
- game-session-request.failed
{
"source": "code-challenge",
"detail-type": "game-session-request.failed",
"detail": {
"sessionId": "<unique_session_id>",
"error": "<error_message>"
}
}
- game-session-request.finished
{
"source": "code-challenge",
"event": "game-session-request.finished",
"detail": {
"sessionId": "<unique_session_id>",
"gameDetails": {
"hostname": "<hostname>",
"players": <number_of_players>,
"map": "<game_map>",
"mode": "<game_mode>"
}
}
}
- Fork this GitHub repository
- Ensure your project is well-documented, explaining how to deploy and test your infrastructure.
- Once completed, submit a pull request to the main repository with your changes.
- Include a
NOTES.md
in your project detailing your approach, any assumptions made, and instructions on how to execute your IaC scripts.
- Code Quality: Clarity, maintainability, and adherence to IaC best practices.
- Functionality: The AWS resources are provisioned as per the requirements, and the Step Function workflow executes correctly upon receiving the game-session-request.requested event.
- Documentation: Clear instructions and explanations in your project's NOTES.md.
Good luck, and we're looking forward to seeing your innovative solutions!