python - 返回非 json 对象作为 lambda 响应

标签 python json aws-lambda

当流程未按预期工作时,我希望能够返回异常作为我的 lambda 响应,因此我正在执行类似的操作

def handler(event, context):
    try:
        project = event['environment']
    except Exception as ex:
        return {
            'statusCode': 500,
            'body': json.dumps(ex)
        }

但是这会过早失败,如下所示

{"errorMessage": "Object of type KeyError is not JSON serializable", "errorType": "TypeError", "stackTrace": ["  File \"/var/task/hr-management.py\", line 23, in handler\n    'body': json.dumps(ex)\n", "  File \"/var/lang/lib/python3.8/json/__init__.py\", line 231, in dumps\n    return _default_encoder.encode(obj)\n", "  File \"/var/lang/lib/python3.8/json/encoder.py\", line 199, in encode\n    chunks = self.iterencode(o, _one_shot=True)\n", "  File \"/var/lang/lib/python3.8/json/encoder.py\", line 257, in iterencode\n    return _iterencode(o, 0)\n", "  File \"/var/lang/lib/python3.8/json/encoder.py\", line 179, in default\n    raise TypeError(f'Object of type {o.__class__.__name__} '\n"]}%

我也尝试过:

def handler(event, context):
    try:
        project = event['environment']
    except Exception as ex:
        return {
            'statusCode': 500,
            'body': ex
        }

有什么建议吗?

最佳答案

如果您只是以字符串形式查找异常,请使用:

def handler(event, context):
    try:
        project = event['environment']
    except Exception as ex:
        return {
            'statusCode': 500,
            'body': json.dumps(ex.__repr__())
        }

___repr__() 返回一个字符串,用于格式化类,例如 print(class_example),它是一个可读性工具。

关于python - 返回非 json 对象作为 lambda 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67557170/

相关文章:

asp.net-mvc - 从 Asp.net WEBAPI 显式返回 JSON 字符串?

json - 带有 $.ajax 类型的自定义 header jnop 或 json

aws-lambda - 将 Lambda 函数排除在部署到特定阶段之外

python - 使用 python re 删除数字后的单位

python - python中的图形渲染(流程图可视化)

python - Django 1.11 TypeError 上下文必须是 dict 而不是 Context

python - Django 信号卡在循环中

Java 中的 JSON 补丁请求验证

amazon-web-services - 使用 SAM 时,AWS sam build 和 sam package 有什么区别?

node.js - 子目录中的 Sam 本地模板处理程序