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,125 @@
|
|
|
1
|
+
import { A as AWSServiceConfig } from './types-3_ak5jhy.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AWS configuration types and utilities
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* AWS resource detector configuration
|
|
9
|
+
*/
|
|
10
|
+
interface AWSResourceDetectorConfig {
|
|
11
|
+
/**
|
|
12
|
+
* Auto-detect EC2 instance metadata
|
|
13
|
+
* @default true
|
|
14
|
+
*/
|
|
15
|
+
ec2?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Auto-detect ECS task metadata
|
|
18
|
+
* @default true
|
|
19
|
+
*/
|
|
20
|
+
ecs?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Auto-detect EKS cluster metadata
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
eks?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Auto-detect Lambda function metadata
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
lambda?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* AWS initialization configuration
|
|
34
|
+
*/
|
|
35
|
+
interface AWSInitConfig {
|
|
36
|
+
/**
|
|
37
|
+
* Service name
|
|
38
|
+
*/
|
|
39
|
+
service: string;
|
|
40
|
+
/**
|
|
41
|
+
* OTLP endpoint
|
|
42
|
+
*/
|
|
43
|
+
endpoint?: string;
|
|
44
|
+
/**
|
|
45
|
+
* OTLP headers (e.g., authentication tokens)
|
|
46
|
+
*/
|
|
47
|
+
headers?: Record<string, string>;
|
|
48
|
+
/**
|
|
49
|
+
* Auto-detect AWS resources
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
autoDetectResources?: boolean | AWSResourceDetectorConfig;
|
|
53
|
+
/**
|
|
54
|
+
* AWS region
|
|
55
|
+
*/
|
|
56
|
+
region?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Additional resource attributes
|
|
59
|
+
*/
|
|
60
|
+
resourceAttributes?: Record<string, string>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Lambda instrumentation configuration
|
|
64
|
+
*/
|
|
65
|
+
interface LambdaInstrumentationConfig {
|
|
66
|
+
/**
|
|
67
|
+
* Capture response in span attributes
|
|
68
|
+
* @default false
|
|
69
|
+
*/
|
|
70
|
+
captureResponse?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Extract trace context from event
|
|
73
|
+
* @default true
|
|
74
|
+
*/
|
|
75
|
+
extractTraceContext?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Service name override
|
|
78
|
+
*/
|
|
79
|
+
service?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* SDK instrumentation configuration
|
|
83
|
+
*/
|
|
84
|
+
interface SDKInstrumentationConfig {
|
|
85
|
+
/**
|
|
86
|
+
* Capture request payload
|
|
87
|
+
* @default false
|
|
88
|
+
*/
|
|
89
|
+
captureRequest?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Capture response payload
|
|
92
|
+
* @default false
|
|
93
|
+
*/
|
|
94
|
+
captureResponse?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Service name override
|
|
97
|
+
*/
|
|
98
|
+
service?: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* X-Ray configuration
|
|
102
|
+
*/
|
|
103
|
+
interface XRayConfig {
|
|
104
|
+
/**
|
|
105
|
+
* Enable X-Ray propagator
|
|
106
|
+
* @default false
|
|
107
|
+
*/
|
|
108
|
+
propagator?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Enable X-Ray remote sampling
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
113
|
+
remoteSampling?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Use X-Ray trace ID format
|
|
116
|
+
* @default false
|
|
117
|
+
*/
|
|
118
|
+
idGenerator?: boolean;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Merge AWS service config with defaults
|
|
122
|
+
*/
|
|
123
|
+
declare function mergeServiceConfig(config?: AWSServiceConfig, defaults?: AWSServiceConfig): AWSServiceConfig;
|
|
124
|
+
|
|
125
|
+
export { type AWSInitConfig as A, type LambdaInstrumentationConfig as L, type SDKInstrumentationConfig as S, type XRayConfig as X, type AWSResourceDetectorConfig as a, mergeServiceConfig as m };
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { A as AWSServiceConfig } from './types-3_ak5jhy.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AWS configuration types and utilities
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* AWS resource detector configuration
|
|
9
|
+
*/
|
|
10
|
+
interface AWSResourceDetectorConfig {
|
|
11
|
+
/**
|
|
12
|
+
* Auto-detect EC2 instance metadata
|
|
13
|
+
* @default true
|
|
14
|
+
*/
|
|
15
|
+
ec2?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Auto-detect ECS task metadata
|
|
18
|
+
* @default true
|
|
19
|
+
*/
|
|
20
|
+
ecs?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Auto-detect EKS cluster metadata
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
eks?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Auto-detect Lambda function metadata
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
lambda?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* AWS initialization configuration
|
|
34
|
+
*/
|
|
35
|
+
interface AWSInitConfig {
|
|
36
|
+
/**
|
|
37
|
+
* Service name
|
|
38
|
+
*/
|
|
39
|
+
service: string;
|
|
40
|
+
/**
|
|
41
|
+
* OTLP endpoint
|
|
42
|
+
*/
|
|
43
|
+
endpoint?: string;
|
|
44
|
+
/**
|
|
45
|
+
* OTLP headers (e.g., authentication tokens)
|
|
46
|
+
*/
|
|
47
|
+
headers?: Record<string, string>;
|
|
48
|
+
/**
|
|
49
|
+
* Auto-detect AWS resources
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
autoDetectResources?: boolean | AWSResourceDetectorConfig;
|
|
53
|
+
/**
|
|
54
|
+
* AWS region
|
|
55
|
+
*/
|
|
56
|
+
region?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Additional resource attributes
|
|
59
|
+
*/
|
|
60
|
+
resourceAttributes?: Record<string, string>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Lambda instrumentation configuration
|
|
64
|
+
*/
|
|
65
|
+
interface LambdaInstrumentationConfig {
|
|
66
|
+
/**
|
|
67
|
+
* Capture response in span attributes
|
|
68
|
+
* @default false
|
|
69
|
+
*/
|
|
70
|
+
captureResponse?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Extract trace context from event
|
|
73
|
+
* @default true
|
|
74
|
+
*/
|
|
75
|
+
extractTraceContext?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Service name override
|
|
78
|
+
*/
|
|
79
|
+
service?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* SDK instrumentation configuration
|
|
83
|
+
*/
|
|
84
|
+
interface SDKInstrumentationConfig {
|
|
85
|
+
/**
|
|
86
|
+
* Capture request payload
|
|
87
|
+
* @default false
|
|
88
|
+
*/
|
|
89
|
+
captureRequest?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Capture response payload
|
|
92
|
+
* @default false
|
|
93
|
+
*/
|
|
94
|
+
captureResponse?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Service name override
|
|
97
|
+
*/
|
|
98
|
+
service?: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* X-Ray configuration
|
|
102
|
+
*/
|
|
103
|
+
interface XRayConfig {
|
|
104
|
+
/**
|
|
105
|
+
* Enable X-Ray propagator
|
|
106
|
+
* @default false
|
|
107
|
+
*/
|
|
108
|
+
propagator?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Enable X-Ray remote sampling
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
113
|
+
remoteSampling?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Use X-Ray trace ID format
|
|
116
|
+
* @default false
|
|
117
|
+
*/
|
|
118
|
+
idGenerator?: boolean;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Merge AWS service config with defaults
|
|
122
|
+
*/
|
|
123
|
+
declare function mergeServiceConfig(config?: AWSServiceConfig, defaults?: AWSServiceConfig): AWSServiceConfig;
|
|
124
|
+
|
|
125
|
+
export { type AWSInitConfig as A, type LambdaInstrumentationConfig as L, type SDKInstrumentationConfig as S, type XRayConfig as X, type AWSResourceDetectorConfig as a, mergeServiceConfig as m };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkVZHQH75L_cjs = require('./chunk-VZHQH75L.cjs');
|
|
4
|
+
require('./chunk-Q3DMMQ7K.cjs');
|
|
5
|
+
require('./chunk-JEQ2X3Z6.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "traceDynamoDB", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return chunkVZHQH75L_cjs.traceDynamoDB; }
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=dynamodb.cjs.map
|
|
14
|
+
//# sourceMappingURL=dynamodb.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"dynamodb.cjs"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { TraceContext } from 'autotel';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* DynamoDB-specific instrumentation
|
|
5
|
+
*
|
|
6
|
+
* Provides semantic helpers for tracing DynamoDB operations with proper OpenTelemetry
|
|
7
|
+
* semantic conventions. Automatically sets `db.*` and `aws.dynamodb.*` attributes.
|
|
8
|
+
*
|
|
9
|
+
* @example Basic usage with factory pattern
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { traceDynamoDB } from 'autotel-aws/dynamodb';
|
|
12
|
+
* import { DynamoDBClient, GetItemCommand } from '@aws-sdk/client-dynamodb';
|
|
13
|
+
*
|
|
14
|
+
* const dynamodb = new DynamoDBClient({});
|
|
15
|
+
*
|
|
16
|
+
* export const getUser = traceDynamoDB({
|
|
17
|
+
* operation: 'GetItem',
|
|
18
|
+
* table: 'users'
|
|
19
|
+
* })(ctx => async (userId: string) => {
|
|
20
|
+
* ctx.setAttribute('db.statement', 'GetItem WHERE id = :id');
|
|
21
|
+
* return await dynamodb.send(new GetItemCommand({
|
|
22
|
+
* TableName: 'users',
|
|
23
|
+
* Key: { id: { S: userId } }
|
|
24
|
+
* }));
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Usage: await getUser('user-123');
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example Query with consumed capacity tracking
|
|
31
|
+
* ```typescript
|
|
32
|
+
* export const queryOrders = traceDynamoDB({
|
|
33
|
+
* operation: 'Query',
|
|
34
|
+
* table: 'orders'
|
|
35
|
+
* })(ctx => async (customerId: string, limit: number) => {
|
|
36
|
+
* const result = await dynamodb.send(new QueryCommand({
|
|
37
|
+
* TableName: 'orders',
|
|
38
|
+
* KeyConditionExpression: 'customerId = :cid',
|
|
39
|
+
* ExpressionAttributeValues: { ':cid': { S: customerId } },
|
|
40
|
+
* Limit: limit,
|
|
41
|
+
* ReturnConsumedCapacity: 'TOTAL'
|
|
42
|
+
* }));
|
|
43
|
+
*
|
|
44
|
+
* if (result.ConsumedCapacity?.CapacityUnits) {
|
|
45
|
+
* ctx.setAttribute('aws.dynamodb.consumed_capacity', result.ConsumedCapacity.CapacityUnits);
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* return result.Items;
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* DynamoDB operation configuration
|
|
55
|
+
*/
|
|
56
|
+
interface TraceDynamoDBConfig {
|
|
57
|
+
/**
|
|
58
|
+
* DynamoDB operation name (e.g., 'GetItem', 'PutItem', 'Query', 'Scan')
|
|
59
|
+
* Used to generate the span name: `dynamodb.{operation}`
|
|
60
|
+
*/
|
|
61
|
+
operation: string;
|
|
62
|
+
/**
|
|
63
|
+
* DynamoDB table name.
|
|
64
|
+
* Sets `db.name` and `aws.dynamodb.table_names` attributes.
|
|
65
|
+
*/
|
|
66
|
+
table: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Trace DynamoDB operations with semantic attributes
|
|
70
|
+
*
|
|
71
|
+
* Creates a traced function that automatically sets DynamoDB semantic attributes
|
|
72
|
+
* following OpenTelemetry database semantic conventions.
|
|
73
|
+
*
|
|
74
|
+
* @param config - DynamoDB operation configuration
|
|
75
|
+
* @returns A higher-order function that wraps your DynamoDB operation with tracing
|
|
76
|
+
*
|
|
77
|
+
* @remarks
|
|
78
|
+
* Semantic attributes set automatically:
|
|
79
|
+
* - `db.system` - 'dynamodb'
|
|
80
|
+
* - `db.operation` - The operation name (GetItem, PutItem, etc.)
|
|
81
|
+
* - `db.name` - Table name
|
|
82
|
+
* - `aws.dynamodb.table_names` - Array containing the table name
|
|
83
|
+
*
|
|
84
|
+
* Additional attributes you should set in your handler:
|
|
85
|
+
* - `db.statement` - Query/operation description
|
|
86
|
+
* - `aws.dynamodb.consumed_capacity` - Consumed capacity units
|
|
87
|
+
* - `aws.dynamodb.index_name` - GSI/LSI name if applicable
|
|
88
|
+
*
|
|
89
|
+
* @see https://opentelemetry.io/docs/specs/semconv/database/dynamodb/
|
|
90
|
+
*/
|
|
91
|
+
declare function traceDynamoDB(config: TraceDynamoDBConfig): <TArgs extends unknown[], TReturn>(fn: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>) => (...args: TArgs) => Promise<TReturn>;
|
|
92
|
+
|
|
93
|
+
export { type TraceDynamoDBConfig, traceDynamoDB };
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { TraceContext } from 'autotel';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* DynamoDB-specific instrumentation
|
|
5
|
+
*
|
|
6
|
+
* Provides semantic helpers for tracing DynamoDB operations with proper OpenTelemetry
|
|
7
|
+
* semantic conventions. Automatically sets `db.*` and `aws.dynamodb.*` attributes.
|
|
8
|
+
*
|
|
9
|
+
* @example Basic usage with factory pattern
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { traceDynamoDB } from 'autotel-aws/dynamodb';
|
|
12
|
+
* import { DynamoDBClient, GetItemCommand } from '@aws-sdk/client-dynamodb';
|
|
13
|
+
*
|
|
14
|
+
* const dynamodb = new DynamoDBClient({});
|
|
15
|
+
*
|
|
16
|
+
* export const getUser = traceDynamoDB({
|
|
17
|
+
* operation: 'GetItem',
|
|
18
|
+
* table: 'users'
|
|
19
|
+
* })(ctx => async (userId: string) => {
|
|
20
|
+
* ctx.setAttribute('db.statement', 'GetItem WHERE id = :id');
|
|
21
|
+
* return await dynamodb.send(new GetItemCommand({
|
|
22
|
+
* TableName: 'users',
|
|
23
|
+
* Key: { id: { S: userId } }
|
|
24
|
+
* }));
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Usage: await getUser('user-123');
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example Query with consumed capacity tracking
|
|
31
|
+
* ```typescript
|
|
32
|
+
* export const queryOrders = traceDynamoDB({
|
|
33
|
+
* operation: 'Query',
|
|
34
|
+
* table: 'orders'
|
|
35
|
+
* })(ctx => async (customerId: string, limit: number) => {
|
|
36
|
+
* const result = await dynamodb.send(new QueryCommand({
|
|
37
|
+
* TableName: 'orders',
|
|
38
|
+
* KeyConditionExpression: 'customerId = :cid',
|
|
39
|
+
* ExpressionAttributeValues: { ':cid': { S: customerId } },
|
|
40
|
+
* Limit: limit,
|
|
41
|
+
* ReturnConsumedCapacity: 'TOTAL'
|
|
42
|
+
* }));
|
|
43
|
+
*
|
|
44
|
+
* if (result.ConsumedCapacity?.CapacityUnits) {
|
|
45
|
+
* ctx.setAttribute('aws.dynamodb.consumed_capacity', result.ConsumedCapacity.CapacityUnits);
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* return result.Items;
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* DynamoDB operation configuration
|
|
55
|
+
*/
|
|
56
|
+
interface TraceDynamoDBConfig {
|
|
57
|
+
/**
|
|
58
|
+
* DynamoDB operation name (e.g., 'GetItem', 'PutItem', 'Query', 'Scan')
|
|
59
|
+
* Used to generate the span name: `dynamodb.{operation}`
|
|
60
|
+
*/
|
|
61
|
+
operation: string;
|
|
62
|
+
/**
|
|
63
|
+
* DynamoDB table name.
|
|
64
|
+
* Sets `db.name` and `aws.dynamodb.table_names` attributes.
|
|
65
|
+
*/
|
|
66
|
+
table: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Trace DynamoDB operations with semantic attributes
|
|
70
|
+
*
|
|
71
|
+
* Creates a traced function that automatically sets DynamoDB semantic attributes
|
|
72
|
+
* following OpenTelemetry database semantic conventions.
|
|
73
|
+
*
|
|
74
|
+
* @param config - DynamoDB operation configuration
|
|
75
|
+
* @returns A higher-order function that wraps your DynamoDB operation with tracing
|
|
76
|
+
*
|
|
77
|
+
* @remarks
|
|
78
|
+
* Semantic attributes set automatically:
|
|
79
|
+
* - `db.system` - 'dynamodb'
|
|
80
|
+
* - `db.operation` - The operation name (GetItem, PutItem, etc.)
|
|
81
|
+
* - `db.name` - Table name
|
|
82
|
+
* - `aws.dynamodb.table_names` - Array containing the table name
|
|
83
|
+
*
|
|
84
|
+
* Additional attributes you should set in your handler:
|
|
85
|
+
* - `db.statement` - Query/operation description
|
|
86
|
+
* - `aws.dynamodb.consumed_capacity` - Consumed capacity units
|
|
87
|
+
* - `aws.dynamodb.index_name` - GSI/LSI name if applicable
|
|
88
|
+
*
|
|
89
|
+
* @see https://opentelemetry.io/docs/specs/semconv/database/dynamodb/
|
|
90
|
+
*/
|
|
91
|
+
declare function traceDynamoDB(config: TraceDynamoDBConfig): <TArgs extends unknown[], TReturn>(fn: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>) => (...args: TArgs) => Promise<TReturn>;
|
|
92
|
+
|
|
93
|
+
export { type TraceDynamoDBConfig, traceDynamoDB };
|
package/dist/dynamodb.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"dynamodb.js"}
|