AWS Рентгенограмма нескольких лямбда-функций - PullRequest
0 голосов
/ 31 марта 2020

У меня есть несколько Python лямбда-функций с включенной трассировкой, они запускаются так:

import json
import boto3
from aws_xray_sdk.core import patch
from aws_xray_sdk.core import xray_recorder

patch(['boto3'])

def lambda_handler(event, context):
  ...

При этой трассировке работает для каждой самой лямбда-функции, и я могу видеть вызовы вспомогательной службы DynamoDB или Kinesis осуществляется через boto3.

Но как я могу соединить различные лямбда-функции вместе в одной трассе? Я думаю о генерации уникальной строки в первой функции и записи ее в сохраненное сообщение. в Кинезисе. Затем другая функция выберет строку из сообщения Kinesis и проследит ее снова.

Как это возможно, чтобы затем увидеть весь связанный след в X-Ray?

1 Ответ

1 голос
/ 01 апреля 2020

Если в вашей вышестоящей службе, которая вызывает ваши функции Lambda, включена трассировка, ваши функции будут автоматически отправлять трассировки. Из вашего вопроса, я не уверен, как ваши функции вызываются. Если одна функция напрямую вызывает другую функцию, у вас будет для них единственная трассировка.

Для вашего подхода к вызову лямбд с сообщениями Kinesis я не уверен, что он достиг бы того, чего вы хотите, по нескольким причинам. Во-первых, Kinesis не интегрирован с X-Ray, что означает, что он не будет распространять Заголовок трассировки к нижней лямбда Во-вторых, сегмент и заголовок трассировки для лямбда-функции не доступны напрямую из кода вашей функции, поскольку они генерируются лямбда-средой выполнения при вызове и поэтому являются неизменяемыми. Явное переопределение идентификатора трассировки в лямбда-функции может привести к нежелательному поведению вашего сервисного графа.

Спасибо.

...