我已将查看器请求和源响应 Lambda 函数部署到 CloudFront 分配,这些函数正在触发,但未记录到 CloudWatch。我花了大量时间研究这个主题,并浏览了其他帖子的所有建议,包括:
有趣的是,当我故意将错误编码到一个 Lambda 函数中时,我确实在一个名为/aws/cloudfront/LambdaEdge/<cloudfront distribution id>包含错误日志的组中创建了日志,但是这里的 console.log 语句没有输出。
在我的一生中,我无法弄清楚如何将所有请求(成功和失败)记录到 CloudWatch,其中包含使用 console.log() 的调试语句。
AWSServiceRoleForCloudFrontLogger 包含一个策略AWSCloudFrontLogger:
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:/aws/cloudfront/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
编辑:
以下是 AWS 支持建议的 AWS 角色。我可以确认这有效并解决了问题。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}```
Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge
我有一个 lambda_handler 函数,例如:
def lambda_handler(event, context):
print('test')
Run Code Online (Sandbox Code Playgroud)
我可以看到日志输出很好地传递到 CloudWatch。我可以看到开始、结束、语法错误等,所以我不认为这是权限问题,但我在任何地方都看不到我的打印语句。我的 IAM 角色允许执行以下操作:
允许:日志:CreateLogGroup
允许:日志:CreateLogStream
允许:日志:PutLogEvents
我的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
Run Code Online (Sandbox Code Playgroud)
如何查看用于调试的python api的实际堆栈跟踪?
python amazon-web-services aws-lambda serverless aws-serverless