Skip to content

Commit f6fe1d7

Browse files
committed
fix: Instrument @smithy scoped smithy client
1 parent 05f066a commit f6fe1d7

File tree

2 files changed

+35
-24
lines changed

2 files changed

+35
-24
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use strict';
2+
3+
const instrumentV3Client = require('./aws-sdk-v3-client').install;
4+
5+
const instrumentedv3SmithyClients = new WeakMap();
6+
7+
module.exports.install = (Client) => {
8+
if (instrumentedv3SmithyClients.has(Client)) return instrumentedv3SmithyClients.get(Client);
9+
const originalSend = Client.prototype.send;
10+
const uninstallers = new Set();
11+
Client.prototype.send = function send(command, optionsOrCb, cb) {
12+
try {
13+
uninstallers.add(instrumentV3Client(this));
14+
} catch (error) {
15+
serverlessSdk._reportError(error);
16+
}
17+
return originalSend.call(this, command, optionsOrCb, cb);
18+
};
19+
const uninstall = () => {
20+
if (!instrumentedv3SmithyClients.has(Client)) return;
21+
for (const uninstallClient of uninstallers) uninstallClient();
22+
Client.prototype.send = originalSend;
23+
instrumentedv3SmithyClients.delete(Client);
24+
};
25+
instrumentedv3SmithyClients.set(Client, uninstall);
26+
return uninstall;
27+
};
28+
29+
const serverlessSdk = require('../');

node/packages/aws-lambda-sdk/lib/instrumentation/aws-sdk/index.js

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,23 @@
22

33
const cjsHook = require('@serverless/sdk/lib/instrumentation/utils/cjs-hook');
44
const instrumentV2Sdk = require('../../../instrumentation/aws-sdk-v2').install;
5-
const instrumentV3Client = require('../../../instrumentation/aws-sdk-v3-client').install;
6-
7-
const instrumentedv3SmithyClients = new WeakMap();
5+
const instrumentSmithyClient = require('../../../instrumentation/smithy-client').install;
86

97
module.exports.install = () => {
108
// AWS SDK v2
119
cjsHook.register('/aws-sdk/lib/core.js', instrumentV2Sdk);
1210

1311
// AWS SDK v3
1412
cjsHook.register('/@aws-sdk/smithy-client/dist-cjs/client.js', ({ Client }) => {
15-
if (instrumentedv3SmithyClients.has(Client)) return instrumentedv3SmithyClients.get(Client);
16-
const originalSend = Client.prototype.send;
17-
const uninstallers = new Set();
18-
Client.prototype.send = function send(command, optionsOrCb, cb) {
19-
try {
20-
uninstallers.add(instrumentV3Client(this));
21-
} catch (error) {
22-
serverlessSdk._reportError(error);
23-
}
24-
return originalSend.call(this, command, optionsOrCb, cb);
25-
};
26-
const uninstall = () => {
27-
if (!instrumentedv3SmithyClients.has(Client)) return;
28-
for (const uninstallClient of uninstallers) uninstallClient();
29-
Client.prototype.send = originalSend;
30-
instrumentedv3SmithyClients.delete(Client);
31-
};
32-
instrumentedv3SmithyClients.set(Client, uninstall);
33-
return uninstall;
13+
return instrumentSmithyClient(Client);
14+
});
15+
16+
cjsHook.register('/@smithy/smithy-client/dist-cjs/client.js', ({ Client }) => {
17+
return instrumentSmithyClient(Client);
3418
});
3519
};
3620

3721
module.exports.uninstall = () => {
3822
cjsHook.unregister('/aws-sdk/lib/core.js');
3923
cjsHook.unregister('/@aws-sdk/smithy-client/dist-cjs/client.js');
4024
};
41-
42-
const serverlessSdk = require('../../../');

0 commit comments

Comments
 (0)