2017-09-11 13 views
0

私は最終的にトレースIDを変更しようとしていますので、間違ったアプローチをしているかどうか教えてください。 私が現在考えているのは、セグメントを作成し、parent-idをtrace_idとして追加して、1つのトレースが別のトレースを追跡できるようにすることです。私がそれをやろうとしている理由は、キネシスのようなawsの非同期部分がawsのX線でサポートされていないからです。setSegment unexpected error TypeError:segment.resolveLambdaTraceDataは関数ではありません

const segment = new awsXRay.Segment('1-11111111-111111111111111111111111', '1-11111111-111111111111111111111111', '1-11111111-111111111111111111111111') 
console.log(segment) 
awsXRay.setSegment(segment) 

はしかし、私はエラーを取得する:

TypeError: segment.resolveLambdaTraceData is not a function 

任意のアイデアを、なぜ私はエラーを取得していますか、私は彼らのtrace_idsを接続することにより、キネシス・ストリームの前と後に起こった2つのイベントが接続する方法?

答えて

0

ラムダでX線SDKが使用されると、ラムダはそれ自身のセグメントを作成し(ラムダ関数コードの帯域外に送信します)、SDKはコンテクスト上で親に与えられたプレースホルダとして「ファサード」を作成しますラムダが作成したセグメントのIDとID(process.env._x_amzn_trace_idで公開)。 SDKはこのファサードセグメントに付属するサブセグメントのみを作成し、ラムダ関数が終了すると、これらのサブセグメントが送信され、サービスが一緒に分割します。ラムダ関数が起動するたびに、コールドスタートではなく、ファサードセグメントは、(resolveLambdaTraceDataの呼び出しによって)ラムダによって提供される新しい親IDとIDで更新されます。 SDKは、コンテキストに設定されたラムダのユーザー作成セグメントを期待していません。手作業で作成されたセグメントでは、resolveLambdaTraceData関数は利用できないため、エラーが発生し、コンテキストに設定されている場合、別のラムダ実行を検出すると自動的に発生します。

あなたのユースケースについてさらに詳しく調べることはできますか?

関連する問題