Amazon web services 如何为X射线创建自定义跟踪id?

Amazon web services 如何为X射线创建自定义跟踪id?,amazon-web-services,aws-lambda,aws-xray,Amazon Web Services,Aws Lambda,Aws Xray,我正在制作lambdas并使用X射线检查性能。我的lambda将写入其他dynamodb表,通过流触发另一个lambda。另一个lambda将携带该事件,并在RDS和外部应用程序中发布数据 我想把跟踪数据放在这个流中,以跟踪整个过程。我知道AWS有内置支持,可以在lambda中启用X射线。但它并没有涵盖我的应用程序中的整个事件流。我是否有办法在事件中手动设置跟踪ID,并让X射线使用此ID跟踪事件流 如果我可以手动将跟踪推送到X射线,我如何使dynamodb流使用跟踪id触发lambda?您可以使

我正在制作lambdas并使用X射线检查性能。我的lambda将写入其他dynamodb表,通过流触发另一个lambda。另一个lambda将携带该事件,并在RDS和外部应用程序中发布数据

我想把跟踪数据放在这个流中,以跟踪整个过程。我知道AWS有内置支持,可以在lambda中启用X射线。但它并没有涵盖我的应用程序中的整个事件流。我是否有办法在事件中手动设置跟踪ID,并让X射线使用此ID跟踪事件流


如果我可以手动将跟踪推送到X射线,我如何使dynamodb流使用跟踪id触发lambda?

您可以使用跟踪id!跟踪ID在请求在服务之间传输时跟踪请求

在这里,您可以了解有关如何使用该功能的更多信息:


继续摇

X射线还不支持对DynamoDB流进行跟踪。对于您的应用程序结构,如果在lambda上都启用了活动跟踪,并且检测了下游AWS服务调用(在您的情况下为DDB),您将看到如下跟踪映射(在DDB stream事件时断开连接):

客户端->Lambda->LambdaFunction\u A->DDB

客户端->Lambda->LambdaFunction\u B->RDS

这是因为DDB流当前不传播端到端跟踪所需的跟踪头

另一个限制是,如果没有从上游传入跟踪id,Lambda函数调用将生成自己的跟踪id。您不能从lambda函数中覆盖此跟踪id。

对于,建议您在本地使用环境变量:

# Required for XRAY tracing to work locally
export AWS_XRAY_CONTEXT_MISSING=LOG_ERROR
export _X_AMZN_TRACE_ID=some_uuid
export DISABLE_XRAY_TRACING=1
对于由非API网关事件触发的lambda,这是否可以远程工作?e、 例如,在您的代码中:

process.env._X_AMZN_TRACE_ID=abc-123; // some UUID

我有一个听起来不错的解决方案。但在我的例子中,如何让dynamodb流携带跟踪ID来触发lambda?我想使用lambda中相同的跟踪id,将数据保存到dynamodb,并在另一个lambda中接收流式更新事件。@joeyizhao你知道吗?我认为这是一个合理的问题。似乎没有为非API网关事件生成跟踪ID。我知道您可以在本地为此设置一个env var,但不确定它是否有效-我将把它作为一个答案,我们可以从那里开始。