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 Elastic Beanstalk
features to create DynamoDB
tables, compile Java code on instance, and run the X-Ray daemon without any additional
configuration.

The sample is an instrumented version of the Scorekeep project on AWSLabs. It
includes a front-end web app, the API that it calls, and the DynamoDB tables that
it uses to store
data. All the components are hosted in an Elastic Beanstalk environment for portability
and ease of
deployment.

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 service
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.

With all features enabled, Scorekeep's service map looks like this:

For instructions on using the sample application with X-Ray, see the getting started tutorial. In addition to the basic use of
the X-Ray SDK for Java discussed in the tutorial, the sample also shows how to use
the following
features.