gpt4 book ai didi

node.js - 在 Lambda 中将 AWS X-ray 与 node.js 结合使用时出现错误 :"Failed to get the current sub/segment from the context"

转载 作者:行者123 更新时间:2023-12-03 00:29:38 24 4
gpt4 key购买 nike

我正在尝试将 AWS X-ray 实现到我当前的项目中(使用 Node.js 和无服务器框架)。我正在尝试将 X 射线连接到我的 lambda 函数之一,我遇到了问题

Error: Failed to get the current sub/segment from the context.
at Object.contextMissingRuntimeError [as contextMissing] (/.../node_modules/aws-xray-sdk-core/lib/context_utils.js:21:15)
at Object.getSegment (/.../node_modules/aws-xray-sdk-core/lib/context_utils.js:92:45)
at Object.resolveSegment (/.../node_modules/aws-xray-sdk-core/lib/context_utils.js:73:19).....

代码如下:

import { DynamoDB } from "aws-sdk";
import AWSXRay from 'aws-xray-sdk';

export const handler = async (event, context, callback) => {

const dynamo = new DynamoDB.DocumentClient({
service: new DynamoDB({ region })
});

AWSXRay.captureAWSClient(dynamo.service);

try {
// call dynamoDB function
} catch(err) {
//...
}
}

对于这个问题,我使用了解决方案 https://forums.aws.amazon.com/thread.jspa?messageID=821510&#821510

我尝试的另一个解决方案来自 https://forums.aws.amazon.com/thread.jspa?messageID=829923&#829923

代码就像

import AWSXRay from 'aws-xray-sdk';
const AWS = AWSXRay.captureAWS(require('aws-sdk'));

export const handler = async (event, context, callback) => {

const dynamo = new AWS.DynamoDB.DocumentClient({region});

//....
}

仍然无法工作...

感谢任何形式的帮助。

最佳答案

正如您所提到的,发生这种情况是因为您在本地运行(使用无服务器离线插件)并且无服务器离线插件不提供有效的 XRAY 上下文。

传递此错误并仍然能够本地调用函数的一种可能方法是设置 AWS_XRAY_CONTEXT_MISSING environment variableLOG_ERROR 而不是 RUNTIME_ERROR(默认)。

Something like :

serverless invoke local -f functionName -e AWS_XRAY_CONTEXT_MISSING=LOG_ERROR

我没有使用无服务器框架对此进行测试,但当调用 amplify function locally 发生相同错误时它起作用了。 :

amplify function invoke <function-name>

关于node.js - 在 Lambda 中将 AWS X-ray 与 node.js 结合使用时出现错误 :"Failed to get the current sub/segment from the context",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53546181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com