AWS X-Ray sample application - AWS X-Ray

AWS X-Ray sample application

The AWS X-Ray eb-java-scorekeep sample app, available on GitHub, shows the use of the AWS X-Ray SDK to instrument incoming HTTP calls, DynamoDB SDK clients, and HTTP clients. The sample app uses AWS CloudFormation to create DynamoDB tables, compile Java code on instance, and run the X-Ray daemon without any additional configuration.

See the Scorekeep tutorial to start installing and using an instrumented sample application, using the AWS Management Console or the AWS CLI.

Scorekeep uses the AWS X-Ray SDK to instrument incoming HTTP calls, DynamoDB SDK clients, and HTTP clients

The sample includes a front-end web app, the API that it calls, and the DynamoDB tables that it uses to store data. Basic instrumentation with filters, plugins, and instrumented AWS SDK clients is shown in the project's xray-gettingstarted branch. This is the branch that you deploy in the getting started tutorial. Because this branch only includes the basics, you can diff it against the master branch to quickly understand the basics.

The sample application shows basic instrumentation in these files:

The xray branch of the application includes the use of HTTPClient, Annotations, SQL queries, custom subsegments, an instrumented AWS Lambda function, and instrumented initialization code and scripts.

To support user log-in and AWS SDK for JavaScript use in the browser, the xray-cognito branch adds Amazon Cognito to support user authentication and authorization. With credentials retrieved from Amazon Cognito, the web app also sends trace data to X-Ray to record request information from the client's point of view. The browser client appears as its own node on the trace map, and records additional information, including the URL of the page that the user is viewing, and the user's ID.

Finally, the xray-worker branch adds an instrumented Python Lambda function that runs independently, processing items from an Amazon SQS queue. Scorekeep adds an item to the queue each time a game ends. The Lambda worker, triggered by CloudWatch Events, pulls items from the queue every few minutes and processes them to store game records in Amazon S3 for analysis.