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')?

Также данные трассировки, сгенерированные вне лямбда-обработчика, не будут захвачены, потому что в течение этого времени лямбда-функция все еще инициализируется и контекст трассировки недоступен.

Другие вопросы по тегам