Skip to content

Instrument your Typescript code with AWS X-Ray using elegant decorators

License

Notifications You must be signed in to change notification settings

RafalWilinski/aws-xray-ts-decorator

Repository files navigation

AWS X-Ray Typescript Decorator

Tired of using AWSXRay.captureAsyncFunc and/or AWSXRay.capturePromise polluting the body of your methods? Instrument your class async methods and Promises with this simple yet elegant decorator.

License: MIT Twitter: rafalwilinski

Install

yarn add aws-xray-ts-decorator

or with NPM

npm install aws-xray-ts-decorator --save

Usage

class MyTestClass {
  // All of these arguments are optional
  @XRayInstrumented({
    segmentName: "customSegmentName", // by default it's name of called function
    metadata: { // Add custom metadata as StringMap
      memberId: "1"
    },
    annotations: { // Add custom annotations as StringMap
      context: "this is important!"
    },
    forceCreateSegment: true, // Creates new AWSXRay.Segment if such is not created yet
    addParamsMetadata: true // Adds function parameters as metadata of subsegment
  })
  someAsyncMethod(input: number): Promise<any> {
    ...
  }
}

This snippet will start a subsegment customSegmentName before someAsyncMethod gets invoked and close it as soon as it resolves.

For more details, see example.

Author

👤 Rafal Wilinski <[email protected]>

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2019 Rafal Wilinski <[email protected]>.
This project is MIT licensed.