Amazon X-Ray sample application - Amazon X-Ray
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Amazon X-Ray sample application

The Amazon X-Ray eb-java-scorekeep sample app, available on GitHub, shows the use of the Amazon X-Ray SDK to instrument incoming HTTP calls, DynamoDB SDK clients, and HTTP clients. The sample app uses Amazon 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 Amazon Web Services Management Console or the Amazon CLI.

Scorekeep uses the Amazon 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 Amazon 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 Amazon Lambda function, and instrumented initialization code and scripts.

To support user log-in and Amazon 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.