ec2-instance-running-scheduler 0.2.7 → 0.3.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/.jsii +357 -47
- package/API.md +402 -27
- package/README.md +55 -17
- package/assets/funcs/running-scheduler.lambda/index.js +333 -212
- package/assets/funcs/running-scheduler.lambda/index.js.map +4 -4
- package/lib/constructs/ec2-instance-running-scheduler.d.ts +31 -14
- package/lib/constructs/ec2-instance-running-scheduler.js +26 -13
- package/lib/constructs/running-scheduler-failure-detection.d.ts +87 -0
- package/lib/constructs/running-scheduler-failure-detection.js +185 -0
- package/lib/funcs/running-scheduler-predicates.d.ts +24 -24
- package/lib/funcs/running-scheduler-predicates.js +18 -18
- package/lib/funcs/running-scheduler-wait-config.d.ts +17 -0
- package/lib/funcs/running-scheduler-wait-config.js +21 -0
- package/lib/funcs/running-scheduler-wait-env.d.ts +9 -0
- package/lib/funcs/running-scheduler-wait-env.js +54 -0
- package/lib/funcs/running-scheduler.lambda.d.ts +11 -4
- package/lib/funcs/running-scheduler.lambda.js +88 -50
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -2
- package/lib/stacks/ec2-instance-running-schedule-stack.d.ts +9 -3
- package/lib/stacks/ec2-instance-running-schedule-stack.js +8 -3
- package/package.json +5 -6
- package/lib/funcs/running-scheduler-polling-config.d.ts +0 -17
- package/lib/funcs/running-scheduler-polling-config.js +0 -21
- package/lib/funcs/running-scheduler-polling-env.d.ts +0 -8
- package/lib/funcs/running-scheduler-polling-env.js +0 -53
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseResourcePollingLimitsFromEnv = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Lambda-only environment parsing for per-instance polling limits.
|
|
6
|
-
*
|
|
7
|
-
* Bundled into the running scheduler function; not imported from CDK constructs.
|
|
8
|
-
*/
|
|
9
|
-
const safe_env_getter_1 = require("safe-env-getter");
|
|
10
|
-
const running_scheduler_polling_config_1 = require("./running-scheduler-polling-config");
|
|
11
|
-
const running_scheduler_predicates_1 = require("./running-scheduler-predicates");
|
|
12
|
-
/**
|
|
13
|
-
* Ensures a parsed env integer is strictly positive.
|
|
14
|
-
*
|
|
15
|
-
* `SafeEnvType.Number` accepts any decimal integer (including zero and negatives);
|
|
16
|
-
* polling limits require values greater than zero.
|
|
17
|
-
*
|
|
18
|
-
* @param key - Environment variable name used in error messages.
|
|
19
|
-
* @param value - Parsed integer from {@link SafeEnvGetter.getEnvs}.
|
|
20
|
-
* @returns `value` when it is greater than zero.
|
|
21
|
-
* @throws {Error} When `value` is zero or negative.
|
|
22
|
-
*/
|
|
23
|
-
const assertPositiveEnvInt = (key, value) => {
|
|
24
|
-
if (value <= 0) {
|
|
25
|
-
const raw = process.env[key];
|
|
26
|
-
throw new Error(`Invalid ${key}: must be a positive integer (got "${raw ?? ''}")`);
|
|
27
|
-
}
|
|
28
|
-
return value;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Reads per-instance polling limits from Lambda environment variables set by the CDK construct.
|
|
32
|
-
*
|
|
33
|
-
* @returns Parsed limits, using {@link DEFAULT_RESOURCE_POLLING_LIMITS} when variables are unset.
|
|
34
|
-
* @throws {Error} When a set variable is not a positive integer.
|
|
35
|
-
*/
|
|
36
|
-
const parseResourcePollingLimitsFromEnv = () => {
|
|
37
|
-
const parsed = safe_env_getter_1.SafeEnvGetter.getEnvs({
|
|
38
|
-
[running_scheduler_polling_config_1.PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV]: [
|
|
39
|
-
safe_env_getter_1.SafeEnvType.Number,
|
|
40
|
-
{ default: running_scheduler_predicates_1.DEFAULT_RESOURCE_POLLING_LIMITS.maxLoopCount },
|
|
41
|
-
],
|
|
42
|
-
[running_scheduler_polling_config_1.PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV]: [
|
|
43
|
-
safe_env_getter_1.SafeEnvType.Number,
|
|
44
|
-
{ default: running_scheduler_predicates_1.DEFAULT_RESOURCE_POLLING_LIMITS.maxElapsedSeconds },
|
|
45
|
-
],
|
|
46
|
-
});
|
|
47
|
-
return {
|
|
48
|
-
maxLoopCount: assertPositiveEnvInt(running_scheduler_polling_config_1.PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV, parsed[running_scheduler_polling_config_1.PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV]),
|
|
49
|
-
maxElapsedSeconds: assertPositiveEnvInt(running_scheduler_polling_config_1.PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV, parsed[running_scheduler_polling_config_1.PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV]),
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
exports.parseResourcePollingLimitsFromEnv = parseResourcePollingLimitsFromEnv;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmluZy1zY2hlZHVsZXItcG9sbGluZy1lbnYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3MvcnVubmluZy1zY2hlZHVsZXItcG9sbGluZy1lbnYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7R0FJRztBQUNILHFEQUE2RDtBQUM3RCx5RkFHNEM7QUFDNUMsaUZBR3dDO0FBRXhDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBVSxFQUFFO0lBQ2xFLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsR0FBRyxzQ0FBc0MsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSSxNQUFNLGlDQUFpQyxHQUFHLEdBQTBCLEVBQUU7SUFDM0UsTUFBTSxNQUFNLEdBQUcsK0JBQWEsQ0FBQyxPQUFPLENBQUM7UUFDbkMsQ0FBQyxzRUFBbUMsQ0FBQyxFQUFFO1lBQ3JDLDZCQUFXLENBQUMsTUFBTTtZQUNsQixFQUFFLE9BQU8sRUFBRSw4REFBK0IsQ0FBQyxZQUFZLEVBQUU7U0FDMUQ7UUFDRCxDQUFDLDJFQUF3QyxDQUFDLEVBQUU7WUFDMUMsNkJBQVcsQ0FBQyxNQUFNO1lBQ2xCLEVBQUUsT0FBTyxFQUFFLDhEQUErQixDQUFDLGlCQUFpQixFQUFFO1NBQy9EO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLFlBQVksRUFBRSxvQkFBb0IsQ0FDaEMsc0VBQW1DLEVBQ25DLE1BQU0sQ0FBQyxzRUFBbUMsQ0FBQyxDQUM1QztRQUNELGlCQUFpQixFQUFFLG9CQUFvQixDQUNyQywyRUFBd0MsRUFDeEMsTUFBTSxDQUFDLDJFQUF3QyxDQUFDLENBQ2pEO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXRCVyxRQUFBLGlDQUFpQyxxQ0FzQjVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMYW1iZGEtb25seSBlbnZpcm9ubWVudCBwYXJzaW5nIGZvciBwZXItaW5zdGFuY2UgcG9sbGluZyBsaW1pdHMuXG4gKlxuICogQnVuZGxlZCBpbnRvIHRoZSBydW5uaW5nIHNjaGVkdWxlciBmdW5jdGlvbjsgbm90IGltcG9ydGVkIGZyb20gQ0RLIGNvbnN0cnVjdHMuXG4gKi9cbmltcG9ydCB7IFNhZmVFbnZHZXR0ZXIsIFNhZmVFbnZUeXBlIH0gZnJvbSAnc2FmZS1lbnYtZ2V0dGVyJztcbmltcG9ydCB7XG4gIFBST0NFU1NfUkVTT1VSQ0VfTUFYX0VMQVBTRURfU0VDT05EU19FTlYsXG4gIFBST0NFU1NfUkVTT1VSQ0VfTUFYX0xPT1BfQ09VTlRfRU5WLFxufSBmcm9tICcuL3J1bm5pbmctc2NoZWR1bGVyLXBvbGxpbmctY29uZmlnJztcbmltcG9ydCB7XG4gIERFRkFVTFRfUkVTT1VSQ0VfUE9MTElOR19MSU1JVFMsXG4gIHR5cGUgUmVzb3VyY2VQb2xsaW5nTGltaXRzLFxufSBmcm9tICcuL3J1bm5pbmctc2NoZWR1bGVyLXByZWRpY2F0ZXMnO1xuXG4vKipcbiAqIEVuc3VyZXMgYSBwYXJzZWQgZW52IGludGVnZXIgaXMgc3RyaWN0bHkgcG9zaXRpdmUuXG4gKlxuICogYFNhZmVFbnZUeXBlLk51bWJlcmAgYWNjZXB0cyBhbnkgZGVjaW1hbCBpbnRlZ2VyIChpbmNsdWRpbmcgemVybyBhbmQgbmVnYXRpdmVzKTtcbiAqIHBvbGxpbmcgbGltaXRzIHJlcXVpcmUgdmFsdWVzIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gdmFsdWUgLSBQYXJzZWQgaW50ZWdlciBmcm9tIHtAbGluayBTYWZlRW52R2V0dGVyLmdldEVudnN9LlxuICogQHJldHVybnMgYHZhbHVlYCB3aGVuIGl0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICogQHRocm93cyB7RXJyb3J9IFdoZW4gYHZhbHVlYCBpcyB6ZXJvIG9yIG5lZ2F0aXZlLlxuICovXG5jb25zdCBhc3NlcnRQb3NpdGl2ZUVudkludCA9IChrZXk6IHN0cmluZywgdmFsdWU6IG51bWJlcik6IG51bWJlciA9PiB7XG4gIGlmICh2YWx1ZSA8PSAwKSB7XG4gICAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnZba2V5XTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtrZXl9OiBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciAoZ290IFwiJHtyYXcgPz8gJyd9XCIpYCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBSZWFkcyBwZXItaW5zdGFuY2UgcG9sbGluZyBsaW1pdHMgZnJvbSBMYW1iZGEgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCBieSB0aGUgQ0RLIGNvbnN0cnVjdC5cbiAqXG4gKiBAcmV0dXJucyBQYXJzZWQgbGltaXRzLCB1c2luZyB7QGxpbmsgREVGQVVMVF9SRVNPVVJDRV9QT0xMSU5HX0xJTUlUU30gd2hlbiB2YXJpYWJsZXMgYXJlIHVuc2V0LlxuICogQHRocm93cyB7RXJyb3J9IFdoZW4gYSBzZXQgdmFyaWFibGUgaXMgbm90IGEgcG9zaXRpdmUgaW50ZWdlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlUmVzb3VyY2VQb2xsaW5nTGltaXRzRnJvbUVudiA9ICgpOiBSZXNvdXJjZVBvbGxpbmdMaW1pdHMgPT4ge1xuICBjb25zdCBwYXJzZWQgPSBTYWZlRW52R2V0dGVyLmdldEVudnMoe1xuICAgIFtQUk9DRVNTX1JFU09VUkNFX01BWF9MT09QX0NPVU5UX0VOVl06IFtcbiAgICAgIFNhZmVFbnZUeXBlLk51bWJlcixcbiAgICAgIHsgZGVmYXVsdDogREVGQVVMVF9SRVNPVVJDRV9QT0xMSU5HX0xJTUlUUy5tYXhMb29wQ291bnQgfSxcbiAgICBdLFxuICAgIFtQUk9DRVNTX1JFU09VUkNFX01BWF9FTEFQU0VEX1NFQ09ORFNfRU5WXTogW1xuICAgICAgU2FmZUVudlR5cGUuTnVtYmVyLFxuICAgICAgeyBkZWZhdWx0OiBERUZBVUxUX1JFU09VUkNFX1BPTExJTkdfTElNSVRTLm1heEVsYXBzZWRTZWNvbmRzIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXhMb29wQ291bnQ6IGFzc2VydFBvc2l0aXZlRW52SW50KFxuICAgICAgUFJPQ0VTU19SRVNPVVJDRV9NQVhfTE9PUF9DT1VOVF9FTlYsXG4gICAgICBwYXJzZWRbUFJPQ0VTU19SRVNPVVJDRV9NQVhfTE9PUF9DT1VOVF9FTlZdLFxuICAgICksXG4gICAgbWF4RWxhcHNlZFNlY29uZHM6IGFzc2VydFBvc2l0aXZlRW52SW50KFxuICAgICAgUFJPQ0VTU19SRVNPVVJDRV9NQVhfRUxBUFNFRF9TRUNPTkRTX0VOVixcbiAgICAgIHBhcnNlZFtQUk9DRVNTX1JFU09VUkNFX01BWF9FTEFQU0VEX1NFQ09ORFNfRU5WXSxcbiAgICApLFxuICB9O1xufTtcbiJdfQ==
|