【问题标题】:Sentry with Flask on AWS Lambda not capturing errorsAWS Lambda 上带有 Flask 的 Sentry 未捕获错误
【发布时间】:2020-01-05 03:58:16
【问题描述】:

我在 AWS lambda 上部署了一个烧瓶应用程序。为了执行错误跟踪,我想将 Sentry 集成到应用程序中。这是我的应用程序设置

def _handle_error(e):
    code = 500
    msg = 'Not Found'

    if isinstance(e, HTTPException):
        code = 404
    elif isinstance(e, ValueError):
        msg = str(e)

    logging.exception(e)

    if os.getenv('SENTRY_DSN'):
        event_id = sentry_sdk.capture_exception(e)
        logging.info(f'Error event was sent to sentry, event id: {event_id}')

    return jsonify({'error': msg}), code


def create_app():
    app = Flask(__name__)
    CORS(app, support_credentials=True)

    if os.getenv('SENTRY_DSN'):
        sentry_logging = LoggingIntegration(
            level=logging.DEBUG,     # Capture info and above as breadcrumbs
            event_level=logging.ERROR  # Send errors as events
        )

        sentry_sdk.init(dsn=os.getenv('SENTRY_DSN'),
                        integrations=[FlaskIntegration(), sentry_logging])

    app.register_blueprint(bp_routes)

    app.register_error_handler(Exception, _handle_error)

我使用烧瓶中的自定义错误处理程序能够返回没有任何敏感信息的通用错误消息。捕获错误时,我尝试在 Sentry 中手动创建事件

event_id = sentry_sdk.capture_exception(e)

使用python application.py 在本地运行代码一切正常,在 Sentry 中使用预期值创建事件。

将相同的代码部署到 lambda 时,不再生成该事件。

当我删除自定义烧瓶错误处理程序时

# app.register_error_handler(Exception, _handle_error)

并将其部署到生成事件的 lambda!

为什么 capture_exception 在 lambda 上不起作用?

【问题讨论】:

标签: python amazon-web-services flask sentry


【解决方案1】:

使用 AWS Lambda 下的任何 Web 框架另外需要安装 AWS Lambda integration

对于类似于 AWS Lambda 的服务,generic serverless integration 可能会变得有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-12
    • 2011-09-07
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2019-03-02
    • 2018-05-29
    • 2019-07-26
    相关资源
    最近更新 更多