I want to trace calls to the Python AWS SDK (boto3
) by using the X-Ray SDK. According to the X-Ray docs, I have to patch boto3
. Then X-Ray will automatically create sub-segments, so I only have to surround the AWS SDK calls inside a segment. Here is my code:
import boto3
from aws_xray_sdk.core import xray_recorder, patch_all
patch_all()
codecommit = boto3.client("codecommit")
# begin a segment
xray_recorder.begin_segment("Main")
# create a CodeCommit repository named "myrepo1"
codecommit.create_repository(repositoryName="myrepo1")
# end a segment
xray_recorder.end_segment("Main")
First I start the X-Ray daemon, then I run the script. However, the daemon returns the following error:
2018-07-27T15:33:01+08:00 [Info] Successfully sent batch of 1 segments (0.146 seconds)
2018-07-27T15:33:01+08:00 [Error] Unprocessed segment: {
ErrorCode: "MissingEndTime",
Id: "74d23cdcc7b60c3f",
Message: "Invalid segment. ErrorCode: MissingEndTime"
}
2018-07-27T15:33:01+08:00 [Warn] Batch that contains unprocessed segments
2018-07-27T15:33:01+08:00 [Warn] {"aws": {"xray": {"sdk": "X-Ray for Python", "sdk_version": "1.1.2"}}, "end_time": "MainSegment", "id": "74d23cdcc7b60c3f", "in_progress": false, "name": "MainSegment", "service": {"runtime": "CPython", "runtime_version": "3.6.5"}, "start_time": 1532676780.5897238, "subsegments": [{"aws": {"operation": "CreateRepository", "region": "ap-southeast-1", "request_id": "4a82bf29-916f-11e8-a631-85af1e9bc33f"}, "end_time": 1532676781.4089937, "http": {"response": {"status": 200}}, "id": "8ec94650265cf358", "in_progress": false, "name": "codecommit", "namespace": "aws", "parent_id": "74d23cdcc7b60c3f", "start_time": 1532676780.617356, "subsegments": [{"end_time": 1532676781.0933495, "http": {"request": {"method": "POST", "url": "https://codecommit.ap-southeast-1.amazonaws.com/"}}, "id": "77c7d8a0f67f8e13", "in_progress": false, "name": "https://codecommit.ap-southeast-1.amazonaws.com/", "namespace": "remote", "parent_id": "8ec94650265cf358", "start_time": 1532676781.0926085, "trace_id": "1-5b5acaac-b87df6ecbf3edbb29d4442f3", "type": "subsegment"}, {"end_time": 1532676781.40752, "http": {"request": {"method": "POST", "url": "https://codecommit.ap-southeast-1.amazonaws.com/"}, "response": {"status": 200}}, "id": "530f510699b9a050", "in_progress": false, "name": "https://codecommit.ap-southeast-1.amazonaws.com/", "namespace": "remote", "parent_id": "8ec94650265cf358", "start_time": 1532676781.093692, "trace_id": "1-5b5acaac-b87df6ecbf3edbb29d4442f3", "type": "subsegment"}, {"end_time": 1532676781.4083207, "http": {"request": {"method": "READ", "url": "https://codecommit.ap-southeast-1.amazonaws.com/"}, "response": {"status": 200}}, "id": "ad9b717abe0773e5", "in_progress": false, "name": "https://codecommit.ap-southeast-1.amazonaws.com/", "namespace": "remote", "parent_id": "8ec94650265cf358", "start_time": 1532676781.408112, "trace_id": "1-5b5acaac-b87df6ecbf3edbb29d4442f3", "type": "subsegment"}, {"end_time": 1532676781.408436, "http": {"request": {"method": "READ", "url": "https://codecommit.ap-southeast-1.amazonaws.com/"}, "response": {"status": 200}}, "id": "9d0e8e7b08a3030b", "in_progress": false, "name": "https://codecommit.ap-southeast-1.amazonaws.com/", "namespace": "remote", "parent_id": "8ec94650265cf358", "start_time": 1532676781.4084244, "trace_id": "1-5b5acaac-b87df6ecbf3edbb29d4442f3", "type": "subsegment"}], "trace_id": "1-5b5acaac-b87df6ecbf3edbb29d4442f3", "type": "subsegment"}], "trace_id": "1-5b5acaac-b87df6ecbf3edbb29d4442f3"}
Further, when I view X-Ray on AWS Console, nothing appears on the service graphs nor traces.
Searching the web, I couldn't find any instances of this error. Did I miss something?