AWS X-ray 打开 'AWSXRay.log' 出错

AWS X-ray open 'AWSXRay.log' at Error

我们正在根据 XRay 入门使用基本的 nodejs 配置测试 AWS XRay,但是抛出了错误。它是一个虚拟的 express 应用程序,节点 4.3 上的 Lambda,所以应该可以工作。错误是

错误:EROFS:只读文件系统,打开 'AWSXRay.log' 时出错(本机)

有什么想法吗?

谢谢

戴夫

适用于 JavaScript 的 AWS X-Ray SDK 将使用日志记录库将消息记录到文件中,但由于您在 Lambda 上 运行,您实际上无权创建文件系统上的文件。

目前 Lambda 不支持 AWS X-Ray,但将来会支持。

作为临时解决方法,您可以尝试使用如下方式覆盖 lambda 函数中的记录器:

var logger = require('aws-xray-sdk/lib/logger');
logger.error = function(string) { console.error(string); };
logger.info = function(string) { console.info(string); };
logger.warn = function(string) { console.warn(string); };

你能试试这个解决方法吗?

除了检测您的应用程序代码外,您还需要将段/子段发送到 X-Ray 后端。在 lambda 之外,您通常会在计算机上安装 xray 守护程序 运行,并且 SDK 会通过 UDP 将段发送到本地主机。守护进程将使用 AWS SDK 缓冲数据并将其发送到 X-Ray。在 lambda 上,您目前没有此功能,因为您没有守护进程 运行 以及您的 lambda 函数。这意味着目前您可以使用 SDK 手动构建段/子段,然后使用 AWS SDK 将数据发送到后端。然而,这不是推荐的最佳实践,因为如果您发送大量段,守护程序会为您缓冲。如果您使用的是低级 SDK,则必须自行管理缓冲。

您可以使用上述解决方法,看看它是否适合您。推荐的方法是等待 Lambda 与 AWS 集成 X-Ray.