@datadog/datadog-ci-plugin-lambda 3.21.0 → 3.21.2

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.
Files changed (49) hide show
  1. package/dist/cli.d.ts +1 -0
  2. package/dist/cli.js +7 -0
  3. package/dist/cli.js.map +1 -0
  4. package/dist/commands/flare.d.ts +82 -0
  5. package/dist/commands/flare.js +636 -0
  6. package/dist/commands/flare.js.map +1 -0
  7. package/dist/commands/instrument.d.ts +10 -0
  8. package/dist/commands/instrument.js +405 -0
  9. package/dist/commands/instrument.js.map +1 -0
  10. package/dist/commands/uninstrument.d.ts +8 -0
  11. package/dist/commands/uninstrument.js +264 -0
  12. package/dist/commands/uninstrument.js.map +1 -0
  13. package/dist/constants.d.ts +87 -0
  14. package/dist/constants.js +159 -0
  15. package/dist/constants.js.map +1 -0
  16. package/dist/functions/commons.d.ts +131 -0
  17. package/dist/functions/commons.js +473 -0
  18. package/dist/functions/commons.js.map +1 -0
  19. package/dist/functions/instrument.d.ts +7 -0
  20. package/dist/functions/instrument.js +271 -0
  21. package/dist/functions/instrument.js.map +1 -0
  22. package/dist/functions/uninstrument.d.ts +7 -0
  23. package/dist/functions/uninstrument.js +156 -0
  24. package/dist/functions/uninstrument.js.map +1 -0
  25. package/dist/functions/versionChecker.d.ts +3 -0
  26. package/dist/functions/versionChecker.js +38 -0
  27. package/dist/functions/versionChecker.js.map +1 -0
  28. package/dist/interfaces.d.ts +91 -0
  29. package/dist/interfaces.js +3 -0
  30. package/dist/interfaces.js.map +1 -0
  31. package/dist/loggroup.d.ts +17 -0
  32. package/dist/loggroup.js +140 -0
  33. package/dist/loggroup.js.map +1 -0
  34. package/dist/prompt.d.ts +12 -0
  35. package/dist/prompt.js +265 -0
  36. package/dist/prompt.js.map +1 -0
  37. package/dist/renderers/__mocks__/instrument-uninstrument-renderer.d.ts +2 -0
  38. package/dist/renderers/__mocks__/instrument-uninstrument-renderer.js +11 -0
  39. package/dist/renderers/__mocks__/instrument-uninstrument-renderer.js.map +1 -0
  40. package/dist/renderers/common-renderer.d.ts +16 -0
  41. package/dist/renderers/common-renderer.js +23 -0
  42. package/dist/renderers/common-renderer.js.map +1 -0
  43. package/dist/renderers/instrument-uninstrument-renderer.d.ts +397 -0
  44. package/dist/renderers/instrument-uninstrument-renderer.js +506 -0
  45. package/dist/renderers/instrument-uninstrument-renderer.js.map +1 -0
  46. package/dist/tags.d.ts +8 -0
  47. package/dist/tags.js +74 -0
  48. package/dist/tags.js.map +1 -0
  49. package/package.json +9 -3
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.calculateUpdateRequest = exports.getInstrumentedFunctionConfigsFromRegEx = exports.getInstrumentedFunctionConfig = exports.getInstrumentedFunctionConfigs = void 0;
13
+ const constants_1 = require("@datadog/datadog-ci-base/constants");
14
+ const validation_1 = require("@datadog/datadog-ci-base/helpers/validation");
15
+ const constants_2 = require("../constants");
16
+ const loggroup_1 = require("../loggroup");
17
+ const tags_1 = require("../tags");
18
+ const commons_1 = require("./commons");
19
+ const versionChecker_1 = require("./versionChecker");
20
+ const getInstrumentedFunctionConfigs = (lambdaClient, cloudWatchLogsClient, region, functionARNs, settings) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const lambdaFunctionConfigs = yield (0, commons_1.getLambdaFunctionConfigs)(lambdaClient, functionARNs);
22
+ const configs = [];
23
+ for (const config of lambdaFunctionConfigs) {
24
+ const functionConfig = yield (0, exports.getInstrumentedFunctionConfig)(lambdaClient, cloudWatchLogsClient, config, region, settings);
25
+ configs.push(functionConfig);
26
+ }
27
+ return configs;
28
+ });
29
+ exports.getInstrumentedFunctionConfigs = getInstrumentedFunctionConfigs;
30
+ const getInstrumentedFunctionConfig = (lambdaClient, cloudWatchLogsClient, config, region, settings) => __awaiter(void 0, void 0, void 0, function* () {
31
+ const functionARN = config.FunctionArn;
32
+ const runtime = config.Runtime;
33
+ if (!(0, commons_1.isSupportedRuntime)(runtime)) {
34
+ throw Error(`Can't instrument ${functionARN}, runtime ${runtime} not supported`);
35
+ }
36
+ const updateRequest = yield (0, exports.calculateUpdateRequest)(config, settings, region, runtime);
37
+ let logGroupConfiguration;
38
+ if (settings.forwarderARN !== undefined) {
39
+ const logGroupName = `/aws/lambda/${config.FunctionName}`;
40
+ logGroupConfiguration = yield (0, loggroup_1.calculateLogGroupUpdateRequest)(cloudWatchLogsClient, logGroupName, settings.forwarderARN);
41
+ }
42
+ const tagConfiguration = yield (0, tags_1.calculateTagUpdateRequest)(lambdaClient, functionARN);
43
+ return {
44
+ functionARN,
45
+ lambdaConfig: config,
46
+ logGroupConfiguration,
47
+ tagConfiguration,
48
+ updateFunctionConfigurationCommandInput: updateRequest,
49
+ };
50
+ });
51
+ exports.getInstrumentedFunctionConfig = getInstrumentedFunctionConfig;
52
+ const getInstrumentedFunctionConfigsFromRegEx = (lambdaClient, cloudWatchLogsClient, region, pattern, settings) => __awaiter(void 0, void 0, void 0, function* () {
53
+ const matchedFunctions = yield (0, commons_1.getLambdaFunctionConfigsFromRegex)(lambdaClient, pattern);
54
+ const functionsToUpdate = [];
55
+ for (const config of matchedFunctions) {
56
+ const functionConfig = yield (0, exports.getInstrumentedFunctionConfig)(lambdaClient, cloudWatchLogsClient, config, region, settings);
57
+ functionsToUpdate.push(functionConfig);
58
+ }
59
+ return functionsToUpdate;
60
+ });
61
+ exports.getInstrumentedFunctionConfigsFromRegEx = getInstrumentedFunctionConfigsFromRegEx;
62
+ const calculateUpdateRequest = (config, settings, region, runtime) => __awaiter(void 0, void 0, void 0, function* () {
63
+ var _a, _b, _c, _d, _e, _f;
64
+ const oldEnvVars = Object.assign({}, (_a = config.Environment) === null || _a === void 0 ? void 0 : _a.Variables);
65
+ const changedEnvVars = {};
66
+ const functionARN = config.FunctionArn;
67
+ const apiKey = (_b = process.env[constants_1.CI_API_KEY_ENV_VAR]) !== null && _b !== void 0 ? _b : process.env[constants_1.API_KEY_ENV_VAR];
68
+ const apiKeySecretArn = process.env[constants_2.CI_API_KEY_SECRET_ARN_ENV_VAR];
69
+ const apiKmsKey = process.env[constants_2.CI_KMS_API_KEY_ENV_VAR];
70
+ const site = process.env[constants_1.CI_SITE_ENV_VAR];
71
+ if (functionARN === undefined) {
72
+ return undefined;
73
+ }
74
+ const updateRequest = {
75
+ FunctionName: functionARN,
76
+ };
77
+ let needsUpdate = false;
78
+ const runtimeType = constants_2.RUNTIME_LOOKUP[runtime];
79
+ if (runtimeType === constants_2.RuntimeType.CUSTOM) {
80
+ if (settings.layerVersion !== undefined) {
81
+ throw new Error(`Only the --extension-version argument should be set for the ${runtime} runtime. Please remove the --layer-version argument from the instrument command.`);
82
+ }
83
+ }
84
+ // Update Python Handler
85
+ if (runtimeType === constants_2.RuntimeType.PYTHON && (settings.layerVersion !== undefined || settings.interactive)) {
86
+ const expectedHandler = constants_2.PYTHON_HANDLER_LOCATION;
87
+ if (config.Handler !== expectedHandler) {
88
+ needsUpdate = true;
89
+ updateRequest.Handler = constants_2.PYTHON_HANDLER_LOCATION;
90
+ }
91
+ }
92
+ // Update Node Handler
93
+ if (runtimeType === constants_2.RuntimeType.NODE && (settings.layerVersion !== undefined || settings.interactive)) {
94
+ const expectedHandler = constants_2.NODE_HANDLER_LOCATION;
95
+ if (config.Handler !== expectedHandler) {
96
+ needsUpdate = true;
97
+ updateRequest.Handler = constants_2.NODE_HANDLER_LOCATION;
98
+ }
99
+ }
100
+ // Update Env Vars
101
+ if (runtimeType === constants_2.RuntimeType.PYTHON || runtimeType === constants_2.RuntimeType.NODE) {
102
+ if (oldEnvVars[constants_2.LAMBDA_HANDLER_ENV_VAR] === undefined) {
103
+ needsUpdate = true;
104
+ changedEnvVars[constants_2.LAMBDA_HANDLER_ENV_VAR] = (_c = config.Handler) !== null && _c !== void 0 ? _c : '';
105
+ }
106
+ }
107
+ // KMS > Secrets Manager > API Key
108
+ if (apiKmsKey !== undefined && oldEnvVars[constants_2.KMS_API_KEY_ENV_VAR] !== apiKmsKey) {
109
+ needsUpdate = true;
110
+ changedEnvVars[constants_2.KMS_API_KEY_ENV_VAR] = apiKmsKey;
111
+ }
112
+ else if (apiKeySecretArn !== undefined && oldEnvVars[constants_2.API_KEY_SECRET_ARN_ENV_VAR] !== apiKeySecretArn) {
113
+ const isNode = runtimeType === constants_2.RuntimeType.NODE;
114
+ const isSendingSynchronousMetrics = settings.extensionVersion === undefined && !settings.flushMetricsToLogs;
115
+ if (isSendingSynchronousMetrics && isNode) {
116
+ throw new Error('`apiKeySecretArn` is not supported for Node runtimes when using Synchronous Metrics. Use either `apiKey` or `apiKmsKey`.');
117
+ }
118
+ needsUpdate = true;
119
+ changedEnvVars[constants_2.API_KEY_SECRET_ARN_ENV_VAR] = apiKeySecretArn;
120
+ }
121
+ else if (apiKey !== undefined && oldEnvVars[constants_1.API_KEY_ENV_VAR] !== apiKey) {
122
+ needsUpdate = true;
123
+ changedEnvVars[constants_1.API_KEY_ENV_VAR] = apiKey;
124
+ }
125
+ if (site !== undefined && oldEnvVars[constants_1.SITE_ENV_VAR] !== site) {
126
+ if ((0, validation_1.isValidDatadogSite)(site)) {
127
+ needsUpdate = true;
128
+ changedEnvVars[constants_1.SITE_ENV_VAR] = site;
129
+ }
130
+ else {
131
+ throw new Error('Warning: Invalid site URL. Must be either datadoghq.com, datadoghq.eu, us3.datadoghq.com, us5.datadoghq.com, ap1.datadoghq.com, ap2.datadoghq.com, or ddog-gov.com.');
132
+ }
133
+ }
134
+ if (site === undefined && oldEnvVars[constants_1.SITE_ENV_VAR] === undefined) {
135
+ needsUpdate = true;
136
+ changedEnvVars[constants_1.SITE_ENV_VAR] = 'datadoghq.com';
137
+ }
138
+ const environmentVarsTupleArray = [
139
+ ['apmFlushDeadline', constants_2.APM_FLUSH_DEADLINE_MILLISECONDS_ENV_VAR],
140
+ ['appsecEnabled', constants_2.APPSEC_ENABLED_ENV_VAR],
141
+ ['captureLambdaPayload', constants_2.CAPTURE_LAMBDA_PAYLOAD_ENV_VAR],
142
+ ['environment', constants_1.ENVIRONMENT_ENV_VAR],
143
+ ['extraTags', constants_1.DD_TAGS_ENV_VAR],
144
+ ['loggingEnabled', constants_2.LOG_ENABLED_ENV_VAR],
145
+ ['mergeXrayTraces', constants_2.MERGE_XRAY_TRACES_ENV_VAR],
146
+ ['service', constants_1.SERVICE_ENV_VAR],
147
+ ['tracingEnabled', constants_1.DD_TRACE_ENABLED_ENV_VAR],
148
+ ['version', constants_1.VERSION_ENV_VAR],
149
+ ['llmobsMlApp', constants_1.DD_LLMOBS_ML_APP_ENV_VAR],
150
+ ];
151
+ for (const [key, environmentVar] of environmentVarsTupleArray) {
152
+ if (settings[key] !== undefined && oldEnvVars[environmentVar] !== ((_d = settings[key]) === null || _d === void 0 ? void 0 : _d.toString())) {
153
+ needsUpdate = true;
154
+ changedEnvVars[environmentVar] = settings[key].toString();
155
+ }
156
+ }
157
+ // Skip adding DD_FLUSH_TO_LOGS when using Extension
158
+ const isUsingExtension = settings.extensionVersion !== undefined;
159
+ if (!isUsingExtension &&
160
+ settings.flushMetricsToLogs !== undefined &&
161
+ oldEnvVars[constants_2.FLUSH_TO_LOG_ENV_VAR] !== ((_e = settings.flushMetricsToLogs) === null || _e === void 0 ? void 0 : _e.toString())) {
162
+ needsUpdate = true;
163
+ changedEnvVars[constants_2.FLUSH_TO_LOG_ENV_VAR] = settings.flushMetricsToLogs.toString();
164
+ }
165
+ const newEnvVars = Object.assign(Object.assign({}, oldEnvVars), changedEnvVars);
166
+ if (newEnvVars[constants_1.DD_LOG_LEVEL_ENV_VAR] !== settings.logLevel) {
167
+ needsUpdate = true;
168
+ if (settings.logLevel) {
169
+ newEnvVars[constants_1.DD_LOG_LEVEL_ENV_VAR] = settings.logLevel;
170
+ }
171
+ else {
172
+ delete newEnvVars[constants_1.DD_LOG_LEVEL_ENV_VAR];
173
+ }
174
+ }
175
+ // Enable ASM
176
+ if (settings['appsecEnabled'] === true) {
177
+ newEnvVars[constants_2.AWS_LAMBDA_EXEC_WRAPPER_VAR] = constants_2.AWS_LAMBDA_EXEC_WRAPPER;
178
+ }
179
+ // Enable LLMObs
180
+ if (settings['llmobsMlApp'] !== undefined) {
181
+ newEnvVars[constants_1.DD_LLMOBS_ENABLED_ENV_VAR] = 'true';
182
+ newEnvVars[constants_1.DD_LLMOBS_ML_APP_ENV_VAR] = settings['llmobsMlApp'];
183
+ // For LLM Observability to use the agent from the extension layer as a proxy.
184
+ // LLM Observability setup documentation will point to the `-e` extension layer option to
185
+ // always use the extension layer.
186
+ newEnvVars[constants_1.DD_LLMOBS_AGENTLESS_ENABLED_ENV_VAR] = 'false';
187
+ }
188
+ let layerARNs = (0, commons_1.getLayers)(config);
189
+ const originalLayerARNs = layerARNs;
190
+ let needsLayerUpdate = false;
191
+ let layerOrTraceVersion;
192
+ if ((0, commons_1.isLayerRuntime)(runtime)) {
193
+ const lambdaLibraryLayerArn = (0, commons_1.getLayerArn)(config, config.Runtime, region, settings);
194
+ const lambdaLibraryLayerName = constants_2.LAYER_LOOKUP[runtime];
195
+ let fullLambdaLibraryLayerARN;
196
+ if (settings.layerVersion !== undefined || settings.interactive) {
197
+ layerOrTraceVersion = settings.layerVersion;
198
+ if (settings.interactive && !settings.layerVersion) {
199
+ layerOrTraceVersion = yield (0, commons_1.findLatestLayerVersion)(config.Runtime, region);
200
+ }
201
+ fullLambdaLibraryLayerARN = `${lambdaLibraryLayerArn}:${layerOrTraceVersion}`;
202
+ }
203
+ layerARNs = (0, commons_1.addLayerArn)(fullLambdaLibraryLayerARN, lambdaLibraryLayerName, layerARNs);
204
+ }
205
+ const lambdaExtensionLayerArn = (0, commons_1.getLayerArn)(config, constants_2.EXTENSION_LAYER_KEY, region, settings);
206
+ let fullExtensionLayerARN;
207
+ let extensionVersion;
208
+ if (settings.extensionVersion !== undefined || settings.interactive) {
209
+ extensionVersion = settings.extensionVersion;
210
+ if (settings.interactive && !settings.extensionVersion) {
211
+ extensionVersion = yield (0, commons_1.findLatestLayerVersion)(constants_2.EXTENSION_LAYER_KEY, region);
212
+ }
213
+ if (settings.lambdaFips) {
214
+ if (oldEnvVars[constants_2.DD_LAMBDA_FIPS_MODE_ENV_VAR] !== 'true') {
215
+ needsUpdate = true;
216
+ newEnvVars[constants_2.DD_LAMBDA_FIPS_MODE_ENV_VAR] = 'true';
217
+ }
218
+ }
219
+ fullExtensionLayerARN = `${lambdaExtensionLayerArn}:${extensionVersion}`;
220
+ }
221
+ layerARNs = (0, commons_1.addLayerArn)(fullExtensionLayerARN, constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME, layerARNs);
222
+ // Special handling for .NET and Java to support universal instrumentation
223
+ if (runtimeType === constants_2.RuntimeType.DOTNET || runtimeType === constants_2.RuntimeType.JAVA) {
224
+ if (layerOrTraceVersion && (0, versionChecker_1.isExtensionCompatibleWithUniversalInstrumentation)(runtimeType, extensionVersion)) {
225
+ // If the user configures the trace version and the extension support univeral instrumenation
226
+ // Then check whether the trace and extension are compatible with each other
227
+ if ((0, versionChecker_1.isTracerCompatibleWithExtension)(runtimeType, layerOrTraceVersion)) {
228
+ needsUpdate = true;
229
+ newEnvVars[constants_2.AWS_LAMBDA_EXEC_WRAPPER_VAR] = constants_2.AWS_LAMBDA_EXEC_WRAPPER;
230
+ }
231
+ else {
232
+ throw new Error(`For the ${runtime} runtime, the dd-trace version ${layerOrTraceVersion} is not compatible with the dd-extension version ${extensionVersion}`);
233
+ }
234
+ }
235
+ else if (runtimeType === constants_2.RuntimeType.DOTNET) {
236
+ // If it is an old extension version or the trace version is null, leave it is as the old workflow
237
+ if (!(0, versionChecker_1.isExtensionCompatibleWithUniversalInstrumentation)(runtimeType, extensionVersion) &&
238
+ ((_f = config.Architectures) === null || _f === void 0 ? void 0 : _f.includes(constants_2.ARM64_ARCHITECTURE))) {
239
+ throw new Error('Instrumenting arm64 architecture is not supported for the given dd-extension version. Please choose the latest dd-extension version or use x86_64 architecture.');
240
+ }
241
+ else {
242
+ needsUpdate = true;
243
+ newEnvVars[constants_2.ENABLE_PROFILING_ENV_VAR] = constants_2.CORECLR_ENABLE_PROFILING;
244
+ newEnvVars[constants_2.PROFILER_ENV_VAR] = constants_2.CORECLR_PROFILER;
245
+ newEnvVars[constants_2.PROFILER_PATH_ENV_VAR] = constants_2.CORECLR_PROFILER_PATH;
246
+ newEnvVars[constants_2.DOTNET_TRACER_HOME_ENV_VAR] = constants_2.DD_DOTNET_TRACER_HOME;
247
+ }
248
+ }
249
+ }
250
+ updateRequest.Environment = {
251
+ Variables: newEnvVars,
252
+ };
253
+ if (originalLayerARNs.sort().join(',') !== layerARNs.sort().join(',')) {
254
+ needsLayerUpdate = true;
255
+ }
256
+ if (needsLayerUpdate) {
257
+ needsUpdate = true;
258
+ updateRequest.Layers = layerARNs;
259
+ }
260
+ layerARNs.forEach((layerARN) => {
261
+ if (layerARN.includes(constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME) &&
262
+ newEnvVars[constants_1.API_KEY_ENV_VAR] === undefined &&
263
+ newEnvVars[constants_2.API_KEY_SECRET_ARN_ENV_VAR] === undefined &&
264
+ newEnvVars[constants_2.KMS_API_KEY_ENV_VAR] === undefined) {
265
+ throw new Error(`When 'extensionLayer' is set, ${constants_1.CI_API_KEY_ENV_VAR}, ${constants_2.CI_KMS_API_KEY_ENV_VAR}, or ${constants_2.CI_API_KEY_SECRET_ARN_ENV_VAR} must also be set`);
266
+ }
267
+ });
268
+ return needsUpdate ? updateRequest : undefined;
269
+ });
270
+ exports.calculateUpdateRequest = calculateUpdateRequest;
271
+ //# sourceMappingURL=instrument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrument.js","sourceRoot":"","sources":["../../src/functions/instrument.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,kEAc2C;AAC3C,4EAA8E;AAE9E,4CAgCqB;AAErB,0CAA0D;AAC1D,kCAAiD;AAEjD,uCASkB;AAClB,qDAAmH;AAE5G,MAAM,8BAA8B,GAAG,CAC5C,YAA0B,EAC1B,oBAA0C,EAC1C,MAAc,EACd,YAAsB,EACtB,QAAiC,EACC,EAAE;IACpC,MAAM,qBAAqB,GAAG,MAAM,IAAA,kCAAwB,EAAC,YAAY,EAAE,YAAY,CAAC,CAAA;IAExF,MAAM,OAAO,GAA4B,EAAE,CAAA;IAC3C,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE;QAC1C,MAAM,cAAc,GAAG,MAAM,IAAA,qCAA6B,EACxD,YAAY,EACZ,oBAAoB,EACpB,MAAM,EACN,MAAM,EACN,QAAQ,CACT,CAAA;QAED,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;KAC7B;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA,CAAA;AAvBY,QAAA,8BAA8B,kCAuB1C;AAEM,MAAM,6BAA6B,GAAG,CAC3C,YAA0B,EAC1B,oBAA0C,EAC1C,MAA8B,EAC9B,MAAc,EACd,QAAiC,EACD,EAAE;IAClC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAY,CAAA;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC9B,IAAI,CAAC,IAAA,4BAAkB,EAAC,OAAO,CAAC,EAAE;QAChC,MAAM,KAAK,CAAC,oBAAoB,WAAW,aAAa,OAAO,gBAAgB,CAAC,CAAA;KACjF;IAED,MAAM,aAAa,GAAG,MAAM,IAAA,8BAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACrF,IAAI,qBAAwD,CAAA;IAC5D,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE;QACvC,MAAM,YAAY,GAAG,eAAe,MAAM,CAAC,YAAY,EAAE,CAAA;QACzD,qBAAqB,GAAG,MAAM,IAAA,yCAA8B,EAC1D,oBAAoB,EACpB,YAAY,EACZ,QAAQ,CAAC,YAAY,CACtB,CAAA;KACF;IAED,MAAM,gBAAgB,GAAiC,MAAM,IAAA,gCAAyB,EAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAEjH,OAAO;QACL,WAAW;QACX,YAAY,EAAE,MAAM;QACpB,qBAAqB;QACrB,gBAAgB;QAChB,uCAAuC,EAAE,aAAa;KACvD,CAAA;AACH,CAAC,CAAA,CAAA;AAjCY,QAAA,6BAA6B,iCAiCzC;AAEM,MAAM,uCAAuC,GAAG,CACrD,YAA0B,EAC1B,oBAA0C,EAC1C,MAAc,EACd,OAAe,EACf,QAAiC,EACC,EAAE;IACpC,MAAM,gBAAgB,GAAG,MAAM,IAAA,2CAAiC,EAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACvF,MAAM,iBAAiB,GAA4B,EAAE,CAAA;IAErD,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;QACrC,MAAM,cAAc,GAAG,MAAM,IAAA,qCAA6B,EACxD,YAAY,EACZ,oBAAoB,EACpB,MAAM,EACN,MAAM,EACN,QAAQ,CACT,CAAA;QACD,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;KACvC;IAED,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA,CAAA;AAtBY,QAAA,uCAAuC,2CAsBnD;AAEM,MAAM,sBAAsB,GAAG,CACpC,MAA8B,EAC9B,QAAiC,EACjC,MAAc,EACd,OAAgB,EAC8C,EAAE;;IAChE,MAAM,UAAU,qBAA+B,MAAA,MAAM,CAAC,WAAW,0CAAE,SAAS,CAAC,CAAA;IAC7E,MAAM,cAAc,GAA2B,EAAE,CAAA;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;IAEtC,MAAM,MAAM,GAAuB,MAAA,OAAO,CAAC,GAAG,CAAC,8BAAkB,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,2BAAe,CAAC,CAAA;IAClG,MAAM,eAAe,GAAuB,OAAO,CAAC,GAAG,CAAC,yCAA6B,CAAC,CAAA;IACtF,MAAM,SAAS,GAAuB,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,CAAA;IACzE,MAAM,IAAI,GAAuB,OAAO,CAAC,GAAG,CAAC,2BAAe,CAAC,CAAA;IAE7D,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,OAAO,SAAS,CAAA;KACjB;IAED,MAAM,aAAa,GAA4C;QAC7D,YAAY,EAAE,WAAW;KAC1B,CAAA;IACD,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,MAAM,WAAW,GAAG,0BAAc,CAAC,OAAO,CAAC,CAAA;IAE3C,IAAI,WAAW,KAAK,uBAAW,CAAC,MAAM,EAAE;QACtC,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE;YACvC,MAAM,IAAI,KAAK,CACb,+DAA+D,OAAO,mFAAmF,CAC1J,CAAA;SACF;KACF;IAED,wBAAwB;IACxB,IAAI,WAAW,KAAK,uBAAW,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;QACvG,MAAM,eAAe,GAAG,mCAAuB,CAAA;QAC/C,IAAI,MAAM,CAAC,OAAO,KAAK,eAAe,EAAE;YACtC,WAAW,GAAG,IAAI,CAAA;YAClB,aAAa,CAAC,OAAO,GAAG,mCAAuB,CAAA;SAChD;KACF;IAED,sBAAsB;IACtB,IAAI,WAAW,KAAK,uBAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrG,MAAM,eAAe,GAAG,iCAAqB,CAAA;QAC7C,IAAI,MAAM,CAAC,OAAO,KAAK,eAAe,EAAE;YACtC,WAAW,GAAG,IAAI,CAAA;YAClB,aAAa,CAAC,OAAO,GAAG,iCAAqB,CAAA;SAC9C;KACF;IAED,kBAAkB;IAClB,IAAI,WAAW,KAAK,uBAAW,CAAC,MAAM,IAAI,WAAW,KAAK,uBAAW,CAAC,IAAI,EAAE;QAC1E,IAAI,UAAU,CAAC,kCAAsB,CAAC,KAAK,SAAS,EAAE;YACpD,WAAW,GAAG,IAAI,CAAA;YAClB,cAAc,CAAC,kCAAsB,CAAC,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAA;SAC9D;KACF;IAED,kCAAkC;IAClC,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,+BAAmB,CAAC,KAAK,SAAS,EAAE;QAC5E,WAAW,GAAG,IAAI,CAAA;QAClB,cAAc,CAAC,+BAAmB,CAAC,GAAG,SAAS,CAAA;KAChD;SAAM,IAAI,eAAe,KAAK,SAAS,IAAI,UAAU,CAAC,sCAA0B,CAAC,KAAK,eAAe,EAAE;QACtG,MAAM,MAAM,GAAG,WAAW,KAAK,uBAAW,CAAC,IAAI,CAAA;QAC/C,MAAM,2BAA2B,GAAG,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAA;QAC3G,IAAI,2BAA2B,IAAI,MAAM,EAAE;YACzC,MAAM,IAAI,KAAK,CACb,0HAA0H,CAC3H,CAAA;SACF;QACD,WAAW,GAAG,IAAI,CAAA;QAClB,cAAc,CAAC,sCAA0B,CAAC,GAAG,eAAe,CAAA;KAC7D;SAAM,IAAI,MAAM,KAAK,SAAS,IAAI,UAAU,CAAC,2BAAe,CAAC,KAAK,MAAM,EAAE;QACzE,WAAW,GAAG,IAAI,CAAA;QAClB,cAAc,CAAC,2BAAe,CAAC,GAAG,MAAM,CAAA;KACzC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,wBAAY,CAAC,KAAK,IAAI,EAAE;QAC3D,IAAI,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE;YAC5B,WAAW,GAAG,IAAI,CAAA;YAClB,cAAc,CAAC,wBAAY,CAAC,GAAG,IAAI,CAAA;SACpC;aAAM;YACL,MAAM,IAAI,KAAK,CACb,qKAAqK,CACtK,CAAA;SACF;KACF;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,wBAAY,CAAC,KAAK,SAAS,EAAE;QAChE,WAAW,GAAG,IAAI,CAAA;QAClB,cAAc,CAAC,wBAAY,CAAC,GAAG,eAAe,CAAA;KAC/C;IAED,MAAM,yBAAyB,GAA8C;QAC3E,CAAC,kBAAkB,EAAE,mDAAuC,CAAC;QAC7D,CAAC,eAAe,EAAE,kCAAsB,CAAC;QACzC,CAAC,sBAAsB,EAAE,0CAA8B,CAAC;QACxD,CAAC,aAAa,EAAE,+BAAmB,CAAC;QACpC,CAAC,WAAW,EAAE,2BAAe,CAAC;QAC9B,CAAC,gBAAgB,EAAE,+BAAmB,CAAC;QACvC,CAAC,iBAAiB,EAAE,qCAAyB,CAAC;QAC9C,CAAC,SAAS,EAAE,2BAAe,CAAC;QAC5B,CAAC,gBAAgB,EAAE,oCAAwB,CAAC;QAC5C,CAAC,SAAS,EAAE,2BAAe,CAAC;QAC5B,CAAC,aAAa,EAAE,oCAAwB,CAAC;KAC1C,CAAA;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,yBAAyB,EAAE;QAC7D,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,cAAc,CAAC,MAAK,MAAA,QAAQ,CAAC,GAAG,CAAC,0CAAE,QAAQ,EAAE,CAAA,EAAE;YAC3F,WAAW,GAAG,IAAI,CAAA;YAClB,cAAc,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAE,CAAC,QAAQ,EAAE,CAAA;SAC3D;KACF;IAED,oDAAoD;IACpD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,KAAK,SAAS,CAAA;IAChE,IACE,CAAC,gBAAgB;QACjB,QAAQ,CAAC,kBAAkB,KAAK,SAAS;QACzC,UAAU,CAAC,gCAAoB,CAAC,MAAK,MAAA,QAAQ,CAAC,kBAAkB,0CAAE,QAAQ,EAAE,CAAA,EAC5E;QACA,WAAW,GAAG,IAAI,CAAA;QAClB,cAAc,CAAC,gCAAoB,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAA;KAC9E;IAED,MAAM,UAAU,mCAAO,UAAU,GAAK,cAAc,CAAC,CAAA;IAErD,IAAI,UAAU,CAAC,gCAAoB,CAAC,KAAK,QAAQ,CAAC,QAAQ,EAAE;QAC1D,WAAW,GAAG,IAAI,CAAA;QAClB,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACrB,UAAU,CAAC,gCAAoB,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAA;SACrD;aAAM;YACL,OAAO,UAAU,CAAC,gCAAoB,CAAC,CAAA;SACxC;KACF;IAED,aAAa;IACb,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;QACtC,UAAU,CAAC,uCAA2B,CAAC,GAAG,mCAAuB,CAAA;KAClE;IAED,gBAAgB;IAChB,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;QACzC,UAAU,CAAC,qCAAyB,CAAC,GAAG,MAAM,CAAA;QAC9C,UAAU,CAAC,oCAAwB,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;QAE9D,8EAA8E;QAC9E,yFAAyF;QACzF,kCAAkC;QAClC,UAAU,CAAC,+CAAmC,CAAC,GAAG,OAAO,CAAA;KAC1D;IAED,IAAI,SAAS,GAAG,IAAA,mBAAS,EAAC,MAAM,CAAC,CAAA;IACjC,MAAM,iBAAiB,GAAG,SAAS,CAAA;IACnC,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAC5B,IAAI,mBAAuC,CAAA;IAC3C,IAAI,IAAA,wBAAc,EAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,qBAAqB,GAAG,IAAA,qBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,OAAmB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/F,MAAM,sBAAsB,GAAG,wBAAY,CAAC,OAAmB,CAAC,CAAA;QAChE,IAAI,yBAA6C,CAAA;QACjD,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,EAAE;YAC/D,mBAAmB,GAAG,QAAQ,CAAC,YAAY,CAAA;YAC3C,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;gBAClD,mBAAmB,GAAG,MAAM,IAAA,gCAAsB,EAAC,MAAM,CAAC,OAAmB,EAAE,MAAM,CAAC,CAAA;aACvF;YACD,yBAAyB,GAAG,GAAG,qBAAqB,IAAI,mBAAmB,EAAE,CAAA;SAC9E;QACD,SAAS,GAAG,IAAA,qBAAW,EAAC,yBAAyB,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAA;KACtF;IAED,MAAM,uBAAuB,GAAG,IAAA,qBAAW,EAAC,MAAM,EAAE,+BAA+B,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACtG,IAAI,qBAAyC,CAAA;IAC7C,IAAI,gBAAoC,CAAA;IACxC,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,EAAE;QACnE,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAA;QAC5C,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YACtD,gBAAgB,GAAG,MAAM,IAAA,gCAAsB,EAAC,+BAA+B,EAAE,MAAM,CAAC,CAAA;SACzF;QAED,IAAI,QAAQ,CAAC,UAAU,EAAE;YACvB,IAAI,UAAU,CAAC,uCAA2B,CAAC,KAAK,MAAM,EAAE;gBACtD,WAAW,GAAG,IAAI,CAAA;gBAClB,UAAU,CAAC,uCAA2B,CAAC,GAAG,MAAM,CAAA;aACjD;SACF;QACD,qBAAqB,GAAG,GAAG,uBAAuB,IAAI,gBAAgB,EAAE,CAAA;KACzE;IACD,SAAS,GAAG,IAAA,qBAAW,EAAC,qBAAqB,EAAE,0CAA8B,EAAE,SAAS,CAAC,CAAA;IAEzF,0EAA0E;IAC1E,IAAI,WAAW,KAAK,uBAAW,CAAC,MAAM,IAAI,WAAW,KAAK,uBAAW,CAAC,IAAI,EAAE;QAC1E,IAAI,mBAAmB,IAAI,IAAA,kEAAiD,EAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE;YAC3G,6FAA6F;YAC7F,4EAA4E;YAC5E,IAAI,IAAA,gDAA+B,EAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE;gBACrE,WAAW,GAAG,IAAI,CAAA;gBAClB,UAAU,CAAC,uCAA2B,CAAC,GAAG,mCAAuB,CAAA;aAClE;iBAAM;gBACL,MAAM,IAAI,KAAK,CACb,WAAW,OAAO,kCAAkC,mBAAmB,oDAAoD,gBAAgB,EAAE,CAC9I,CAAA;aACF;SACF;aAAM,IAAI,WAAW,KAAK,uBAAW,CAAC,MAAM,EAAE;YAC7C,kGAAkG;YAClG,IACE,CAAC,IAAA,kEAAiD,EAAC,WAAW,EAAE,gBAAgB,CAAC;iBACjF,MAAA,MAAM,CAAC,aAAa,0CAAE,QAAQ,CAAC,8BAAkB,CAAC,CAAA,EAClD;gBACA,MAAM,IAAI,KAAK,CACb,iKAAiK,CAClK,CAAA;aACF;iBAAM;gBACL,WAAW,GAAG,IAAI,CAAA;gBAClB,UAAU,CAAC,oCAAwB,CAAC,GAAG,oCAAwB,CAAA;gBAC/D,UAAU,CAAC,4BAAgB,CAAC,GAAG,4BAAgB,CAAA;gBAC/C,UAAU,CAAC,iCAAqB,CAAC,GAAG,iCAAqB,CAAA;gBACzD,UAAU,CAAC,sCAA0B,CAAC,GAAG,iCAAqB,CAAA;aAC/D;SACF;KACF;IAED,aAAa,CAAC,WAAW,GAAG;QAC1B,SAAS,EAAE,UAAU;KACtB,CAAA;IAED,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrE,gBAAgB,GAAG,IAAI,CAAA;KACxB;IACD,IAAI,gBAAgB,EAAE;QACpB,WAAW,GAAG,IAAI,CAAA;QAClB,aAAa,CAAC,MAAM,GAAG,SAAS,CAAA;KACjC;IAED,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7B,IACE,QAAQ,CAAC,QAAQ,CAAC,0CAA8B,CAAC;YACjD,UAAU,CAAC,2BAAe,CAAC,KAAK,SAAS;YACzC,UAAU,CAAC,sCAA0B,CAAC,KAAK,SAAS;YACpD,UAAU,CAAC,+BAAmB,CAAC,KAAK,SAAS,EAC7C;YACA,MAAM,IAAI,KAAK,CACb,iCAAiC,8BAAkB,KAAK,kCAAsB,QAAQ,yCAA6B,mBAAmB,CACvI,CAAA;SACF;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAA;AAChD,CAAC,CAAA,CAAA;AAvPY,QAAA,sBAAsB,0BAuPlC"}
@@ -0,0 +1,7 @@
1
+ import { CloudWatchLogsClient } from '@aws-sdk/client-cloudwatch-logs';
2
+ import { LambdaClient, FunctionConfiguration as LFunctionConfiguration, Runtime, UpdateFunctionConfigurationRequest } from '@aws-sdk/client-lambda';
3
+ import { FunctionConfiguration } from '../interfaces';
4
+ export declare const getUninstrumentedFunctionConfigs: (lambdaClient: LambdaClient, cloudWatchLogsClient: CloudWatchLogsClient, functionARNs: string[], forwarderARN: string | undefined) => Promise<FunctionConfiguration[]>;
5
+ export declare const getUninstrumentedFunctionConfig: (lambdaClient: LambdaClient, cloudWatchLogsClient: CloudWatchLogsClient, config: LFunctionConfiguration, forwarderARN: string | undefined) => Promise<FunctionConfiguration>;
6
+ export declare const getUninstrumentedFunctionConfigsFromRegEx: (lambdaClient: LambdaClient, cloudWatchLogsClient: CloudWatchLogsClient, pattern: string, forwarderArn: string | undefined) => Promise<FunctionConfiguration[]>;
7
+ export declare const calculateUpdateRequest: (config: LFunctionConfiguration, runtime: Runtime) => UpdateFunctionConfigurationRequest | undefined;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.calculateUpdateRequest = exports.getUninstrumentedFunctionConfigsFromRegEx = exports.getUninstrumentedFunctionConfig = exports.getUninstrumentedFunctionConfigs = void 0;
13
+ const constants_1 = require("@datadog/datadog-ci-base/constants");
14
+ const constants_2 = require("../constants");
15
+ const loggroup_1 = require("../loggroup");
16
+ const tags_1 = require("../tags");
17
+ const commons_1 = require("./commons");
18
+ const getUninstrumentedFunctionConfigs = (lambdaClient, cloudWatchLogsClient, functionARNs, forwarderARN) => __awaiter(void 0, void 0, void 0, function* () {
19
+ const lambdaFunctionConfigs = yield (0, commons_1.getLambdaFunctionConfigs)(lambdaClient, functionARNs);
20
+ const configs = [];
21
+ for (const config of lambdaFunctionConfigs) {
22
+ const functionConfig = yield (0, exports.getUninstrumentedFunctionConfig)(lambdaClient, cloudWatchLogsClient, config, forwarderARN);
23
+ configs.push(functionConfig);
24
+ }
25
+ return configs;
26
+ });
27
+ exports.getUninstrumentedFunctionConfigs = getUninstrumentedFunctionConfigs;
28
+ const getUninstrumentedFunctionConfig = (lambdaClient, cloudWatchLogsClient, config, forwarderARN) => __awaiter(void 0, void 0, void 0, function* () {
29
+ const functionARN = config.FunctionArn;
30
+ const runtime = config.Runtime;
31
+ if (!(0, commons_1.isSupportedRuntime)(runtime)) {
32
+ throw Error(`Can't un-instrument ${functionARN}, runtime ${runtime} not supported`);
33
+ }
34
+ const updateRequest = (0, exports.calculateUpdateRequest)(config, runtime);
35
+ let logGroupConfiguration;
36
+ if (forwarderARN) {
37
+ const logGroupName = `/aws/lambda/${config.FunctionName}`;
38
+ logGroupConfiguration = yield (0, loggroup_1.calculateLogGroupRemoveRequest)(cloudWatchLogsClient, logGroupName, forwarderARN);
39
+ }
40
+ const tagConfiguration = yield (0, tags_1.calculateTagRemoveRequest)(lambdaClient, functionARN);
41
+ return {
42
+ functionARN,
43
+ lambdaConfig: config,
44
+ logGroupConfiguration,
45
+ tagConfiguration,
46
+ updateFunctionConfigurationCommandInput: updateRequest,
47
+ };
48
+ });
49
+ exports.getUninstrumentedFunctionConfig = getUninstrumentedFunctionConfig;
50
+ const getUninstrumentedFunctionConfigsFromRegEx = (lambdaClient, cloudWatchLogsClient, pattern, forwarderArn) => __awaiter(void 0, void 0, void 0, function* () {
51
+ const matchedFunctions = yield (0, commons_1.getLambdaFunctionConfigsFromRegex)(lambdaClient, pattern);
52
+ const functionsToUpdate = [];
53
+ for (const config of matchedFunctions) {
54
+ const functionConfig = yield (0, exports.getUninstrumentedFunctionConfig)(lambdaClient, cloudWatchLogsClient, config, forwarderArn);
55
+ functionsToUpdate.push(functionConfig);
56
+ }
57
+ return functionsToUpdate;
58
+ });
59
+ exports.getUninstrumentedFunctionConfigsFromRegEx = getUninstrumentedFunctionConfigsFromRegEx;
60
+ const calculateUpdateRequest = (config, runtime) => {
61
+ var _a, _b;
62
+ const oldEnvVars = Object.assign({}, (_a = config.Environment) === null || _a === void 0 ? void 0 : _a.Variables);
63
+ const functionARN = config.FunctionArn;
64
+ if (functionARN === undefined) {
65
+ return undefined;
66
+ }
67
+ const updateRequest = {
68
+ FunctionName: functionARN,
69
+ };
70
+ let needsUpdate = false;
71
+ const runtimeType = constants_2.RUNTIME_LOOKUP[runtime];
72
+ // Remove Handler for Python
73
+ if (runtimeType === constants_2.RuntimeType.PYTHON) {
74
+ const expectedHandler = constants_2.PYTHON_HANDLER_LOCATION;
75
+ if (config.Handler === expectedHandler) {
76
+ needsUpdate = true;
77
+ updateRequest.Handler = oldEnvVars[constants_2.LAMBDA_HANDLER_ENV_VAR];
78
+ delete oldEnvVars[constants_2.LAMBDA_HANDLER_ENV_VAR];
79
+ }
80
+ }
81
+ // Remove Handler for Node
82
+ if (runtimeType === constants_2.RuntimeType.NODE) {
83
+ const expectedHandler = constants_2.NODE_HANDLER_LOCATION;
84
+ if (config.Handler === expectedHandler) {
85
+ needsUpdate = true;
86
+ updateRequest.Handler = oldEnvVars[constants_2.LAMBDA_HANDLER_ENV_VAR];
87
+ delete oldEnvVars[constants_2.LAMBDA_HANDLER_ENV_VAR];
88
+ }
89
+ }
90
+ // Remove AWS_LAMBDA_EXEC_WRAPPER for .NET and Java or if ASM is enabled
91
+ if (runtimeType === constants_2.RuntimeType.DOTNET ||
92
+ runtimeType === constants_2.RuntimeType.JAVA ||
93
+ oldEnvVars[constants_2.APPSEC_ENABLED_ENV_VAR] === 'true') {
94
+ if (oldEnvVars[constants_2.AWS_LAMBDA_EXEC_WRAPPER_VAR] === constants_2.AWS_LAMBDA_EXEC_WRAPPER) {
95
+ needsUpdate = true;
96
+ delete oldEnvVars[constants_2.AWS_LAMBDA_EXEC_WRAPPER_VAR];
97
+ }
98
+ }
99
+ /**
100
+ * Array used to remove environment vars used in
101
+ * the Lambda environment.
102
+ */
103
+ const environmentVarsArray = [
104
+ constants_1.API_KEY_ENV_VAR,
105
+ constants_2.API_KEY_SECRET_ARN_ENV_VAR,
106
+ constants_2.KMS_API_KEY_ENV_VAR,
107
+ constants_1.SITE_ENV_VAR,
108
+ constants_2.APM_FLUSH_DEADLINE_MILLISECONDS_ENV_VAR,
109
+ constants_2.APPSEC_ENABLED_ENV_VAR,
110
+ constants_2.CAPTURE_LAMBDA_PAYLOAD_ENV_VAR,
111
+ constants_1.ENVIRONMENT_ENV_VAR,
112
+ constants_1.DD_TAGS_ENV_VAR,
113
+ constants_2.FLUSH_TO_LOG_ENV_VAR,
114
+ constants_2.MERGE_XRAY_TRACES_ENV_VAR,
115
+ constants_1.DD_LOG_LEVEL_ENV_VAR,
116
+ constants_2.LOG_ENABLED_ENV_VAR,
117
+ constants_1.SERVICE_ENV_VAR,
118
+ constants_1.DD_TRACE_ENABLED_ENV_VAR,
119
+ constants_1.VERSION_ENV_VAR,
120
+ constants_2.ENABLE_PROFILING_ENV_VAR,
121
+ constants_2.PROFILER_ENV_VAR,
122
+ constants_2.PROFILER_PATH_ENV_VAR,
123
+ constants_2.DOTNET_TRACER_HOME_ENV_VAR,
124
+ constants_1.DD_LLMOBS_ENABLED_ENV_VAR,
125
+ constants_1.DD_LLMOBS_ML_APP_ENV_VAR,
126
+ constants_1.DD_LLMOBS_AGENTLESS_ENABLED_ENV_VAR,
127
+ constants_2.DD_LAMBDA_FIPS_MODE_ENV_VAR,
128
+ ];
129
+ // Remove Environment Variables
130
+ for (const environmentVar of environmentVarsArray) {
131
+ if (oldEnvVars[environmentVar]) {
132
+ needsUpdate = true;
133
+ delete oldEnvVars[environmentVar];
134
+ }
135
+ }
136
+ updateRequest.Environment = {
137
+ Variables: oldEnvVars,
138
+ };
139
+ // Remove Layers
140
+ let needsLayerRemoval = false;
141
+ const lambdaLibraryLayerName = constants_2.LAYER_LOOKUP[runtime];
142
+ const originalLayerARNs = (0, commons_1.getLayers)(config);
143
+ const layerARNs = ((_b = config.Layers) !== null && _b !== void 0 ? _b : [])
144
+ .filter((layer) => { var _a, _b; return !((_a = layer.Arn) === null || _a === void 0 ? void 0 : _a.includes(lambdaLibraryLayerName)) && !((_b = layer.Arn) === null || _b === void 0 ? void 0 : _b.includes(constants_2.DD_LAMBDA_EXTENSION_LAYER_NAME)); })
145
+ .map((layer) => { var _a; return (_a = layer.Arn) !== null && _a !== void 0 ? _a : ''; });
146
+ if (originalLayerARNs.sort().join(',') !== layerARNs.sort().join(',')) {
147
+ needsLayerRemoval = true;
148
+ }
149
+ if (needsLayerRemoval) {
150
+ needsUpdate = true;
151
+ updateRequest.Layers = layerARNs;
152
+ }
153
+ return needsUpdate ? updateRequest : undefined;
154
+ };
155
+ exports.calculateUpdateRequest = calculateUpdateRequest;
156
+ //# sourceMappingURL=uninstrument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstrument.js","sourceRoot":"","sources":["../../src/functions/uninstrument.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { RuntimeType } from '../constants';
2
+ export declare const isExtensionCompatibleWithUniversalInstrumentation: (runtimeType: RuntimeType, extensionVersion?: number) => boolean;
3
+ export declare const isTracerCompatibleWithExtension: (runtimeType: RuntimeType, traceVersion?: number) => boolean;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isTracerCompatibleWithExtension = exports.isExtensionCompatibleWithUniversalInstrumentation = void 0;
4
+ const constants_1 = require("../constants");
5
+ const UNIVERSAL_INSTRUMENTATION_JAVA_EXTENSION_VERSION = 24;
6
+ const UNIVERSAL_INSTRUMENTATION_JAVA_TRACER_VERSION = 5;
7
+ const UNIVERSAL_INSTRUMENTATION_DOTNET_EXTENSION_VERSION = 24;
8
+ const UNIVERSAL_INSTRUMENTATION_DOTNET_TRACER_VERSION = 4;
9
+ const isExtensionCompatibleWithUniversalInstrumentation = (runtimeType, extensionVersion) => {
10
+ if (extensionVersion === undefined) {
11
+ return false;
12
+ }
13
+ switch (runtimeType) {
14
+ case constants_1.RuntimeType.JAVA:
15
+ return extensionVersion >= UNIVERSAL_INSTRUMENTATION_JAVA_EXTENSION_VERSION;
16
+ case constants_1.RuntimeType.DOTNET:
17
+ return extensionVersion >= UNIVERSAL_INSTRUMENTATION_DOTNET_EXTENSION_VERSION;
18
+ default:
19
+ return true;
20
+ }
21
+ };
22
+ exports.isExtensionCompatibleWithUniversalInstrumentation = isExtensionCompatibleWithUniversalInstrumentation;
23
+ const isTracerCompatibleWithExtension = (runtimeType, traceVersion) => {
24
+ // More complex compatbility rules can be configured for each extension version if necessary
25
+ if (traceVersion === undefined) {
26
+ return true;
27
+ }
28
+ switch (runtimeType) {
29
+ case constants_1.RuntimeType.JAVA:
30
+ return traceVersion >= UNIVERSAL_INSTRUMENTATION_JAVA_TRACER_VERSION;
31
+ case constants_1.RuntimeType.DOTNET:
32
+ return traceVersion >= UNIVERSAL_INSTRUMENTATION_DOTNET_TRACER_VERSION;
33
+ default:
34
+ return true;
35
+ }
36
+ };
37
+ exports.isTracerCompatibleWithExtension = isTracerCompatibleWithExtension;
38
+ //# sourceMappingURL=versionChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionChecker.js","sourceRoot":"","sources":["../../src/functions/versionChecker.ts"],"names":[],"mappings":";;;AAAA,4CAAwC;AAExC,MAAM,gDAAgD,GAAG,EAAE,CAAA;AAC3D,MAAM,6CAA6C,GAAG,CAAC,CAAA;AACvD,MAAM,kDAAkD,GAAG,EAAE,CAAA;AAC7D,MAAM,+CAA+C,GAAG,CAAC,CAAA;AAElD,MAAM,iDAAiD,GAAG,CAC/D,WAAwB,EACxB,gBAAyB,EAChB,EAAE;IACX,IAAI,gBAAgB,KAAK,SAAS,EAAE;QAClC,OAAO,KAAK,CAAA;KACb;IACD,QAAQ,WAAW,EAAE;QACnB,KAAK,uBAAW,CAAC,IAAI;YACnB,OAAO,gBAAgB,IAAI,gDAAgD,CAAA;QAC7E,KAAK,uBAAW,CAAC,MAAM;YACrB,OAAO,gBAAgB,IAAI,kDAAkD,CAAA;QAC/E;YACE,OAAO,IAAI,CAAA;KACd;AACH,CAAC,CAAA;AAfY,QAAA,iDAAiD,qDAe7D;AAEM,MAAM,+BAA+B,GAAG,CAAC,WAAwB,EAAE,YAAqB,EAAW,EAAE;IAC1G,4FAA4F;IAC5F,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,OAAO,IAAI,CAAA;KACZ;IACD,QAAQ,WAAW,EAAE;QACnB,KAAK,uBAAW,CAAC,IAAI;YACnB,OAAO,YAAY,IAAI,6CAA6C,CAAA;QACtE,KAAK,uBAAW,CAAC,MAAM;YACrB,OAAO,YAAY,IAAI,+CAA+C,CAAA;QACxE;YACE,OAAO,IAAI,CAAA;KACd;AACH,CAAC,CAAA;AAbY,QAAA,+BAA+B,mCAa3C"}
@@ -0,0 +1,91 @@
1
+ import { CloudWatchLogsClient, CreateLogGroupCommandInput, DeleteSubscriptionFilterCommandInput, PutSubscriptionFilterCommandInput } from '@aws-sdk/client-cloudwatch-logs';
2
+ import { FunctionConfiguration as LFunctionConfiguration, LambdaClient, TagResourceCommandInput, UpdateFunctionConfigurationCommandInput, UntagResourceCommandInput } from '@aws-sdk/client-lambda';
3
+ /**
4
+ * Configuration options provided by the user through
5
+ * the CLI in order to instrument properly.
6
+ */
7
+ export interface LambdaConfigOptions {
8
+ apmFlushDeadline?: string;
9
+ appsecEnabled?: boolean;
10
+ captureLambdaPayload?: string;
11
+ environment?: string;
12
+ extensionVersion?: string;
13
+ extraTags?: string;
14
+ flushMetricsToLogs?: string;
15
+ forwarder?: string;
16
+ functions: string[];
17
+ interactive?: boolean;
18
+ layerAWSAccount?: string;
19
+ layerVersion?: string;
20
+ logging?: string;
21
+ logLevel?: string;
22
+ mergeXrayTraces?: string;
23
+ profile?: string;
24
+ region?: string;
25
+ service?: string;
26
+ tracing?: string;
27
+ version?: string;
28
+ llmobs?: string;
29
+ }
30
+ /**
31
+ * Configuration comprised by a Lambda Function ARN,
32
+ * its configuration from AWS, its library layer ARN,
33
+ * the changes in logs, tags, and the update request.
34
+ */
35
+ export interface FunctionConfiguration {
36
+ functionARN: string;
37
+ lambdaConfig: LFunctionConfiguration;
38
+ logGroupConfiguration?: LogGroupConfiguration;
39
+ tagConfiguration?: TagConfiguration;
40
+ updateFunctionConfigurationCommandInput?: UpdateFunctionConfigurationCommandInput;
41
+ }
42
+ export interface InstrumentedConfigurationGroup {
43
+ cloudWatchLogsClient: CloudWatchLogsClient;
44
+ configs: FunctionConfiguration[];
45
+ lambdaClient: LambdaClient;
46
+ region: string;
47
+ }
48
+ /**
49
+ * Basic settings to use in every specified
50
+ * lambda to be instrumented.
51
+ */
52
+ export interface InstrumentationSettings extends InstrumentationTags {
53
+ apmFlushDeadline?: string;
54
+ appsecEnabled?: boolean;
55
+ captureLambdaPayload?: boolean;
56
+ extensionVersion?: number;
57
+ lambdaFips?: boolean;
58
+ flushMetricsToLogs: boolean;
59
+ forwarderARN?: string;
60
+ interactive?: boolean;
61
+ layerAWSAccount?: string;
62
+ layerVersion?: number;
63
+ loggingEnabled?: boolean;
64
+ logLevel?: string;
65
+ mergeXrayTraces: boolean;
66
+ tracingEnabled: boolean;
67
+ llmobsEnabled?: boolean;
68
+ llmobsMlApp?: string;
69
+ }
70
+ /**
71
+ * Interface for Unified Service Tagging.
72
+ *
73
+ * See more at: https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging/?tab=kubernetes#overview
74
+ */
75
+ interface InstrumentationTags {
76
+ environment?: string;
77
+ extraTags?: string;
78
+ service?: string;
79
+ version?: string;
80
+ }
81
+ export interface LogGroupConfiguration {
82
+ createLogGroupCommandInput?: CreateLogGroupCommandInput;
83
+ deleteSubscriptionFilterCommandInput?: DeleteSubscriptionFilterCommandInput;
84
+ logGroupName: string;
85
+ putSubscriptionFilterCommandInput?: PutSubscriptionFilterCommandInput;
86
+ }
87
+ export interface TagConfiguration {
88
+ tagResourceCommandInput?: TagResourceCommandInput;
89
+ untagResourceCommandInput?: UntagResourceCommandInput;
90
+ }
91
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { CloudWatchLogsClient, CreateLogGroupCommandInput, DeleteSubscriptionFilterCommandInput, PutSubscriptionFilterCommandInput, SubscriptionFilter } from '@aws-sdk/client-cloudwatch-logs';
2
+ import { LogGroupConfiguration } from './interfaces';
3
+ export declare enum SubscriptionState {
4
+ Empty = 0,
5
+ CorrectDestination = 1,
6
+ WrongDestinationOwned = 2,
7
+ WrongDestinationUnowned = 3
8
+ }
9
+ export declare const applyLogGroupConfig: (client: CloudWatchLogsClient, config: LogGroupConfiguration) => Promise<void>;
10
+ export declare const createLogGroup: (client: CloudWatchLogsClient, input: CreateLogGroupCommandInput) => Promise<void>;
11
+ export declare const deleteSubscriptionFilter: (client: CloudWatchLogsClient, input: DeleteSubscriptionFilterCommandInput) => Promise<void>;
12
+ export declare const putSubscriptionFilter: (client: CloudWatchLogsClient, input: PutSubscriptionFilterCommandInput) => Promise<void>;
13
+ export declare const calculateLogGroupUpdateRequest: (client: CloudWatchLogsClient, logGroupName: string, forwarderARN: string) => Promise<LogGroupConfiguration | undefined>;
14
+ export declare const calculateLogGroupRemoveRequest: (client: CloudWatchLogsClient, logGroupName: string, forwarderARN: string) => Promise<LogGroupConfiguration>;
15
+ export declare const hasLogGroup: (client: CloudWatchLogsClient, logGroupName: string) => Promise<boolean>;
16
+ export declare const getSubscriptionFilterState: (client: CloudWatchLogsClient, logGroupName: string, forwarderARN: string) => Promise<SubscriptionState>;
17
+ export declare const getSubscriptionFilters: (client: CloudWatchLogsClient, logGroupName: string) => Promise<SubscriptionFilter[] | undefined>;