Открытая телеметрия в AWS Lambda приводит к ошибкам сериализацииPython

Программы на Python
Anonymous
Открытая телеметрия в AWS Lambda приводит к ошибкам сериализации

Сообщение Anonymous »

У нас есть установка, в которой мы используем бессерверное приложение Lambda Flask за шлюзом API. Мы начали добавлять Opentelemetry в качестве дополнительного уровня в лямбда-функцию (arn:aws:lambda:eu-central-1:184161586896:layer:opentelemetry-python-0_18_0:2 с AWS_LAMBDA_EXEC_WRAPPER: "/opt/otel-instrument"). При этом мы получаем множество ошибок.
Один пример такой ошибки:

Код: Выделить всё

@app.route("/s3/credentials", methods=["GET"])
def credentials():
user = get_user() # returns a string
credentials = request_credentials(User=user)

credentials["Expiration"] = str(credentials["Expiration"])
return jsonify(credentials)

def request_credentials(self, User=None):
arn = RoleFinder().find_by_name(User)["Arn"]
res = self._client.assume_role(RoleArn=arn, RoleSessionName="bucket-lambda")
return res["Credentials"]
Из журналов мы видим, что возвращаемая строка jsonify никогда не достигается, хотя лямбда-функция утверждает, что выполняется успешно. Ответ, который мы получаем, имеет статус 500 с сообщением об ошибке {'error': 'Объект типа datetime не является сериализуемым в формате JSON'}.
База кода действительно велика, и многие функции наверняка имеют несериализуемые возвращаемые значения. Не упускаем ли мы что-то очевидное, как нам нужно настроить открытую телеметрию?

Вернуться в «Python»