@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.
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/flare.d.ts +82 -0
- package/dist/commands/flare.js +636 -0
- package/dist/commands/flare.js.map +1 -0
- package/dist/commands/instrument.d.ts +10 -0
- package/dist/commands/instrument.js +405 -0
- package/dist/commands/instrument.js.map +1 -0
- package/dist/commands/uninstrument.d.ts +8 -0
- package/dist/commands/uninstrument.js +264 -0
- package/dist/commands/uninstrument.js.map +1 -0
- package/dist/constants.d.ts +87 -0
- package/dist/constants.js +159 -0
- package/dist/constants.js.map +1 -0
- package/dist/functions/commons.d.ts +131 -0
- package/dist/functions/commons.js +473 -0
- package/dist/functions/commons.js.map +1 -0
- package/dist/functions/instrument.d.ts +7 -0
- package/dist/functions/instrument.js +271 -0
- package/dist/functions/instrument.js.map +1 -0
- package/dist/functions/uninstrument.d.ts +7 -0
- package/dist/functions/uninstrument.js +156 -0
- package/dist/functions/uninstrument.js.map +1 -0
- package/dist/functions/versionChecker.d.ts +3 -0
- package/dist/functions/versionChecker.js +38 -0
- package/dist/functions/versionChecker.js.map +1 -0
- package/dist/interfaces.d.ts +91 -0
- package/dist/interfaces.js +3 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/loggroup.d.ts +17 -0
- package/dist/loggroup.js +140 -0
- package/dist/loggroup.js.map +1 -0
- package/dist/prompt.d.ts +12 -0
- package/dist/prompt.js +265 -0
- package/dist/prompt.js.map +1 -0
- package/dist/renderers/__mocks__/instrument-uninstrument-renderer.d.ts +2 -0
- package/dist/renderers/__mocks__/instrument-uninstrument-renderer.js +11 -0
- package/dist/renderers/__mocks__/instrument-uninstrument-renderer.js.map +1 -0
- package/dist/renderers/common-renderer.d.ts +16 -0
- package/dist/renderers/common-renderer.js +23 -0
- package/dist/renderers/common-renderer.js.map +1 -0
- package/dist/renderers/instrument-uninstrument-renderer.d.ts +397 -0
- package/dist/renderers/instrument-uninstrument-renderer.js +506 -0
- package/dist/renderers/instrument-uninstrument-renderer.js.map +1 -0
- package/dist/tags.d.ts +8 -0
- package/dist/tags.js +74 -0
- package/dist/tags.js.map +1 -0
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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>;
|