【发布时间】:2019-07-03 14:49:55
【问题描述】:
我有一个非常简单的 Lambda 函数,我使用一个运行 ECS 任务的 IOT 按钮调用它,非常轻量级的东西。我一直对添加 Tracing 很感兴趣,但发现您从 Lambda 获得的“一键式”跟踪并不能立即为您提供很多东西。
我一直在阅读一些关于Decorators 和SDK Github 的帖子以及Python tracing for Lambda 上的AWS 文档,并认为这应该很容易。
我的函数的开头现在如下
import boto3
from aws_xray_sdk.core import xray_recorder
@xray_recorder.capture("handler")
def handler(event,context):
client = boto3.client('ecs')
response = client.run_task(
---python code---
return str(response)
现在测试给我这样的错误:
Response:
{
"errorMessage": "Unable to import module 'lambda_function'"
}
Request ID:
"REQID...e3f379f4702a"
Function Logs:
START RequestId: REQID...e3f379f4702a Version: $LATEST
Unable to import module 'lambda_function': No module named 'aws_xray_sdk'
我在控制台中的处理程序只是lambda_function.handler,并且在添加该检测之前工作。我已经做了一些其他尝试,尝试在代码中使用 Subsegments 并遇到同样的问题。在 Python 方面我是个新手,所以我不确定下一步该检查哪里,或者我是否正确地执行了此操作。
如果适用,我已经在控制台中编写了代码,也没有使用图层或 ZIP 包装
【问题讨论】:
-
python 文件名是什么?如果你的 python 文件名是
lambda_function.py,那么你将它命名为lambda_function.handler,但如果它是lambda.py,那么在这种情况下你的处理程序将命名为lambda.handler。所以简而言之,处理程序名称应该是python-filename.function-name -
@d_kennetz 我的 Python 文件名是
lambda_function.py- 所以我认为我的处理程序设置正确。如果代码中没有from aws_xray_sdk.core import xray_recorder @xray_recorder.capture("handler"),我可以正常工作
标签: python amazon-web-services aws-lambda python-3.6 aws-xray