Reference

Base Class

class TriggeredXrayRecorder(trace_header, trigger_metadata, lambda_request_id, lambda_arn, region=None, setup_environment=True)

Provides setup defaults to allow trace continuation from any existing trace.

Example

>>> from aws_xray_lambda_segment_shim import TriggeredXrayRecorder
>>> from aws_xray_sdk.core.models.trace_header import TraceHeader
>>> recorder = TriggeredXrayRecorder(
...     trace_header=TraceHeader(
...         root="1-5759e988-bd862e3fe1be46a994272793",
...         parent="3995c3f42cd8ad8",
...         sampled=1,
...     ),
...     trigger_metadata={"message_id": "059f36b4-87a3-44ab-83d2-661975830a7d"},
...     lambda_request_id="test_request_id",
...     lambda_arn="arn:aws:lambda:us-west-2:123456789012:function:my-function",
...     region="eu-west-1",
... )
>>> with recorder.in_segment() as segment:
...     segment.trace_id
'1-5759e988-bd862e3fe1be46a994272793'
Parameters
Return type

None

Helper Functions

get_sqs_triggered_recorder(record, lambda_request_id, lambda_arn, region=None, setup_environment=True)

Continue a trace from an SQS message.

For this to work the SQS message must have a trace header. Trace headers are populated in SQS messages when the message is put on the queue by an AWS X-Ray instrumented AWS SDK (e.g. boto3).

For more on how SQS and X-Ray work consult the documentation.

Example

>>> from aws_xray_lambda_segment_shim import get_sqs_triggered_recorder
>>> # Setup the lambda handler
>>> def lambda_handler(event, context):
...     for i, record in enumerate(event["Records"]):
...         recorder = get_sqs_triggered_recorder(
...             record=record,
...             lambda_request_id=context.aws_request_id,
...             lambda_arn=context.invoked_function_arn,
...         )
...         with recorder.in_segment() as segment:
...             print(
...                 "I'm triggered by an SQS Record and using trace id ",
...                 segment.trace_id
...             )
>>> # Pretend we're invoking the lambda
>>> lambda_handler(
...     event=MOCK_EVENT,
...     context=MOCK_CONTEXT,
... )
I'm triggered by an SQS Record and using trace id  1-5759e988-bd862e3fe1be46a994272793
Parameters
  • record (dict) –

  • lambda_request_id (str) –

  • lambda_arn (str) –

  • region (Optional[str]) –

  • setup_environment (bool) –

Return type

aws_xray_lambda_segment_shim.recorder.TriggeredXrayRecorder