亚马逊lambda不显示python日志

时间:2018-06-13 09:49:52

标签: python amazon-web-services aws-lambda serverless aws-serverless

我的API(Python)部署在Amazon Lambda上。问题是,当我请求我的API时,我收到内部服务器错误。我可以拖尾Lambda日志,但我没有看到代码崩溃的实际错误或堆栈跟踪。当我拖尾日志时,我得到以下输出。

START RequestId: 62341bgd-6231-11e8-8c5b-25793532a32u Version: $LATEST
END RequestId: 62341b0d-6231-1128-8r5b-2b793032a3ed
REPORT RequestId: 6234te0b-6rte-aaa8-au5a-21t93132r3rt  Duration: 0.46 ms

如何查看python api的实际堆栈跟踪以进行调试?

3 个答案:

答案 0 :(得分:2)

Lambda总是尝试将Python堆栈跟踪写入CloudWatch。确保您的函数具有所需的权限:

    {
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Resource": "arn:aws:logs:eu-west-1:123456789012:*"
    },
    {
        "Effect": "Allow",
        "Action": "logs:CreateLogGroup",
        "Resource": "*"
    }

答案 1 :(得分:1)

如果您使用Lambda_basic_execution角色,python中的简单打印将在cloudwatch中显示日志。

答案 2 :(得分:0)

初步调查:

默认情况下,lambda函数通过我的API名称在CloudWatch中创建日志组。例如,/ aws / lambda / my_api_name显示类似的输出。

START RequestId: 62341bgd-6231-11e8-8c5b-25793532a32u Version: $LATEST
END RequestId: 62341b0d-6231-1128-8r5b-2b793032a3ed
REPORT RequestId: 6234te0b-6rte-aaa8-au5a-21t93132r3rt  Duration: 0.46 ms

问题解决:

我为我的云监视创建了一个服务角色(AWS已经提供的CloudWatch的所有权限的默认策略),然后将此角色放入我的API中。我跟着这个approach。但是,另一个步骤可能是将新创建的执行日志与默认日志组合在一起,这样我们就有一个日志组可以尾随。