autotel-aws 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +540 -0
- package/dist/attributes.cjs +49 -0
- package/dist/attributes.cjs.map +1 -0
- package/dist/attributes.d.cts +117 -0
- package/dist/attributes.d.ts +117 -0
- package/dist/attributes.js +4 -0
- package/dist/attributes.js.map +1 -0
- package/dist/chunk-35F3UBOO.cjs +48 -0
- package/dist/chunk-35F3UBOO.cjs.map +1 -0
- package/dist/chunk-4TGVGEUN.cjs +84 -0
- package/dist/chunk-4TGVGEUN.cjs.map +1 -0
- package/dist/chunk-CIGXV6HA.js +192 -0
- package/dist/chunk-CIGXV6HA.js.map +1 -0
- package/dist/chunk-D5INYMRP.cjs +350 -0
- package/dist/chunk-D5INYMRP.cjs.map +1 -0
- package/dist/chunk-DF5PT3JK.js +387 -0
- package/dist/chunk-DF5PT3JK.js.map +1 -0
- package/dist/chunk-DGUM43GV.js +10 -0
- package/dist/chunk-DGUM43GV.js.map +1 -0
- package/dist/chunk-DHHLKZHI.cjs +23 -0
- package/dist/chunk-DHHLKZHI.cjs.map +1 -0
- package/dist/chunk-FKZOELBT.js +78 -0
- package/dist/chunk-FKZOELBT.js.map +1 -0
- package/dist/chunk-HMTKKKKP.cjs +390 -0
- package/dist/chunk-HMTKKKKP.cjs.map +1 -0
- package/dist/chunk-I4CKQ4RD.js +153 -0
- package/dist/chunk-I4CKQ4RD.js.map +1 -0
- package/dist/chunk-JEQ2X3Z6.cjs +12 -0
- package/dist/chunk-JEQ2X3Z6.cjs.map +1 -0
- package/dist/chunk-JMSFE6FJ.js +24 -0
- package/dist/chunk-JMSFE6FJ.js.map +1 -0
- package/dist/chunk-KUIOI74B.cjs +394 -0
- package/dist/chunk-KUIOI74B.cjs.map +1 -0
- package/dist/chunk-NQ65Y5AI.cjs +195 -0
- package/dist/chunk-NQ65Y5AI.cjs.map +1 -0
- package/dist/chunk-OB4XTAVK.cjs +345 -0
- package/dist/chunk-OB4XTAVK.cjs.map +1 -0
- package/dist/chunk-OHFR7WX5.js +341 -0
- package/dist/chunk-OHFR7WX5.js.map +1 -0
- package/dist/chunk-PZGYL7XZ.js +40 -0
- package/dist/chunk-PZGYL7XZ.js.map +1 -0
- package/dist/chunk-Q3DMMQ7K.cjs +164 -0
- package/dist/chunk-Q3DMMQ7K.cjs.map +1 -0
- package/dist/chunk-UZEJV2YD.cjs +139 -0
- package/dist/chunk-UZEJV2YD.cjs.map +1 -0
- package/dist/chunk-V4IQWFYN.js +341 -0
- package/dist/chunk-V4IQWFYN.js.map +1 -0
- package/dist/chunk-VZHQH75L.cjs +26 -0
- package/dist/chunk-VZHQH75L.cjs.map +1 -0
- package/dist/chunk-X6BY6PCK.js +386 -0
- package/dist/chunk-X6BY6PCK.js.map +1 -0
- package/dist/chunk-YG56NRIO.js +131 -0
- package/dist/chunk-YG56NRIO.js.map +1 -0
- package/dist/chunk-ZPDRKCAR.js +21 -0
- package/dist/chunk-ZPDRKCAR.js.map +1 -0
- package/dist/config-C7zV8Zm6.d.cts +125 -0
- package/dist/config-DxjTT8jd.d.ts +125 -0
- package/dist/dynamodb.cjs +14 -0
- package/dist/dynamodb.cjs.map +1 -0
- package/dist/dynamodb.d.cts +93 -0
- package/dist/dynamodb.d.ts +93 -0
- package/dist/dynamodb.js +5 -0
- package/dist/dynamodb.js.map +1 -0
- package/dist/eventbridge.cjs +279 -0
- package/dist/eventbridge.cjs.map +1 -0
- package/dist/eventbridge.d.cts +360 -0
- package/dist/eventbridge.d.ts +360 -0
- package/dist/eventbridge.js +273 -0
- package/dist/eventbridge.js.map +1 -0
- package/dist/index.cjs +251 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +126 -0
- package/dist/index.d.ts +126 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/kinesis.cjs +23 -0
- package/dist/kinesis.cjs.map +1 -0
- package/dist/kinesis.d.cts +360 -0
- package/dist/kinesis.d.ts +360 -0
- package/dist/kinesis.js +6 -0
- package/dist/kinesis.js.map +1 -0
- package/dist/lambda-auto.cjs +19 -0
- package/dist/lambda-auto.cjs.map +1 -0
- package/dist/lambda-auto.d.cts +2 -0
- package/dist/lambda-auto.d.ts +2 -0
- package/dist/lambda-auto.js +17 -0
- package/dist/lambda-auto.js.map +1 -0
- package/dist/lambda.cjs +42 -0
- package/dist/lambda.cjs.map +1 -0
- package/dist/lambda.d.cts +231 -0
- package/dist/lambda.d.ts +231 -0
- package/dist/lambda.js +5 -0
- package/dist/lambda.js.map +1 -0
- package/dist/s3.cjs +14 -0
- package/dist/s3.cjs.map +1 -0
- package/dist/s3.d.cts +77 -0
- package/dist/s3.d.ts +77 -0
- package/dist/s3.js +5 -0
- package/dist/s3.js.map +1 -0
- package/dist/sdk.cjs +31 -0
- package/dist/sdk.cjs.map +1 -0
- package/dist/sdk.d.cts +155 -0
- package/dist/sdk.d.ts +155 -0
- package/dist/sdk.js +6 -0
- package/dist/sdk.js.map +1 -0
- package/dist/sns.cjs +19 -0
- package/dist/sns.cjs.map +1 -0
- package/dist/sns.d.cts +256 -0
- package/dist/sns.d.ts +256 -0
- package/dist/sns.js +6 -0
- package/dist/sns.js.map +1 -0
- package/dist/sqs.cjs +23 -0
- package/dist/sqs.cjs.map +1 -0
- package/dist/sqs.d.cts +384 -0
- package/dist/sqs.d.ts +384 -0
- package/dist/sqs.js +6 -0
- package/dist/sqs.js.map +1 -0
- package/dist/step-functions.cjs +35 -0
- package/dist/step-functions.cjs.map +1 -0
- package/dist/step-functions.d.cts +423 -0
- package/dist/step-functions.d.ts +423 -0
- package/dist/step-functions.js +6 -0
- package/dist/step-functions.js.map +1 -0
- package/dist/testing.cjs +61 -0
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.cts +39 -0
- package/dist/testing.d.ts +39 -0
- package/dist/testing.js +58 -0
- package/dist/testing.js.map +1 -0
- package/dist/types-3_ak5jhy.d.cts +76 -0
- package/dist/types-3_ak5jhy.d.ts +76 -0
- package/dist/types-UiBv_I_M.d.ts +16 -0
- package/dist/types-kTFVdSqO.d.cts +16 -0
- package/dist/xray.cjs +26 -0
- package/dist/xray.cjs.map +1 -0
- package/dist/xray.d.cts +23 -0
- package/dist/xray.d.ts +23 -0
- package/dist/xray.js +5 -0
- package/dist/xray.js.map +1 -0
- package/package.json +184 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkUZEJV2YD_cjs = require('./chunk-UZEJV2YD.cjs');
|
|
4
|
+
var chunkQ3DMMQ7K_cjs = require('./chunk-Q3DMMQ7K.cjs');
|
|
5
|
+
var autotel = require('autotel');
|
|
6
|
+
var api = require('@opentelemetry/api');
|
|
7
|
+
|
|
8
|
+
function traceKinesis(config) {
|
|
9
|
+
return function wrapper(fn) {
|
|
10
|
+
return autotel.trace(
|
|
11
|
+
`kinesis.${config.operation}`,
|
|
12
|
+
(ctx) => async (...args) => {
|
|
13
|
+
ctx.setAttributes(
|
|
14
|
+
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
15
|
+
streamName: config.streamName,
|
|
16
|
+
shardId: config.shardId,
|
|
17
|
+
operation: config.operation
|
|
18
|
+
})
|
|
19
|
+
);
|
|
20
|
+
const handler = fn(ctx);
|
|
21
|
+
return handler(...args);
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
var KinesisProducer = class {
|
|
27
|
+
client;
|
|
28
|
+
config;
|
|
29
|
+
constructor(client, config) {
|
|
30
|
+
this.client = chunkUZEJV2YD_cjs.wrapSDKClient(client, config.service);
|
|
31
|
+
this.config = {
|
|
32
|
+
injectTraceContext: true,
|
|
33
|
+
...config
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Inject trace context into record data
|
|
38
|
+
*/
|
|
39
|
+
injectContext(data) {
|
|
40
|
+
let payload;
|
|
41
|
+
if (typeof data === "string") {
|
|
42
|
+
try {
|
|
43
|
+
payload = JSON.parse(data);
|
|
44
|
+
} catch {
|
|
45
|
+
payload = { _data: data };
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
payload = data;
|
|
49
|
+
}
|
|
50
|
+
if (this.config.injectTraceContext) {
|
|
51
|
+
const carrier = {};
|
|
52
|
+
api.propagation.inject(api.context.active(), carrier);
|
|
53
|
+
if (carrier.traceparent) {
|
|
54
|
+
payload = {
|
|
55
|
+
...payload,
|
|
56
|
+
_traceContext: {
|
|
57
|
+
traceparent: carrier.traceparent,
|
|
58
|
+
tracestate: carrier.tracestate,
|
|
59
|
+
baggage: carrier.baggage
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return Buffer.from(JSON.stringify(payload));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Put a single record to the stream
|
|
68
|
+
*
|
|
69
|
+
* @param record - Record to put
|
|
70
|
+
* @returns Promise with shard ID and sequence number
|
|
71
|
+
*/
|
|
72
|
+
async putRecord(record) {
|
|
73
|
+
return autotel.trace(`kinesis.put`, async (ctx) => {
|
|
74
|
+
ctx.setAttributes(
|
|
75
|
+
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
76
|
+
streamName: this.config.streamName,
|
|
77
|
+
operation: "put"
|
|
78
|
+
})
|
|
79
|
+
);
|
|
80
|
+
const input = {
|
|
81
|
+
StreamName: this.config.streamName,
|
|
82
|
+
Data: this.injectContext(record.data),
|
|
83
|
+
PartitionKey: record.partitionKey,
|
|
84
|
+
...record.explicitHashKey && { ExplicitHashKey: record.explicitHashKey },
|
|
85
|
+
...record.sequenceNumberForOrdering && {
|
|
86
|
+
SequenceNumberForOrdering: record.sequenceNumberForOrdering
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
try {
|
|
90
|
+
const { PutRecordCommand } = await import('@aws-sdk/client-kinesis');
|
|
91
|
+
const result = await this.client.send(new PutRecordCommand(input));
|
|
92
|
+
if (result.ShardId) {
|
|
93
|
+
ctx.setAttribute("aws.kinesis.shard_id", result.ShardId);
|
|
94
|
+
}
|
|
95
|
+
if (result.SequenceNumber) {
|
|
96
|
+
ctx.setAttribute("aws.kinesis.sequence_number", result.SequenceNumber);
|
|
97
|
+
}
|
|
98
|
+
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
99
|
+
return {
|
|
100
|
+
shardId: result.ShardId,
|
|
101
|
+
sequenceNumber: result.SequenceNumber,
|
|
102
|
+
encryptionType: result.EncryptionType
|
|
103
|
+
};
|
|
104
|
+
} catch (error) {
|
|
105
|
+
ctx.setStatus({
|
|
106
|
+
code: api.SpanStatusCode.ERROR,
|
|
107
|
+
message: error instanceof Error ? error.message : "Put failed"
|
|
108
|
+
});
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Put multiple records in a batch
|
|
115
|
+
*
|
|
116
|
+
* @param records - Array of records to put (max 500)
|
|
117
|
+
* @returns Promise with successful and failed record results
|
|
118
|
+
*/
|
|
119
|
+
async putRecords(records) {
|
|
120
|
+
return autotel.trace(`kinesis.putBatch`, async (ctx) => {
|
|
121
|
+
ctx.setAttributes(
|
|
122
|
+
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
123
|
+
streamName: this.config.streamName,
|
|
124
|
+
operation: "put"
|
|
125
|
+
})
|
|
126
|
+
);
|
|
127
|
+
ctx.setAttribute("messaging.batch.message_count", records.length);
|
|
128
|
+
const entries = records.map((record) => ({
|
|
129
|
+
Data: this.injectContext(record.data),
|
|
130
|
+
PartitionKey: record.partitionKey,
|
|
131
|
+
...record.explicitHashKey && { ExplicitHashKey: record.explicitHashKey }
|
|
132
|
+
}));
|
|
133
|
+
try {
|
|
134
|
+
const { PutRecordsCommand } = await import('@aws-sdk/client-kinesis');
|
|
135
|
+
const result = await this.client.send(
|
|
136
|
+
new PutRecordsCommand({
|
|
137
|
+
StreamName: this.config.streamName,
|
|
138
|
+
Records: entries
|
|
139
|
+
})
|
|
140
|
+
);
|
|
141
|
+
const successful = [];
|
|
142
|
+
const failed = [];
|
|
143
|
+
if (result.Records) {
|
|
144
|
+
for (const r of result.Records) {
|
|
145
|
+
const record = r;
|
|
146
|
+
if (record.ErrorCode) {
|
|
147
|
+
failed.push({ errorCode: record.ErrorCode, errorMessage: record.ErrorMessage });
|
|
148
|
+
} else {
|
|
149
|
+
successful.push({ shardId: record.ShardId, sequenceNumber: record.SequenceNumber });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
ctx.setAttribute("messaging.kinesis.successful_count", successful.length);
|
|
154
|
+
ctx.setAttribute("messaging.kinesis.failed_count", result.FailedRecordCount || 0);
|
|
155
|
+
if (result.FailedRecordCount && result.FailedRecordCount > 0) {
|
|
156
|
+
ctx.setStatus({
|
|
157
|
+
code: api.SpanStatusCode.ERROR,
|
|
158
|
+
message: `${result.FailedRecordCount} records failed`
|
|
159
|
+
});
|
|
160
|
+
} else {
|
|
161
|
+
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
successful,
|
|
165
|
+
failed,
|
|
166
|
+
failedRecordCount: result.FailedRecordCount || 0
|
|
167
|
+
};
|
|
168
|
+
} catch (error) {
|
|
169
|
+
ctx.setStatus({
|
|
170
|
+
code: api.SpanStatusCode.ERROR,
|
|
171
|
+
message: error instanceof Error ? error.message : "Batch put failed"
|
|
172
|
+
});
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
var KinesisConsumer = class {
|
|
179
|
+
client;
|
|
180
|
+
config;
|
|
181
|
+
constructor(client, config) {
|
|
182
|
+
this.client = chunkUZEJV2YD_cjs.wrapSDKClient(client, config.service);
|
|
183
|
+
this.config = {
|
|
184
|
+
extractTraceContext: true,
|
|
185
|
+
...config
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Extract trace context from record data
|
|
190
|
+
*/
|
|
191
|
+
extractContext(data) {
|
|
192
|
+
if (!this.config.extractTraceContext || !data?._traceContext) {
|
|
193
|
+
return void 0;
|
|
194
|
+
}
|
|
195
|
+
const tc = data._traceContext;
|
|
196
|
+
const carrier = {};
|
|
197
|
+
if (tc.traceparent) carrier.traceparent = tc.traceparent;
|
|
198
|
+
if (tc.tracestate) carrier.tracestate = tc.tracestate;
|
|
199
|
+
if (tc.baggage) carrier.baggage = tc.baggage;
|
|
200
|
+
return Object.keys(carrier).length > 0 ? carrier : void 0;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Parse raw record data
|
|
204
|
+
*/
|
|
205
|
+
parseRecord(record) {
|
|
206
|
+
const rawData = record.Data ? Buffer.from(record.Data).toString("utf8") : "";
|
|
207
|
+
let data;
|
|
208
|
+
try {
|
|
209
|
+
data = JSON.parse(rawData);
|
|
210
|
+
} catch {
|
|
211
|
+
data = rawData;
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
sequenceNumber: record.SequenceNumber || "",
|
|
215
|
+
approximateArrivalTimestamp: record.ApproximateArrivalTimestamp,
|
|
216
|
+
data,
|
|
217
|
+
rawData,
|
|
218
|
+
partitionKey: record.PartitionKey || "",
|
|
219
|
+
encryptionType: record.EncryptionType,
|
|
220
|
+
raw: record
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get a shard iterator
|
|
225
|
+
*
|
|
226
|
+
* @param shardId - Shard ID
|
|
227
|
+
* @param type - Iterator type
|
|
228
|
+
* @param startingSequenceNumber - Starting sequence number (for AT_SEQUENCE_NUMBER, AFTER_SEQUENCE_NUMBER)
|
|
229
|
+
* @param timestamp - Starting timestamp (for AT_TIMESTAMP)
|
|
230
|
+
* @returns Shard iterator string
|
|
231
|
+
*/
|
|
232
|
+
async getShardIterator(shardId, type, startingSequenceNumber, timestamp) {
|
|
233
|
+
return autotel.trace(`kinesis.getShardIterator`, async (ctx) => {
|
|
234
|
+
ctx.setAttributes(
|
|
235
|
+
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
236
|
+
streamName: this.config.streamName,
|
|
237
|
+
shardId,
|
|
238
|
+
operation: "get"
|
|
239
|
+
})
|
|
240
|
+
);
|
|
241
|
+
try {
|
|
242
|
+
const { GetShardIteratorCommand } = await import('@aws-sdk/client-kinesis');
|
|
243
|
+
const result = await this.client.send(
|
|
244
|
+
new GetShardIteratorCommand({
|
|
245
|
+
StreamName: this.config.streamName,
|
|
246
|
+
ShardId: shardId,
|
|
247
|
+
ShardIteratorType: type,
|
|
248
|
+
...startingSequenceNumber && { StartingSequenceNumber: startingSequenceNumber },
|
|
249
|
+
...timestamp && { Timestamp: timestamp }
|
|
250
|
+
})
|
|
251
|
+
);
|
|
252
|
+
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
253
|
+
return result.ShardIterator || "";
|
|
254
|
+
} catch (error) {
|
|
255
|
+
ctx.setStatus({
|
|
256
|
+
code: api.SpanStatusCode.ERROR,
|
|
257
|
+
message: error instanceof Error ? error.message : "GetShardIterator failed"
|
|
258
|
+
});
|
|
259
|
+
throw error;
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get records from a shard iterator
|
|
265
|
+
*
|
|
266
|
+
* @param shardIterator - Shard iterator
|
|
267
|
+
* @param limit - Maximum records to return (max 10000)
|
|
268
|
+
* @returns Records and next shard iterator
|
|
269
|
+
*/
|
|
270
|
+
async getRecords(shardIterator, limit) {
|
|
271
|
+
return autotel.trace(`kinesis.get`, async (ctx) => {
|
|
272
|
+
ctx.setAttributes(
|
|
273
|
+
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
274
|
+
streamName: this.config.streamName,
|
|
275
|
+
operation: "get"
|
|
276
|
+
})
|
|
277
|
+
);
|
|
278
|
+
try {
|
|
279
|
+
const { GetRecordsCommand } = await import('@aws-sdk/client-kinesis');
|
|
280
|
+
const result = await this.client.send(
|
|
281
|
+
new GetRecordsCommand({
|
|
282
|
+
ShardIterator: shardIterator,
|
|
283
|
+
...limit && { Limit: limit }
|
|
284
|
+
})
|
|
285
|
+
);
|
|
286
|
+
const records = (result.Records || []).map((r) => this.parseRecord(r));
|
|
287
|
+
ctx.setAttribute("messaging.batch.message_count", records.length);
|
|
288
|
+
if (result.MillisBehindLatest !== void 0) {
|
|
289
|
+
ctx.setAttribute("aws.kinesis.millis_behind_latest", result.MillisBehindLatest);
|
|
290
|
+
}
|
|
291
|
+
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
292
|
+
return {
|
|
293
|
+
records,
|
|
294
|
+
nextIterator: result.NextShardIterator,
|
|
295
|
+
millisBehindLatest: result.MillisBehindLatest
|
|
296
|
+
};
|
|
297
|
+
} catch (error) {
|
|
298
|
+
ctx.setStatus({
|
|
299
|
+
code: api.SpanStatusCode.ERROR,
|
|
300
|
+
message: error instanceof Error ? error.message : "GetRecords failed"
|
|
301
|
+
});
|
|
302
|
+
throw error;
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Process records with automatic trace context extraction
|
|
308
|
+
*
|
|
309
|
+
* @param shardIterator - Shard iterator
|
|
310
|
+
* @param processor - Function to process each record
|
|
311
|
+
* @param limit - Maximum records to process
|
|
312
|
+
* @returns Next shard iterator and count of processed records
|
|
313
|
+
*/
|
|
314
|
+
async processRecords(shardIterator, processor, limit) {
|
|
315
|
+
const { records, nextIterator } = await this.getRecords(shardIterator, limit);
|
|
316
|
+
let processedCount = 0;
|
|
317
|
+
for (const record of records) {
|
|
318
|
+
const carrier = this.extractContext(record.data);
|
|
319
|
+
const processRecord = async () => {
|
|
320
|
+
return autotel.trace(`kinesis.process`, async (ctx) => {
|
|
321
|
+
ctx.setAttributes(
|
|
322
|
+
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
323
|
+
streamName: this.config.streamName,
|
|
324
|
+
operation: "get"
|
|
325
|
+
})
|
|
326
|
+
);
|
|
327
|
+
ctx.setAttribute("aws.kinesis.sequence_number", record.sequenceNumber);
|
|
328
|
+
ctx.setAttribute("aws.kinesis.partition_key", record.partitionKey);
|
|
329
|
+
try {
|
|
330
|
+
await processor(record, ctx);
|
|
331
|
+
processedCount++;
|
|
332
|
+
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
333
|
+
} catch (error) {
|
|
334
|
+
ctx.setStatus({
|
|
335
|
+
code: api.SpanStatusCode.ERROR,
|
|
336
|
+
message: error instanceof Error ? error.message : "Processing failed"
|
|
337
|
+
});
|
|
338
|
+
throw error;
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
};
|
|
342
|
+
if (carrier) {
|
|
343
|
+
const extractedContext = api.propagation.extract(api.context.active(), carrier);
|
|
344
|
+
await api.context.with(extractedContext, processRecord);
|
|
345
|
+
} else {
|
|
346
|
+
await processRecord();
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return { nextIterator, processedCount };
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* List shards for the stream
|
|
353
|
+
*
|
|
354
|
+
* @returns Array of shard IDs
|
|
355
|
+
*/
|
|
356
|
+
async listShards() {
|
|
357
|
+
return autotel.trace(`kinesis.listShards`, async (ctx) => {
|
|
358
|
+
ctx.setAttributes(
|
|
359
|
+
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
360
|
+
streamName: this.config.streamName,
|
|
361
|
+
operation: "get"
|
|
362
|
+
})
|
|
363
|
+
);
|
|
364
|
+
try {
|
|
365
|
+
const { ListShardsCommand } = await import('@aws-sdk/client-kinesis');
|
|
366
|
+
const result = await this.client.send(
|
|
367
|
+
new ListShardsCommand({
|
|
368
|
+
StreamName: this.config.streamName
|
|
369
|
+
})
|
|
370
|
+
);
|
|
371
|
+
const shardIds = result.Shards?.map((s) => s.ShardId || "") || [];
|
|
372
|
+
ctx.setAttribute("aws.kinesis.shard_count", shardIds.length);
|
|
373
|
+
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
374
|
+
return shardIds;
|
|
375
|
+
} catch (error) {
|
|
376
|
+
ctx.setStatus({
|
|
377
|
+
code: api.SpanStatusCode.ERROR,
|
|
378
|
+
message: error instanceof Error ? error.message : "ListShards failed"
|
|
379
|
+
});
|
|
380
|
+
throw error;
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
exports.KinesisConsumer = KinesisConsumer;
|
|
387
|
+
exports.KinesisProducer = KinesisProducer;
|
|
388
|
+
exports.traceKinesis = traceKinesis;
|
|
389
|
+
//# sourceMappingURL=chunk-HMTKKKKP.cjs.map
|
|
390
|
+
//# sourceMappingURL=chunk-HMTKKKKP.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/kinesis/index.ts"],"names":["trace","buildKinesisAttributes","wrapSDKClient","propagation","context","SpanStatusCode"],"mappings":"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","file":"chunk-HMTKKKKP.cjs","sourcesContent":["/**\n * Kinesis-specific instrumentation\n *\n * Provides semantic helpers for tracing Kinesis Data Streams operations with proper\n * OpenTelemetry messaging semantic conventions.\n *\n * @example Put record to stream\n * ```typescript\n * import { traceKinesis } from 'autotel-aws/kinesis';\n * import { KinesisClient, PutRecordCommand } from '@aws-sdk/client-kinesis';\n *\n * const kinesis = new KinesisClient({});\n *\n * export const putRecord = traceKinesis({\n * operation: 'put',\n * streamName: 'my-stream'\n * })(ctx => async (data: object, partitionKey: string) => {\n * const result = await kinesis.send(new PutRecordCommand({\n * StreamName: 'my-stream',\n * Data: Buffer.from(JSON.stringify(data)),\n * PartitionKey: partitionKey\n * }));\n *\n * ctx.setAttribute('aws.kinesis.shard_id', result.ShardId ?? '');\n * ctx.setAttribute('aws.kinesis.sequence_number', result.SequenceNumber ?? '');\n *\n * return result;\n * });\n *\n * // Usage: await putRecord({ event: 'click' }, 'user-123');\n * ```\n *\n * @example Get records from shard\n * ```typescript\n * export const getRecords = traceKinesis({\n * operation: 'get',\n * streamName: 'my-stream'\n * })(ctx => async (shardIterator: string, limit: number) => {\n * const result = await kinesis.send(new GetRecordsCommand({\n * ShardIterator: shardIterator,\n * Limit: limit\n * }));\n *\n * ctx.setAttribute('messaging.batch.message_count', result.Records?.length ?? 0);\n * return result;\n * });\n * ```\n */\n\nimport { trace, type TraceContext } from 'autotel';\nimport { context, propagation, SpanStatusCode } from '@opentelemetry/api';\nimport { buildKinesisAttributes } from '../attributes';\nimport { wrapSDKClient } from '../common/sdk-wrapper';\n\n/**\n * Kinesis operation configuration\n */\nexport interface TraceKinesisConfig {\n /**\n * Kinesis operation type\n * - 'put' - PutRecord, PutRecords\n * - 'get' - GetRecords, GetShardIterator\n */\n operation: 'put' | 'get';\n\n /**\n * Kinesis stream name\n * Sets `messaging.destination.name` attribute.\n */\n streamName: string;\n\n /**\n * Shard ID (if known at configuration time)\n * Sets `aws.kinesis.shard_id` attribute.\n */\n shardId?: string;\n}\n\n/**\n * Trace Kinesis operations with semantic attributes\n *\n * Creates a traced function that automatically sets Kinesis messaging semantic attributes\n * following OpenTelemetry conventions.\n *\n * @param config - Kinesis operation configuration\n * @returns A higher-order function that wraps your Kinesis operation with tracing\n *\n * @remarks\n * Semantic attributes set automatically:\n * - `messaging.system` - 'aws_kinesis'\n * - `messaging.destination.name` - Stream name\n * - `messaging.operation` - 'put' or 'get'\n * - `aws.kinesis.shard_id` - Shard ID (if provided)\n *\n * Additional attributes you should set in your handler:\n * - `aws.kinesis.sequence_number` - Record sequence number\n * - `messaging.batch.message_count` - Number of records in batch\n *\n * @see https://opentelemetry.io/docs/specs/semconv/messaging/aws-kinesis/\n */\nexport function traceKinesis(config: TraceKinesisConfig) {\n return function wrapper<TArgs extends unknown[], TReturn>(\n fn: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>,\n ): (...args: TArgs) => Promise<TReturn> {\n // Use autotel's trace() which properly handles the factory pattern\n return trace(\n `kinesis.${config.operation}`,\n (ctx: TraceContext) =>\n async (...args: TArgs): Promise<TReturn> => {\n // Set Kinesis semantic attributes\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: config.streamName,\n shardId: config.shardId,\n operation: config.operation,\n }),\n );\n\n // Get the user's handler and execute with forwarded arguments\n const handler = fn(ctx);\n return handler(...args);\n },\n );\n };\n}\n\n// ============================================================================\n// Kinesis Producer - Puts records with automatic trace context injection\n// ============================================================================\n\n/**\n * Configuration for Kinesis Producer\n */\nexport interface KinesisProducerConfig {\n /**\n * Kinesis stream name or ARN\n */\n streamName: string;\n\n /**\n * Inject W3C Trace Context into record data\n * Enables distributed tracing across producer/consumer\n * @default true\n */\n injectTraceContext?: boolean;\n\n /**\n * Optional service name for tracing\n */\n service?: string;\n}\n\n/**\n * Record to put via Kinesis Producer\n */\nexport interface KinesisRecord {\n /**\n * Record data (will be serialized to JSON if object)\n */\n data: string | object;\n\n /**\n * Partition key for sharding\n */\n partitionKey: string;\n\n /**\n * Optional explicit hash key\n */\n explicitHashKey?: string;\n\n /**\n * Optional sequence number for ordering\n */\n sequenceNumberForOrdering?: string;\n}\n\n/**\n * Kinesis Producer with automatic trace context injection\n *\n * Wraps a Kinesis client to automatically:\n * - Create spans for put operations\n * - Inject W3C Trace Context into record data\n * - Set proper semantic attributes\n *\n * @example Basic usage\n * ```typescript\n * import { KinesisProducer } from 'autotel-aws/kinesis';\n * import { KinesisClient } from '@aws-sdk/client-kinesis';\n *\n * const kinesis = new KinesisClient({ region: 'us-east-1' });\n * const producer = new KinesisProducer(kinesis, {\n * streamName: 'my-stream'\n * });\n *\n * // Put with automatic trace context\n * const result = await producer.putRecord({\n * data: { event: 'click', userId: '123' },\n * partitionKey: 'user-123'\n * });\n * console.log('Sequence:', result.sequenceNumber);\n * ```\n *\n * @example Batch put\n * ```typescript\n * const results = await producer.putRecords([\n * { data: { event: 'click' }, partitionKey: 'user-1' },\n * { data: { event: 'view' }, partitionKey: 'user-2' },\n * { data: { event: 'scroll' }, partitionKey: 'user-3' }\n * ]);\n * console.log(`Put ${results.successful.length} records`);\n * ```\n */\nexport class KinesisProducer<\n \n TClient extends { send: (command: any) => Promise<any> } = any,\n> {\n private client: TClient;\n private config: Required<Pick<KinesisProducerConfig, 'streamName'>> & KinesisProducerConfig;\n\n constructor(client: TClient, config: KinesisProducerConfig) {\n this.client = wrapSDKClient(client as any, config.service) as TClient;\n this.config = {\n injectTraceContext: true,\n ...config,\n };\n }\n\n /**\n * Inject trace context into record data\n */\n private injectContext(data: string | object): Buffer {\n let payload: object;\n\n if (typeof data === 'string') {\n try {\n payload = JSON.parse(data);\n } catch {\n // If not valid JSON, wrap in object\n payload = { _data: data };\n }\n } else {\n payload = data;\n }\n\n if (this.config.injectTraceContext) {\n const carrier: Record<string, string> = {};\n propagation.inject(context.active(), carrier);\n\n if (carrier.traceparent) {\n payload = {\n ...payload,\n _traceContext: {\n traceparent: carrier.traceparent,\n tracestate: carrier.tracestate,\n baggage: carrier.baggage,\n },\n };\n }\n }\n\n return Buffer.from(JSON.stringify(payload));\n }\n\n /**\n * Put a single record to the stream\n *\n * @param record - Record to put\n * @returns Promise with shard ID and sequence number\n */\n async putRecord(record: KinesisRecord): Promise<{\n shardId?: string;\n sequenceNumber?: string;\n encryptionType?: string;\n }> {\n return trace(`kinesis.put`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'put',\n }),\n );\n\n const input = {\n StreamName: this.config.streamName,\n Data: this.injectContext(record.data),\n PartitionKey: record.partitionKey,\n ...(record.explicitHashKey && { ExplicitHashKey: record.explicitHashKey }),\n ...(record.sequenceNumberForOrdering && {\n SequenceNumberForOrdering: record.sequenceNumberForOrdering,\n }),\n };\n\n try {\n const { PutRecordCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(new PutRecordCommand(input));\n\n if (result.ShardId) {\n ctx.setAttribute('aws.kinesis.shard_id', result.ShardId);\n }\n if (result.SequenceNumber) {\n ctx.setAttribute('aws.kinesis.sequence_number', result.SequenceNumber);\n }\n\n ctx.setStatus({ code: SpanStatusCode.OK });\n\n return {\n shardId: result.ShardId,\n sequenceNumber: result.SequenceNumber,\n encryptionType: result.EncryptionType,\n };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Put failed',\n });\n throw error;\n }\n });\n }\n\n /**\n * Put multiple records in a batch\n *\n * @param records - Array of records to put (max 500)\n * @returns Promise with successful and failed record results\n */\n async putRecords(records: KinesisRecord[]): Promise<{\n successful: Array<{ shardId?: string; sequenceNumber?: string }>;\n failed: Array<{ errorCode?: string; errorMessage?: string }>;\n failedRecordCount: number;\n }> {\n return trace(`kinesis.putBatch`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'put',\n }),\n );\n ctx.setAttribute('messaging.batch.message_count', records.length);\n\n const entries = records.map((record) => ({\n Data: this.injectContext(record.data),\n PartitionKey: record.partitionKey,\n ...(record.explicitHashKey && { ExplicitHashKey: record.explicitHashKey }),\n }));\n\n try {\n const { PutRecordsCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(\n new PutRecordsCommand({\n StreamName: this.config.streamName,\n Records: entries,\n }),\n );\n\n const successful: Array<{ shardId?: string; sequenceNumber?: string }> = [];\n const failed: Array<{ errorCode?: string; errorMessage?: string }> = [];\n\n if (result.Records) {\n for (const r of result.Records) {\n const record = r as { ShardId?: string; SequenceNumber?: string; ErrorCode?: string; ErrorMessage?: string };\n if (record.ErrorCode) {\n failed.push({ errorCode: record.ErrorCode, errorMessage: record.ErrorMessage });\n } else {\n successful.push({ shardId: record.ShardId, sequenceNumber: record.SequenceNumber });\n }\n }\n }\n\n ctx.setAttribute('messaging.kinesis.successful_count', successful.length);\n ctx.setAttribute('messaging.kinesis.failed_count', result.FailedRecordCount || 0);\n\n if (result.FailedRecordCount && result.FailedRecordCount > 0) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${result.FailedRecordCount} records failed`,\n });\n } else {\n ctx.setStatus({ code: SpanStatusCode.OK });\n }\n\n return {\n successful,\n failed,\n failedRecordCount: result.FailedRecordCount || 0,\n };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Batch put failed',\n });\n throw error;\n }\n });\n }\n}\n\n// ============================================================================\n// Kinesis Consumer - Gets records with trace context extraction\n// ============================================================================\n\n/**\n * Configuration for Kinesis Consumer\n */\nexport interface KinesisConsumerConfig {\n /**\n * Kinesis stream name or ARN\n */\n streamName: string;\n\n /**\n * Extract W3C Trace Context from record data\n * Creates child spans linked to the producer\n * @default true\n */\n extractTraceContext?: boolean;\n\n /**\n * Optional service name for tracing\n */\n service?: string;\n}\n\n/**\n * Received Kinesis record with parsed data\n */\nexport interface ReceivedKinesisRecord {\n /**\n * Sequence number\n */\n sequenceNumber: string;\n\n /**\n * Approximate arrival timestamp\n */\n approximateArrivalTimestamp?: Date;\n\n /**\n * Parsed data (JSON parsed if possible)\n */\n \n data: any;\n\n /**\n * Raw data as string\n */\n rawData: string;\n\n /**\n * Partition key\n */\n partitionKey: string;\n\n /**\n * Encryption type\n */\n encryptionType?: string;\n\n /**\n * Original AWS SDK record object\n */\n \n raw: any;\n}\n\n/**\n * Record processor function type\n */\nexport type KinesisRecordProcessor = (\n record: ReceivedKinesisRecord,\n ctx: TraceContext,\n) => Promise<void>;\n\n/**\n * Kinesis Consumer with automatic trace context extraction\n *\n * Wraps a Kinesis client to automatically:\n * - Create spans for get operations\n * - Extract W3C Trace Context from record data\n * - Link consumer spans to producer spans\n *\n * @example Basic usage\n * ```typescript\n * import { KinesisConsumer } from 'autotel-aws/kinesis';\n * import { KinesisClient } from '@aws-sdk/client-kinesis';\n *\n * const kinesis = new KinesisClient({ region: 'us-east-1' });\n * const consumer = new KinesisConsumer(kinesis, {\n * streamName: 'my-stream'\n * });\n *\n * // Get shard iterator first\n * const iterator = await consumer.getShardIterator('shardId-000000000000', 'LATEST');\n *\n * // Process records with automatic tracing\n * const { nextIterator, records } = await consumer.getRecords(iterator, 100);\n *\n * for (const record of records) {\n * console.log('Record:', record.data);\n * }\n * ```\n *\n * @example With processor function\n * ```typescript\n * await consumer.processRecords(iterator, async (record, ctx) => {\n * ctx.setAttribute('event.type', record.data.event);\n * await handleEvent(record.data);\n * });\n * ```\n */\nexport class KinesisConsumer<\n \n TClient extends { send: (command: any) => Promise<any> } = any,\n> {\n private client: TClient;\n private config: Required<Pick<KinesisConsumerConfig, 'streamName'>> & KinesisConsumerConfig;\n\n constructor(client: TClient, config: KinesisConsumerConfig) {\n this.client = wrapSDKClient(client as any, config.service) as TClient;\n this.config = {\n extractTraceContext: true,\n ...config,\n };\n }\n\n /**\n * Extract trace context from record data\n */\n \n private extractContext(data: any): Record<string, string> | undefined {\n if (!this.config.extractTraceContext || !data?._traceContext) {\n return undefined;\n }\n\n const tc = data._traceContext;\n const carrier: Record<string, string> = {};\n\n if (tc.traceparent) carrier.traceparent = tc.traceparent;\n if (tc.tracestate) carrier.tracestate = tc.tracestate;\n if (tc.baggage) carrier.baggage = tc.baggage;\n\n return Object.keys(carrier).length > 0 ? carrier : undefined;\n }\n\n /**\n * Parse raw record data\n */\n \n private parseRecord(record: any): ReceivedKinesisRecord {\n const rawData = record.Data ? Buffer.from(record.Data).toString('utf8') : '';\n \n let data: any;\n\n try {\n data = JSON.parse(rawData);\n } catch {\n data = rawData;\n }\n\n return {\n sequenceNumber: record.SequenceNumber || '',\n approximateArrivalTimestamp: record.ApproximateArrivalTimestamp,\n data,\n rawData,\n partitionKey: record.PartitionKey || '',\n encryptionType: record.EncryptionType,\n raw: record,\n };\n }\n\n /**\n * Get a shard iterator\n *\n * @param shardId - Shard ID\n * @param type - Iterator type\n * @param startingSequenceNumber - Starting sequence number (for AT_SEQUENCE_NUMBER, AFTER_SEQUENCE_NUMBER)\n * @param timestamp - Starting timestamp (for AT_TIMESTAMP)\n * @returns Shard iterator string\n */\n async getShardIterator(\n shardId: string,\n type: 'AT_SEQUENCE_NUMBER' | 'AFTER_SEQUENCE_NUMBER' | 'TRIM_HORIZON' | 'LATEST' | 'AT_TIMESTAMP',\n startingSequenceNumber?: string,\n timestamp?: Date,\n ): Promise<string> {\n return trace(`kinesis.getShardIterator`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n shardId,\n operation: 'get',\n }),\n );\n\n try {\n const { GetShardIteratorCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(\n new GetShardIteratorCommand({\n StreamName: this.config.streamName,\n ShardId: shardId,\n ShardIteratorType: type,\n ...(startingSequenceNumber && { StartingSequenceNumber: startingSequenceNumber }),\n ...(timestamp && { Timestamp: timestamp }),\n }),\n );\n\n ctx.setStatus({ code: SpanStatusCode.OK });\n return result.ShardIterator || '';\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'GetShardIterator failed',\n });\n throw error;\n }\n });\n }\n\n /**\n * Get records from a shard iterator\n *\n * @param shardIterator - Shard iterator\n * @param limit - Maximum records to return (max 10000)\n * @returns Records and next shard iterator\n */\n async getRecords(\n shardIterator: string,\n limit?: number,\n ): Promise<{\n records: ReceivedKinesisRecord[];\n nextIterator?: string;\n millisBehindLatest?: number;\n }> {\n return trace(`kinesis.get`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'get',\n }),\n );\n\n try {\n const { GetRecordsCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(\n new GetRecordsCommand({\n ShardIterator: shardIterator,\n ...(limit && { Limit: limit }),\n }),\n );\n\n \n const records = (result.Records || []).map((r: any) => this.parseRecord(r));\n ctx.setAttribute('messaging.batch.message_count', records.length);\n\n if (result.MillisBehindLatest !== undefined) {\n ctx.setAttribute('aws.kinesis.millis_behind_latest', result.MillisBehindLatest);\n }\n\n ctx.setStatus({ code: SpanStatusCode.OK });\n\n return {\n records,\n nextIterator: result.NextShardIterator,\n millisBehindLatest: result.MillisBehindLatest,\n };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'GetRecords failed',\n });\n throw error;\n }\n });\n }\n\n /**\n * Process records with automatic trace context extraction\n *\n * @param shardIterator - Shard iterator\n * @param processor - Function to process each record\n * @param limit - Maximum records to process\n * @returns Next shard iterator and count of processed records\n */\n async processRecords(\n shardIterator: string,\n processor: KinesisRecordProcessor,\n limit?: number,\n ): Promise<{ nextIterator?: string; processedCount: number }> {\n const { records, nextIterator } = await this.getRecords(shardIterator, limit);\n let processedCount = 0;\n\n for (const record of records) {\n // Extract trace context from record data\n const carrier = this.extractContext(record.data);\n\n // Create processing span, optionally linked to producer\n const processRecord = async () => {\n return trace(`kinesis.process`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'get',\n }),\n );\n ctx.setAttribute('aws.kinesis.sequence_number', record.sequenceNumber);\n ctx.setAttribute('aws.kinesis.partition_key', record.partitionKey);\n\n try {\n await processor(record, ctx);\n processedCount++;\n ctx.setStatus({ code: SpanStatusCode.OK });\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Processing failed',\n });\n throw error;\n }\n });\n };\n\n // Run with extracted context if available\n if (carrier) {\n const extractedContext = propagation.extract(context.active(), carrier);\n await context.with(extractedContext, processRecord);\n } else {\n await processRecord();\n }\n }\n\n return { nextIterator, processedCount };\n }\n\n /**\n * List shards for the stream\n *\n * @returns Array of shard IDs\n */\n async listShards(): Promise<string[]> {\n return trace(`kinesis.listShards`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'get',\n }),\n );\n\n try {\n const { ListShardsCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(\n new ListShardsCommand({\n StreamName: this.config.streamName,\n }),\n );\n\n const shardIds = result.Shards?.map((s: { ShardId?: string }) => s.ShardId || '') || [];\n ctx.setAttribute('aws.kinesis.shard_count', shardIds.length);\n ctx.setStatus({ code: SpanStatusCode.OK });\n\n return shardIds;\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'ListShards failed',\n });\n throw error;\n }\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// src/attributes.ts
|
|
2
|
+
var AWS_ATTRS = {
|
|
3
|
+
// Lambda
|
|
4
|
+
LAMBDA_FUNCTION_NAME: "faas.name",
|
|
5
|
+
LAMBDA_FUNCTION_VERSION: "faas.version",
|
|
6
|
+
LAMBDA_INVOCATION_ID: "faas.invocation_id",
|
|
7
|
+
LAMBDA_COLD_START: "faas.coldstart",
|
|
8
|
+
LAMBDA_TRIGGER: "faas.trigger",
|
|
9
|
+
// AWS SDK
|
|
10
|
+
AWS_SERVICE: "rpc.service",
|
|
11
|
+
AWS_OPERATION: "rpc.method",
|
|
12
|
+
AWS_REQUEST_ID: "aws.request_id",
|
|
13
|
+
AWS_EXTENDED_REQUEST_ID: "aws.extended_request_id",
|
|
14
|
+
AWS_CF_ID: "aws.cf_id",
|
|
15
|
+
// DynamoDB
|
|
16
|
+
DDB_TABLE_NAMES: "aws.dynamodb.table_names",
|
|
17
|
+
DDB_CONSUMED_CAPACITY: "aws.dynamodb.consumed_capacity",
|
|
18
|
+
// S3
|
|
19
|
+
S3_BUCKET: "aws.s3.bucket",
|
|
20
|
+
S3_KEY: "aws.s3.key",
|
|
21
|
+
S3_COPY_SOURCE: "aws.s3.copy_source",
|
|
22
|
+
// SQS
|
|
23
|
+
SQS_QUEUE_NAME: "messaging.destination.name",
|
|
24
|
+
SQS_QUEUE_URL: "aws.sqs.queue_url",
|
|
25
|
+
SQS_MESSAGE_ID: "messaging.message.id",
|
|
26
|
+
// SNS
|
|
27
|
+
SNS_TOPIC_ARN: "messaging.destination.name",
|
|
28
|
+
SNS_MESSAGE_ID: "messaging.message.id",
|
|
29
|
+
// Kinesis
|
|
30
|
+
KINESIS_STREAM_NAME: "messaging.destination.name",
|
|
31
|
+
KINESIS_SHARD_ID: "aws.kinesis.shard_id",
|
|
32
|
+
// Step Functions
|
|
33
|
+
SFN_STATE_MACHINE_ARN: "aws.stepfunctions.state_machine_arn",
|
|
34
|
+
SFN_EXECUTION_ARN: "aws.stepfunctions.execution_arn",
|
|
35
|
+
SFN_ACTIVITY_ARN: "aws.stepfunctions.activity_arn",
|
|
36
|
+
// EventBridge
|
|
37
|
+
EVENTBRIDGE_EVENT_BUS: "aws.eventbridge.event_bus",
|
|
38
|
+
EVENTBRIDGE_SOURCE: "aws.eventbridge.source",
|
|
39
|
+
EVENTBRIDGE_DETAIL_TYPE: "aws.eventbridge.detail_type",
|
|
40
|
+
// X-Ray
|
|
41
|
+
XRAY_ANNOTATIONS: "aws.xray.annotations"
|
|
42
|
+
};
|
|
43
|
+
function buildLambdaAttributes(context) {
|
|
44
|
+
return {
|
|
45
|
+
[AWS_ATTRS.LAMBDA_FUNCTION_NAME]: context.functionName,
|
|
46
|
+
[AWS_ATTRS.LAMBDA_FUNCTION_VERSION]: context.functionVersion,
|
|
47
|
+
[AWS_ATTRS.LAMBDA_INVOCATION_ID]: context.awsRequestId,
|
|
48
|
+
"cloud.provider": "aws",
|
|
49
|
+
"cloud.region": process.env.AWS_REGION || "",
|
|
50
|
+
...context.coldStart !== void 0 && {
|
|
51
|
+
[AWS_ATTRS.LAMBDA_COLD_START]: context.coldStart
|
|
52
|
+
},
|
|
53
|
+
...context.trigger && {
|
|
54
|
+
[AWS_ATTRS.LAMBDA_TRIGGER]: context.trigger
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function buildSDKAttributes(metadata) {
|
|
59
|
+
return {
|
|
60
|
+
"rpc.system": "aws-api",
|
|
61
|
+
[AWS_ATTRS.AWS_SERVICE]: metadata.service,
|
|
62
|
+
[AWS_ATTRS.AWS_OPERATION]: metadata.operation,
|
|
63
|
+
...metadata.requestId && {
|
|
64
|
+
[AWS_ATTRS.AWS_REQUEST_ID]: metadata.requestId
|
|
65
|
+
},
|
|
66
|
+
...metadata.httpStatusCode && {
|
|
67
|
+
"http.status_code": metadata.httpStatusCode
|
|
68
|
+
},
|
|
69
|
+
...metadata.extendedRequestId && {
|
|
70
|
+
[AWS_ATTRS.AWS_EXTENDED_REQUEST_ID]: metadata.extendedRequestId
|
|
71
|
+
},
|
|
72
|
+
...metadata.cfId && {
|
|
73
|
+
[AWS_ATTRS.AWS_CF_ID]: metadata.cfId
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function buildDynamoDBAttributes(operation) {
|
|
78
|
+
return {
|
|
79
|
+
"db.system": "dynamodb",
|
|
80
|
+
"db.operation": operation.operation,
|
|
81
|
+
"db.name": operation.tableName,
|
|
82
|
+
[AWS_ATTRS.DDB_TABLE_NAMES]: [operation.tableName],
|
|
83
|
+
...operation.consumedCapacity !== void 0 && {
|
|
84
|
+
[AWS_ATTRS.DDB_CONSUMED_CAPACITY]: operation.consumedCapacity
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function buildS3Attributes(operation) {
|
|
89
|
+
return {
|
|
90
|
+
[AWS_ATTRS.S3_BUCKET]: operation.bucket,
|
|
91
|
+
...operation.key && {
|
|
92
|
+
[AWS_ATTRS.S3_KEY]: operation.key
|
|
93
|
+
},
|
|
94
|
+
...operation.copySource && {
|
|
95
|
+
[AWS_ATTRS.S3_COPY_SOURCE]: operation.copySource
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function buildSQSAttributes(operation) {
|
|
100
|
+
return {
|
|
101
|
+
"messaging.system": "aws_sqs",
|
|
102
|
+
[AWS_ATTRS.SQS_QUEUE_NAME]: operation.queueName,
|
|
103
|
+
"messaging.operation": operation.operation,
|
|
104
|
+
...operation.queueUrl && {
|
|
105
|
+
[AWS_ATTRS.SQS_QUEUE_URL]: operation.queueUrl
|
|
106
|
+
},
|
|
107
|
+
...operation.messageId && {
|
|
108
|
+
[AWS_ATTRS.SQS_MESSAGE_ID]: operation.messageId
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function buildSNSAttributes(operation) {
|
|
113
|
+
return {
|
|
114
|
+
"messaging.system": "aws_sns",
|
|
115
|
+
[AWS_ATTRS.SNS_TOPIC_ARN]: operation.topicArn,
|
|
116
|
+
"messaging.operation": "publish",
|
|
117
|
+
...operation.messageId && {
|
|
118
|
+
[AWS_ATTRS.SNS_MESSAGE_ID]: operation.messageId
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function buildKinesisAttributes(operation) {
|
|
123
|
+
return {
|
|
124
|
+
"messaging.system": "aws_kinesis",
|
|
125
|
+
[AWS_ATTRS.KINESIS_STREAM_NAME]: operation.streamName,
|
|
126
|
+
"messaging.operation": operation.operation,
|
|
127
|
+
...operation.shardId && {
|
|
128
|
+
[AWS_ATTRS.KINESIS_SHARD_ID]: operation.shardId
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function buildStepFunctionsAttributes(operation) {
|
|
133
|
+
return {
|
|
134
|
+
[AWS_ATTRS.SFN_STATE_MACHINE_ARN]: operation.stateMachineArn,
|
|
135
|
+
...operation.executionArn && {
|
|
136
|
+
[AWS_ATTRS.SFN_EXECUTION_ARN]: operation.executionArn
|
|
137
|
+
},
|
|
138
|
+
...operation.activityArn && {
|
|
139
|
+
[AWS_ATTRS.SFN_ACTIVITY_ARN]: operation.activityArn
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function buildEventBridgeAttributes(operation) {
|
|
144
|
+
return {
|
|
145
|
+
[AWS_ATTRS.EVENTBRIDGE_EVENT_BUS]: operation.eventBus,
|
|
146
|
+
[AWS_ATTRS.EVENTBRIDGE_SOURCE]: operation.source,
|
|
147
|
+
[AWS_ATTRS.EVENTBRIDGE_DETAIL_TYPE]: operation.detailType
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export { AWS_ATTRS, buildDynamoDBAttributes, buildEventBridgeAttributes, buildKinesisAttributes, buildLambdaAttributes, buildS3Attributes, buildSDKAttributes, buildSNSAttributes, buildSQSAttributes, buildStepFunctionsAttributes };
|
|
152
|
+
//# sourceMappingURL=chunk-I4CKQ4RD.js.map
|
|
153
|
+
//# sourceMappingURL=chunk-I4CKQ4RD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/attributes.ts"],"names":[],"mappings":"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","file":"chunk-I4CKQ4RD.js","sourcesContent":["/**\n * AWS semantic attribute helpers\n * Following OpenTelemetry AWS semantic conventions\n */\n\n/**\n * AWS semantic attribute keys\n */\nexport const AWS_ATTRS = {\n // Lambda\n LAMBDA_FUNCTION_NAME: 'faas.name',\n LAMBDA_FUNCTION_VERSION: 'faas.version',\n LAMBDA_INVOCATION_ID: 'faas.invocation_id',\n LAMBDA_COLD_START: 'faas.coldstart',\n LAMBDA_TRIGGER: 'faas.trigger',\n\n // AWS SDK\n AWS_SERVICE: 'rpc.service',\n AWS_OPERATION: 'rpc.method',\n AWS_REQUEST_ID: 'aws.request_id',\n AWS_EXTENDED_REQUEST_ID: 'aws.extended_request_id',\n AWS_CF_ID: 'aws.cf_id',\n\n // DynamoDB\n DDB_TABLE_NAMES: 'aws.dynamodb.table_names',\n DDB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity',\n\n // S3\n S3_BUCKET: 'aws.s3.bucket',\n S3_KEY: 'aws.s3.key',\n S3_COPY_SOURCE: 'aws.s3.copy_source',\n\n // SQS\n SQS_QUEUE_NAME: 'messaging.destination.name',\n SQS_QUEUE_URL: 'aws.sqs.queue_url',\n SQS_MESSAGE_ID: 'messaging.message.id',\n\n // SNS\n SNS_TOPIC_ARN: 'messaging.destination.name',\n SNS_MESSAGE_ID: 'messaging.message.id',\n\n // Kinesis\n KINESIS_STREAM_NAME: 'messaging.destination.name',\n KINESIS_SHARD_ID: 'aws.kinesis.shard_id',\n\n // Step Functions\n SFN_STATE_MACHINE_ARN: 'aws.stepfunctions.state_machine_arn',\n SFN_EXECUTION_ARN: 'aws.stepfunctions.execution_arn',\n SFN_ACTIVITY_ARN: 'aws.stepfunctions.activity_arn',\n\n // EventBridge\n EVENTBRIDGE_EVENT_BUS: 'aws.eventbridge.event_bus',\n EVENTBRIDGE_SOURCE: 'aws.eventbridge.source',\n EVENTBRIDGE_DETAIL_TYPE: 'aws.eventbridge.detail_type',\n\n // X-Ray\n XRAY_ANNOTATIONS: 'aws.xray.annotations',\n} as const;\n\n/**\n * Build Lambda span attributes\n */\nexport function buildLambdaAttributes(context: {\n awsRequestId: string;\n functionName: string;\n functionVersion: string;\n coldStart?: boolean;\n trigger?: string;\n}): Record<string, string | boolean> {\n return {\n [AWS_ATTRS.LAMBDA_FUNCTION_NAME]: context.functionName,\n [AWS_ATTRS.LAMBDA_FUNCTION_VERSION]: context.functionVersion,\n [AWS_ATTRS.LAMBDA_INVOCATION_ID]: context.awsRequestId,\n 'cloud.provider': 'aws',\n 'cloud.region': process.env.AWS_REGION || '',\n ...(context.coldStart !== undefined && {\n [AWS_ATTRS.LAMBDA_COLD_START]: context.coldStart,\n }),\n ...(context.trigger && {\n [AWS_ATTRS.LAMBDA_TRIGGER]: context.trigger,\n }),\n };\n}\n\n/**\n * Build AWS SDK span attributes\n */\nexport function buildSDKAttributes(metadata: {\n service: string;\n operation: string;\n requestId?: string;\n httpStatusCode?: number;\n extendedRequestId?: string;\n cfId?: string;\n}): Record<string, string | number> {\n return {\n 'rpc.system': 'aws-api',\n [AWS_ATTRS.AWS_SERVICE]: metadata.service,\n [AWS_ATTRS.AWS_OPERATION]: metadata.operation,\n ...(metadata.requestId && {\n [AWS_ATTRS.AWS_REQUEST_ID]: metadata.requestId,\n }),\n ...(metadata.httpStatusCode && {\n 'http.status_code': metadata.httpStatusCode,\n }),\n ...(metadata.extendedRequestId && {\n [AWS_ATTRS.AWS_EXTENDED_REQUEST_ID]: metadata.extendedRequestId,\n }),\n ...(metadata.cfId && {\n [AWS_ATTRS.AWS_CF_ID]: metadata.cfId,\n }),\n };\n}\n\n/**\n * Build DynamoDB span attributes\n */\nexport function buildDynamoDBAttributes(operation: {\n tableName: string;\n operation: string;\n consumedCapacity?: number;\n}): Record<string, string | number | string[]> {\n return {\n 'db.system': 'dynamodb',\n 'db.operation': operation.operation,\n 'db.name': operation.tableName,\n [AWS_ATTRS.DDB_TABLE_NAMES]: [operation.tableName],\n ...(operation.consumedCapacity !== undefined && {\n [AWS_ATTRS.DDB_CONSUMED_CAPACITY]: operation.consumedCapacity,\n }),\n };\n}\n\n/**\n * Build S3 span attributes\n */\nexport function buildS3Attributes(operation: {\n bucket: string;\n key?: string;\n copySource?: string;\n}): Record<string, string> {\n return {\n [AWS_ATTRS.S3_BUCKET]: operation.bucket,\n ...(operation.key && {\n [AWS_ATTRS.S3_KEY]: operation.key,\n }),\n ...(operation.copySource && {\n [AWS_ATTRS.S3_COPY_SOURCE]: operation.copySource,\n }),\n };\n}\n\n/**\n * Build SQS span attributes\n */\nexport function buildSQSAttributes(operation: {\n queueName: string;\n queueUrl?: string;\n messageId?: string;\n operation: 'send' | 'receive';\n}): Record<string, string> {\n return {\n 'messaging.system': 'aws_sqs',\n [AWS_ATTRS.SQS_QUEUE_NAME]: operation.queueName,\n 'messaging.operation': operation.operation,\n ...(operation.queueUrl && {\n [AWS_ATTRS.SQS_QUEUE_URL]: operation.queueUrl,\n }),\n ...(operation.messageId && {\n [AWS_ATTRS.SQS_MESSAGE_ID]: operation.messageId,\n }),\n };\n}\n\n/**\n * Build SNS span attributes\n */\nexport function buildSNSAttributes(operation: {\n topicArn: string;\n messageId?: string;\n}): Record<string, string> {\n return {\n 'messaging.system': 'aws_sns',\n [AWS_ATTRS.SNS_TOPIC_ARN]: operation.topicArn,\n 'messaging.operation': 'publish',\n ...(operation.messageId && {\n [AWS_ATTRS.SNS_MESSAGE_ID]: operation.messageId,\n }),\n };\n}\n\n/**\n * Build Kinesis span attributes\n */\nexport function buildKinesisAttributes(operation: {\n streamName: string;\n shardId?: string;\n operation: 'put' | 'get';\n}): Record<string, string> {\n return {\n 'messaging.system': 'aws_kinesis',\n [AWS_ATTRS.KINESIS_STREAM_NAME]: operation.streamName,\n 'messaging.operation': operation.operation,\n ...(operation.shardId && {\n [AWS_ATTRS.KINESIS_SHARD_ID]: operation.shardId,\n }),\n };\n}\n\n/**\n * Build Step Functions span attributes\n */\nexport function buildStepFunctionsAttributes(operation: {\n stateMachineArn: string;\n executionArn?: string;\n activityArn?: string;\n}): Record<string, string> {\n return {\n [AWS_ATTRS.SFN_STATE_MACHINE_ARN]: operation.stateMachineArn,\n ...(operation.executionArn && {\n [AWS_ATTRS.SFN_EXECUTION_ARN]: operation.executionArn,\n }),\n ...(operation.activityArn && {\n [AWS_ATTRS.SFN_ACTIVITY_ARN]: operation.activityArn,\n }),\n };\n}\n\n/**\n * Build EventBridge span attributes\n */\nexport function buildEventBridgeAttributes(operation: {\n eventBus: string;\n source: string;\n detailType: string;\n}): Record<string, string> {\n return {\n [AWS_ATTRS.EVENTBRIDGE_EVENT_BUS]: operation.eventBus,\n [AWS_ATTRS.EVENTBRIDGE_SOURCE]: operation.source,\n [AWS_ATTRS.EVENTBRIDGE_DETAIL_TYPE]: operation.detailType,\n };\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
4
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
5
|
+
}) : x)(function(x) {
|
|
6
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
7
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
exports.__require = __require;
|
|
11
|
+
//# sourceMappingURL=chunk-JEQ2X3Z6.cjs.map
|
|
12
|
+
//# sourceMappingURL=chunk-JEQ2X3Z6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-JEQ2X3Z6.cjs"}
|