- Install Docker
- Install AWS SAM local from here
game-core: Includes only the Spring endpoints and the DynamodBD storage game-boot: Runs the project in Spring Boot game-lambda: Builds the jar that is deployable to AWS Lambda (SAM Local in this case)
For deployment we follow the SAM documentation
To build the project use gradlew
./gradlew build
- Get it here
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
./gradlew bootRun
sam local start-api -n env.json
$ curl localhost:3000/game?create=true
[]
$ curl localhost:3000/game -X POST -H "Content-Type: application/json" -d '{"playerId": "mark", "opponentId": "dave", "winnerId": "mark"}' | python -m json.tool0
{
"gameModelId": {
"playerId": "mark",
"createdTime": "2018-02-22T16:42:33.966Z"
},
"opponentId": "dave",
"winnerId": "mark",
"notes": null,
"createdTime": "2018-02-22T16:42:33.966Z",
"playerId": "mark"
}
$ curl localhost:3000/game -X POST -H "Content-Type: application/json" -d '{"playerId": "mark", "opponentId": "dave", "winnerId": "dave"}' | python -m json.tool
{
"gameModelId": {
"playerId": "mark",
"createdTime": "2018-02-22T16:42:48.781Z"
},
"opponentId": "dave",
"winnerId": "dave",
"notes": null,
"createdTime": "2018-02-22T16:42:48.781Z",
"playerId": "mark"
}
$ curl localhost:3000/game -X POST -H "Content-Type: application/json" -d '{"playerId": "mark", "opponentId": "bob", "winnerId": "mark"}' | python -m json.tool
{
"gameModelId": {
"playerId": "mark",
"createdTime": "2018-02-22T16:43:06.422Z"
},
"opponentId": "bob",
"winnerId": "mark",
"notes": null,
"createdTime": "2018-02-22T16:43:06.422Z",
"playerId": "mark"
}
$ curl localhost:3000/game/mark?opponentId=dave | python -m json.tool
[
{
"gameModelId": {
"playerId": "mark",
"createdTime": "2018-02-22T16:42:48.781Z"
},
"opponentId": "dave",
"winnerId": "dave",
"notes": null,
"createdTime": "2018-02-22T16:42:48.781Z",
"playerId": "mark"
},
{
"gameModelId": {
"playerId": "mark",
"createdTime": "2018-02-22T16:42:33.966Z"
},
"opponentId": "dave",
"winnerId": "mark",
"notes": null,
"createdTime": "2018-02-22T16:42:33.966Z",
"playerId": "mark"
}
]
$ curl http://localhost:3000/game/mark?winner=true | python -m json.tool
[
{
"gameModelId": {
"playerId": "mark",
"createdTime": "2018-02-22T16:42:33.966Z"
},
"opponentId": "dave",
"winnerId": "mark",
"notes": null,
"createdTime": "2018-02-22T16:42:33.966Z",
"playerId": "mark"
},
{
"gameModelId": {
"playerId": "mark",
"createdTime": "2018-02-22T16:43:06.422Z"
},
"opponentId": "bob",
"winnerId": "mark",
"notes": null,
"createdTime": "2018-02-22T16:43:06.422Z",
"playerId": "mark"
}
]
- Start SAM Local with a debug port
sam local start-api -n -d 5005 env.json
- Connect to port 5005 with your remote debugger