【问题标题】:How to send lambda's offline traces to a local xray daemon with serverless offline?如何使用无服务器离线将 lambda 的离线跟踪发送到本地 xray 守护程序?
【发布时间】:2019-11-04 12:39:49
【问题描述】:

我可以使用无服务器离线本地执行 lambda,我已在 .env 文件中将 AWS_DAEMON_ADRESS 设置为“127.0.0.1:2000”,但监听此端口的正在运行的守护程序不会从执行中接收任何数据。 问题是使用在线 lambda 执行的相同代码可以正常工作,并且 X 射线服务地图是正确馈送的。 我是否错过了离线配置中的某些内容?

这是一个 nodeJS 8.10 lambda,由 localhost:3000 上的 Postman 触发。 我尝试直接在 lambda 的函数代码中设置守护程序地址(127.0.0.1),当 sls 收到调用时,它说守护程序地址已配置(使用 .env 变量)。

我已经在 serverless.yml 文件中激活了对 apiGateway 和 lambda 的跟踪,当我向 /dev/udp/127.0.0.1/2000 回显任何内容时,守护程序会接收信息

const xray = require('aws-xray-sdk')
const aws = require('aws-sdk')
xray.captureAWS(aws)

我除了本地守护程序从离线 lambda 执行接收一些信息,但没有任何反应

【问题讨论】:

    标签: node.js aws-lambda daemon aws-xray serverless-offline


    【解决方案1】:

    您使用的是本地 SAM 吗?不幸的是,他们目前没有 X 射线的连接。 https://github.com/awslabs/aws-sam-cli/issues/217

    【讨论】:

    • 是的,我使用的是本地 SAM。我尝试将格式正确(但随机)的 trace-id 导出为父级,但实际上没有反应守护进程端
    • 你认为使用Cloud9可以解决本地模式不挂机的问题吗?
    • 跟踪 ID 不能是随机的,因为它的一部分包含时间戳 - 格式在这里:docs.aws.amazon.com/xray/latest/devguide/… - 此外,X-Ray SDK 预计根段已经由Lambda - Lambda 上的行为是独一无二的(各种 SDK 在后台处理此问题的方式也有所不同) - 请参阅此处的帖子以获得进一步说明:github.com/aws/aws-xray-sdk-go/issues/126
    • 不幸的是,我不太确定 Cloud9 - 我没有找到任何关于 X 射线的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多