AWS XRay: невозможно записать в /tmp/.aws-xray/initialized. Не удалось сообщить об инициализации SDK
Я пытаюсь написать лямбда-функцию для хранения данных в dyanamodb и пытаюсь интегрировать с AWS Xray. Ниже приведен код для лямбда-функции. Я получаю ошибку
Невозможно записать в /tmp/.aws-xray/initialized. Не удалось сообщить об инициализации SDK. Подсегмент put_item исключен из-за инициализации Lambda-работника
Я устанавливаю пакет Aws xray SDK. Кроме того, начальный сегмент и конечный сегмент включены в код. а также установить переменную окружения LAMBDA_TASK_ROOT. Пожалуйста, дайте решение этой ошибки.
def lambda_handler(event, context):
for i in event:
item = {
'key': i['key'],
'search': i['search'],
}
put_item_into_dynamodb(item)
response = {
"statusCode": 200,
"body": json.dumps(item)
}
return response
def put_item_into_dynamodb(item):
try:
xray_recorder.begin_subsegment('put_item')
response = table.put_item(Item=item)
status_code = response['ResponseMetadata']['HTTPStatusCode']
xray_recorder.current_subsegment().put_annotation('put_response', status_code)
finally:
xray_recorder.end_subsegment()
0 ответов
Вы не можете создавать сегменты в лямбда-функции. Lambda создаст сегменты во внешней оболочке, к которым вы не можете получить доступ внутри функции. Не могли бы вы попробовать изменить xray_recorder.begin_segment('get_item')
в xray_recorder.begin_subsegment('get_item')
?
Также данные трассировки, сгенерированные вне лямбда-обработчика, не будут захвачены, потому что в течение этого времени лямбда-функция все еще инициализируется и контекст трассировки недоступен.