Skip to content

GraphQL Middleware to add X-Ray tracing for resolvers

Source location - lifeomic/graphql-resolvers-xray-tracing

npm Greenkeeper badge Build Status Coverage Status

To enable X-Ray subsegment creation for GraphQL resolvers, add this package as a dependency of your project and use code like this:

const traceResolvers = require('@lifeomic/graphql-resolvers-xray-tracing');
const schema = makeExecutableSchema( ... );
traceResolvers(schema);

After enabling X-Ray tracing, you should see new subsegments in your X-Ray traces like this:

Image of X-Ray trace

Local Development

If you would like to run your GraphQL server without tracing the resolvers (such as during local development), you can use environment variables to conditionally wrap them. For example, the AWS Lambda runtime injects the AWS_LAMBDA_FUNCTION_NAME which you can use so that the resolvers are only traced when running on Lambda:

const traceResolvers = require('@lifeomic/graphql-resolvers-xray-tracing');
const schema = makeExecutableSchema( ... );
if (process.env.AWS_LAMBDA_FUNCTION_NAME) {
  traceResolvers(schema);
}

Last update: 2020-09-25