@ixor/aws-cdk-ixor-lambda 0.2.0 → 1.0.0-rc-3
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/README.md +13 -1
- package/bitbucket-pipelines.yml +34 -0
- package/cdk.json +1 -5
- package/lib/aws-cdk-ixor-lambda.d.ts +13 -13
- package/lib/aws-cdk-ixor-lambda.js +17 -16
- package/lib/test-aws-cdk-ixor-lambda-stack.d.ts +7 -0
- package/lib/test-aws-cdk-ixor-lambda-stack.js +42 -0
- package/package.json +6 -12
- package/test/test-aws-cdk-ixor-lambda.d.ts +2 -0
- package/test/test-aws-cdk-ixor-lambda.js +20 -0
- package/test_aws_cdk_ixor_lambda_handler/test_aws_cdk_ixor_lambda_keepwarm.py +41 -0
- package/test_aws_cdk_ixor_lambda_handler/test_aws_cdk_ixor_lambda_warmed_lambda.py +24 -0
- package/.idea/aws-cdk-ixor-lambda.iml +0 -12
- package/.idea/aws.xml +0 -11
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/.idea/workspace.xml +0 -103
package/README.md
CHANGED
|
@@ -144,4 +144,16 @@ the prerequisite section) will invoke the function with a dummy event that looks
|
|
|
144
144
|
}
|
|
145
145
|
```
|
|
146
146
|
|
|
147
|
-
The Lambda function should check for the dummy event and _sleep_ the requested amount of time (in seconds).
|
|
147
|
+
The Lambda function should check for the dummy event and _sleep_ the requested amount of time (in seconds).
|
|
148
|
+
|
|
149
|
+
### Testing
|
|
150
|
+
|
|
151
|
+
A test stack is added in `lib\test-aws-cdk-ixor-lambda-stack`. Created in this stack:
|
|
152
|
+
* `keepWarmLambda`: this lambda will send out a dummy event every 10 minutes.
|
|
153
|
+
* `lambdaToKeepWarm`: this is a lambda created through the `IxorFunction` and needs to be kept warm
|
|
154
|
+
* The appropriate permissions for the `keepWarmLambda` to invoke the `lambdaToKeepWarm`.
|
|
155
|
+
|
|
156
|
+
The code for both lambdas is situated in the `test_aws_cdk_ixor_lambda_handler` directory.
|
|
157
|
+
|
|
158
|
+
To test this stack, deploy the `test/test-aws-cdk-ixor-lambda` app to sandbox. Every 10 minutes, the keepWarm
|
|
159
|
+
lambda will trigger the lambdaToKeepWarm with a dummy event, both log this in CloudWatch.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
image: node:14.16.0
|
|
2
|
+
|
|
3
|
+
pipelines:
|
|
4
|
+
branches:
|
|
5
|
+
'{feature/**,bugfix/**,hotfix/**}':
|
|
6
|
+
- step:
|
|
7
|
+
name: "Release patch version to npm"
|
|
8
|
+
script:
|
|
9
|
+
- git clone -b ${BB_AWS_UTILS_VERSION:-master} https://github.com/rik2803/bb-aws-utils.git /bb-aws-utils
|
|
10
|
+
- LIB_DIR=/bb-aws-utils/lib source /bb-aws-utils/lib/load.bash
|
|
11
|
+
- export NPM_TOKEN="$(aws_get_ssm_parameter_by_name NPM_TOKEN)"
|
|
12
|
+
- install_jq
|
|
13
|
+
- npm ci
|
|
14
|
+
- npm run build
|
|
15
|
+
- npm version "$(jq -r '.version' package.json)-rc-${BITBUCKET_BUILD_NUMBER}" -m "[skip ci] Upgrade to %s - $(git log -1 --pretty=%B | head -1)"
|
|
16
|
+
- pipe: atlassian/npm-publish:0.2.0
|
|
17
|
+
variables:
|
|
18
|
+
NPM_TOKEN: $NPM_TOKEN
|
|
19
|
+
|
|
20
|
+
'master':
|
|
21
|
+
- step:
|
|
22
|
+
name: "Deploy IaC ixor.tcc2022-tst"
|
|
23
|
+
script:
|
|
24
|
+
- git clone -b ${BB_AWS_UTILS_VERSION:-master} https://github.com/rik2803/bb-aws-utils.git /bb-aws-utils
|
|
25
|
+
- LIB_DIR=/bb-aws-utils/lib source /bb-aws-utils/lib/load.bash
|
|
26
|
+
- export NPM_TOKEN="$(aws_get_ssm_parameter_by_name NPM_TOKEN)"
|
|
27
|
+
- npm ci
|
|
28
|
+
- npm run build
|
|
29
|
+
- npm version minor -m "[skip ci] Upgrade to %s - $(git log -1 --pretty=%B | head -1)"
|
|
30
|
+
- git push
|
|
31
|
+
- git push --tags
|
|
32
|
+
- pipe: atlassian/npm-publish:0.2.0
|
|
33
|
+
variables:
|
|
34
|
+
NPM_TOKEN: $NPM_TOKEN
|
package/cdk.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
interface IxorLambdaFunctionProps extends
|
|
1
|
+
import { FunctionProps, IFunction, Function, DockerImageFunctionProps, DockerImageFunction } from 'aws-cdk-lib/aws-lambda';
|
|
2
|
+
import { Schedule } from 'aws-cdk-lib/aws-events';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
interface IxorLambdaFunctionProps extends FunctionProps {
|
|
5
5
|
keepWarm?: boolean;
|
|
6
|
-
keepWarmEventSchedule?:
|
|
7
|
-
keepWarmLambdaFunction?:
|
|
6
|
+
keepWarmEventSchedule?: Schedule;
|
|
7
|
+
keepWarmLambdaFunction?: IFunction;
|
|
8
8
|
keepWarmCount?: number;
|
|
9
9
|
}
|
|
10
|
-
interface IxorDockerImageFunctionProps extends
|
|
10
|
+
interface IxorDockerImageFunctionProps extends DockerImageFunctionProps {
|
|
11
11
|
keepWarm?: boolean;
|
|
12
|
-
keepWarmEventSchedule?:
|
|
13
|
-
keepWarmLambdaFunction?:
|
|
12
|
+
keepWarmEventSchedule?: Schedule;
|
|
13
|
+
keepWarmLambdaFunction?: IFunction;
|
|
14
14
|
keepWarmCount?: number;
|
|
15
15
|
}
|
|
16
|
-
export declare class
|
|
17
|
-
constructor(scope:
|
|
16
|
+
export declare class IxorFunction extends Function {
|
|
17
|
+
constructor(scope: Construct, id: string, props: IxorLambdaFunctionProps);
|
|
18
18
|
}
|
|
19
|
-
export declare class
|
|
20
|
-
constructor(scope:
|
|
19
|
+
export declare class IxorDockerImageFunction extends DockerImageFunction {
|
|
20
|
+
constructor(scope: Construct, id: string, props: IxorDockerImageFunctionProps);
|
|
21
21
|
}
|
|
22
22
|
export {};
|
|
@@ -1,52 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
3
|
+
exports.IxorDockerImageFunction = exports.IxorFunction = void 0;
|
|
4
|
+
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
5
|
+
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
6
|
+
const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
|
|
7
|
+
class IxorFunction extends aws_lambda_1.Function {
|
|
7
8
|
constructor(scope, id, props) {
|
|
8
9
|
var _a;
|
|
9
10
|
super(scope, id, props);
|
|
10
|
-
const keepWarmCount = (_a = props.keepWarmCount
|
|
11
|
+
const keepWarmCount = (_a = props.keepWarmCount) !== null && _a !== void 0 ? _a : 2;
|
|
11
12
|
const event = {
|
|
12
13
|
"count": keepWarmCount,
|
|
13
14
|
"lambdaArn": this.functionArn
|
|
14
15
|
};
|
|
15
16
|
if (props.keepWarm && props.keepWarmLambdaFunction) {
|
|
16
17
|
if (!props.keepWarmEventSchedule) {
|
|
17
|
-
props.keepWarmEventSchedule =
|
|
18
|
+
props.keepWarmEventSchedule = aws_events_1.Schedule.cron({
|
|
18
19
|
minute: '0/10',
|
|
19
20
|
hour: '7-19',
|
|
20
21
|
day: '*W'
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
|
-
let rule = new
|
|
24
|
-
rule.addTarget(new
|
|
24
|
+
let rule = new aws_events_1.Rule(scope, `keepWarm-${this.node.id}`, { schedule: props.keepWarmEventSchedule });
|
|
25
|
+
rule.addTarget(new aws_events_targets_1.LambdaFunction(props.keepWarmLambdaFunction, { event: aws_events_1.RuleTargetInput.fromObject(event) }));
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
|
-
exports.
|
|
29
|
-
class
|
|
29
|
+
exports.IxorFunction = IxorFunction;
|
|
30
|
+
class IxorDockerImageFunction extends aws_lambda_1.DockerImageFunction {
|
|
30
31
|
constructor(scope, id, props) {
|
|
31
32
|
var _a;
|
|
32
33
|
super(scope, id, props);
|
|
33
|
-
const keepWarmCount = (_a = props.keepWarmCount
|
|
34
|
+
const keepWarmCount = (_a = props.keepWarmCount) !== null && _a !== void 0 ? _a : 2;
|
|
34
35
|
const event = {
|
|
35
36
|
"count": keepWarmCount,
|
|
36
37
|
"lambdaArn": this.functionArn
|
|
37
38
|
};
|
|
38
39
|
if (props.keepWarm && props.keepWarmLambdaFunction) {
|
|
39
40
|
if (!props.keepWarmEventSchedule) {
|
|
40
|
-
props.keepWarmEventSchedule =
|
|
41
|
+
props.keepWarmEventSchedule = aws_events_1.Schedule.cron({
|
|
41
42
|
minute: '0/10',
|
|
42
43
|
hour: '7-19',
|
|
43
44
|
day: '*W'
|
|
44
45
|
});
|
|
45
46
|
}
|
|
46
|
-
let rule = new
|
|
47
|
-
rule.addTarget(new
|
|
47
|
+
let rule = new aws_events_1.Rule(scope, `keepWarm-${this.node.id}`, { schedule: props.keepWarmEventSchedule });
|
|
48
|
+
rule.addTarget(new aws_events_targets_1.LambdaFunction(props.keepWarmLambdaFunction, { event: aws_events_1.RuleTargetInput.fromObject(event) }));
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
exports.
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
exports.IxorDockerImageFunction = IxorDockerImageFunction;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNkay1peG9yLWxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1jZGstaXhvci1sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQXlIO0FBQ3pILHVEQUF1RTtBQUN2RSx1RUFBNkQ7QUFpQjdELE1BQWEsWUFBYSxTQUFRLHFCQUFRO0lBQ3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sYUFBYSxTQUFHLEtBQUssQ0FBQyxhQUFhLG1DQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRztZQUNWLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUNoQyxDQUFBO1FBRUQsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsRUFBRTtZQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFO2dCQUM5QixLQUFLLENBQUMscUJBQXFCLEdBQUcscUJBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ3hDLE1BQU0sRUFBRSxNQUFNO29CQUNkLElBQUksRUFBRSxNQUFNO29CQUNaLEdBQUcsRUFBRSxJQUFJO2lCQUNaLENBQUMsQ0FBQTthQUNMO1lBQ0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxpQkFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixFQUFDLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksbUNBQWMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsRUFBQyxLQUFLLEVBQUUsNEJBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUE7U0FDL0c7SUFDTCxDQUFDO0NBQ0o7QUF0QkQsb0NBc0JDO0FBRUQsTUFBYSx1QkFBd0IsU0FBUSxnQ0FBbUI7SUFDNUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQzs7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsTUFBTSxhQUFhLFNBQUcsS0FBSyxDQUFDLGFBQWEsbUNBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFHO1lBQ1YsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQ2hDLENBQUE7UUFFRCxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLHNCQUFzQixFQUFFO1lBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxxQkFBUSxDQUFDLElBQUksQ0FBQztvQkFDeEMsTUFBTSxFQUFFLE1BQU07b0JBQ2QsSUFBSSxFQUFFLE1BQU07b0JBQ1osR0FBRyxFQUFFLElBQUk7aUJBQ1osQ0FBQyxDQUFBO2FBQ0w7WUFDRCxJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMscUJBQXFCLEVBQUMsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxtQ0FBYyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxFQUFDLEtBQUssRUFBRSw0QkFBZSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtTQUMvRztJQUNMLENBQUM7Q0FDSjtBQXRCRCwwREFzQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Z1bmN0aW9uUHJvcHMsIElGdW5jdGlvbiwgRnVuY3Rpb24sIERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcywgRG9ja2VySW1hZ2VGdW5jdGlvbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge1NjaGVkdWxlLCBSdWxlLCBSdWxlVGFyZ2V0SW5wdXR9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHtMYW1iZGFGdW5jdGlvbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJ1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gJ2NvbnN0cnVjdHMnXG5cbmludGVyZmFjZSBJeG9yTGFtYmRhRnVuY3Rpb25Qcm9wcyBleHRlbmRzIEZ1bmN0aW9uUHJvcHMge1xuICAgIGtlZXBXYXJtPzogYm9vbGVhbixcbiAgICBrZWVwV2FybUV2ZW50U2NoZWR1bGU/OiBTY2hlZHVsZSxcbiAgICBrZWVwV2FybUxhbWJkYUZ1bmN0aW9uPzogSUZ1bmN0aW9uLFxuICAgIGtlZXBXYXJtQ291bnQ/OiBudW1iZXJcbn1cblxuaW50ZXJmYWNlIEl4b3JEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMge1xuICAgIGtlZXBXYXJtPzogYm9vbGVhbixcbiAgICBrZWVwV2FybUV2ZW50U2NoZWR1bGU/OiBTY2hlZHVsZSxcbiAgICBrZWVwV2FybUxhbWJkYUZ1bmN0aW9uPzogSUZ1bmN0aW9uLFxuICAgIGtlZXBXYXJtQ291bnQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IGNsYXNzIEl4b3JGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSXhvckxhbWJkYUZ1bmN0aW9uUHJvcHMpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAgICAgY29uc3Qga2VlcFdhcm1Db3VudCA9IHByb3BzLmtlZXBXYXJtQ291bnQgPz8gMjtcbiAgICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgICAgICBcImNvdW50XCI6IGtlZXBXYXJtQ291bnQsXG4gICAgICAgICAgICBcImxhbWJkYUFyblwiOiB0aGlzLmZ1bmN0aW9uQXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMua2VlcFdhcm0gJiYgcHJvcHMua2VlcFdhcm1MYW1iZGFGdW5jdGlvbikge1xuICAgICAgICAgICAgaWYgKCFwcm9wcy5rZWVwV2FybUV2ZW50U2NoZWR1bGUpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5rZWVwV2FybUV2ZW50U2NoZWR1bGUgPSBTY2hlZHVsZS5jcm9uKHtcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiAnMC8xMCcsXG4gICAgICAgICAgICAgICAgICAgIGhvdXI6ICc3LTE5JyxcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnKlcnXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBydWxlID0gbmV3IFJ1bGUoc2NvcGUsIGBrZWVwV2FybS0ke3RoaXMubm9kZS5pZH1gLCB7c2NoZWR1bGU6IHByb3BzLmtlZXBXYXJtRXZlbnRTY2hlZHVsZX0pO1xuICAgICAgICAgICAgcnVsZS5hZGRUYXJnZXQobmV3IExhbWJkYUZ1bmN0aW9uKHByb3BzLmtlZXBXYXJtTGFtYmRhRnVuY3Rpb24sIHtldmVudDogUnVsZVRhcmdldElucHV0LmZyb21PYmplY3QoZXZlbnQpfSkpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJeG9yRG9ja2VySW1hZ2VGdW5jdGlvbiBleHRlbmRzIERvY2tlckltYWdlRnVuY3Rpb24ge1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJeG9yRG9ja2VySW1hZ2VGdW5jdGlvblByb3BzKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgICAgIGNvbnN0IGtlZXBXYXJtQ291bnQgPSBwcm9wcy5rZWVwV2FybUNvdW50ID8/IDI7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICAgICAgXCJjb3VudFwiOiBrZWVwV2FybUNvdW50LFxuICAgICAgICAgICAgXCJsYW1iZGFBcm5cIjogdGhpcy5mdW5jdGlvbkFyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmtlZXBXYXJtICYmIHByb3BzLmtlZXBXYXJtTGFtYmRhRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICghcHJvcHMua2VlcFdhcm1FdmVudFNjaGVkdWxlKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMua2VlcFdhcm1FdmVudFNjaGVkdWxlID0gU2NoZWR1bGUuY3Jvbih7XG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogJzAvMTAnLFxuICAgICAgICAgICAgICAgICAgICBob3VyOiAnNy0xOScsXG4gICAgICAgICAgICAgICAgICAgIGRheTogJypXJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcnVsZSA9IG5ldyBSdWxlKHNjb3BlLCBga2VlcFdhcm0tJHt0aGlzLm5vZGUuaWR9YCwge3NjaGVkdWxlOiBwcm9wcy5rZWVwV2FybUV2ZW50U2NoZWR1bGV9KTtcbiAgICAgICAgICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyBMYW1iZGFGdW5jdGlvbihwcm9wcy5rZWVwV2FybUxhbWJkYUZ1bmN0aW9uLCB7ZXZlbnQ6IFJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KGV2ZW50KX0pKVxuICAgICAgICB9XG4gICAgfVxufSJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Stack, StackProps } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
export declare class TestAwsCdkIxorLambdaStack extends Stack {
|
|
4
|
+
private keepWarmLambda;
|
|
5
|
+
private lambdaToKeepWarm;
|
|
6
|
+
constructor(scope: Construct, id: string, props?: StackProps);
|
|
7
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestAwsCdkIxorLambdaStack = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
6
|
+
const aws_cdk_ixor_lambda_1 = require("./aws-cdk-ixor-lambda");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
9
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
10
|
+
class TestAwsCdkIxorLambdaStack extends aws_cdk_lib_1.Stack {
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id, props);
|
|
13
|
+
this.keepWarmLambda = new aws_lambda_1.Function(this, 'ixor-lambda-keep-warm-lambda', {
|
|
14
|
+
functionName: 'keepWarmLambda',
|
|
15
|
+
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, '../test_aws_cdk_ixor_lambda_handler')),
|
|
16
|
+
handler: "test_aws_cdk_ixor_lambda_keepwarm.lambda_handler",
|
|
17
|
+
runtime: aws_lambda_1.Runtime.PYTHON_3_8,
|
|
18
|
+
timeout: aws_cdk_lib_1.Duration.seconds(30)
|
|
19
|
+
});
|
|
20
|
+
this.lambdaToKeepWarm = new aws_cdk_ixor_lambda_1.IxorFunction(this, 'ixor-lambda-lambda-to-keep-warm', {
|
|
21
|
+
functionName: 'lambdaToKeepWarm',
|
|
22
|
+
code: aws_lambda_1.Code.fromAsset(path.join(__dirname, '../test_aws_cdk_ixor_lambda_handler')),
|
|
23
|
+
handler: "test_aws_cdk_ixor_lambda_warmed_lambda.lambda_handler",
|
|
24
|
+
runtime: aws_lambda_1.Runtime.PYTHON_3_8,
|
|
25
|
+
timeout: aws_cdk_lib_1.Duration.seconds(30),
|
|
26
|
+
keepWarm: true,
|
|
27
|
+
keepWarmCount: 2,
|
|
28
|
+
keepWarmLambdaFunction: this.keepWarmLambda,
|
|
29
|
+
keepWarmEventSchedule: aws_events_1.Schedule.cron({
|
|
30
|
+
minute: '0/10',
|
|
31
|
+
hour: '7-19',
|
|
32
|
+
day: '*W'
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
this.keepWarmLambda.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
36
|
+
resources: [this.lambdaToKeepWarm.functionArn],
|
|
37
|
+
actions: ['lambda:InvokeFunction', 'lambda:InvokeAsync']
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.TestAwsCdkIxorLambdaStack = TestAwsCdkIxorLambdaStack;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1hd3MtY2RrLWl4b3ItbGFtYmRhLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC1hd3MtY2RrLWl4b3ItbGFtYmRhLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3RDtBQUV4RCx1REFBMEU7QUFDMUUsK0RBQW1EO0FBQ25ELDZCQUE2QjtBQUM3Qix1REFBZ0Q7QUFDaEQsaURBQW9EO0FBR3BELE1BQWEseUJBQTBCLFNBQVEsbUJBQUs7SUFLaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUN4RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUkscUJBQVEsQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEVBQUU7WUFDckUsWUFBWSxFQUFFLGdCQUFnQjtZQUM5QixJQUFJLEVBQUUsaUJBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUscUNBQXFDLENBQUMsQ0FBQztZQUNqRixPQUFPLEVBQUUsa0RBQWtEO1lBQzNELE9BQU8sRUFBRSxvQkFBTyxDQUFDLFVBQVU7WUFDM0IsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNoQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxrQ0FBWSxDQUFDLElBQUksRUFBRSxpQ0FBaUMsRUFBRTtZQUM5RSxZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ2pGLE9BQU8sRUFBRSx1REFBdUQ7WUFDaEUsT0FBTyxFQUFFLG9CQUFPLENBQUMsVUFBVTtZQUMzQixPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzdCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsYUFBYSxFQUFFLENBQUM7WUFDaEIsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDM0MscUJBQXFCLEVBQUUscUJBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pDLE1BQU0sRUFBRSxNQUFNO2dCQUNkLElBQUksRUFBRSxNQUFNO2dCQUNaLEdBQUcsRUFBRSxJQUFJO2FBQ1osQ0FBQztTQUNMLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUkseUJBQWUsQ0FBQztZQUNwRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1lBQzlDLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLG9CQUFvQixDQUFDO1NBQzNELENBQUMsQ0FBQyxDQUFBO0lBQ1AsQ0FBQztDQUNKO0FBckNELDhEQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RhY2ssIFN0YWNrUHJvcHMsIER1cmF0aW9ufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7SUZ1bmN0aW9uLCBGdW5jdGlvbiwgQ29kZSwgUnVudGltZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7SXhvckZ1bmN0aW9ufSBmcm9tIFwiLi9hd3MtY2RrLWl4b3ItbGFtYmRhXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge1NjaGVkdWxlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiO1xuaW1wb3J0IHtQb2xpY3lTdGF0ZW1lbnR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5cblxuZXhwb3J0IGNsYXNzIFRlc3RBd3NDZGtJeG9yTGFtYmRhU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gICAgcHJpdmF0ZSBrZWVwV2FybUxhbWJkYTogSUZ1bmN0aW9uO1xuICAgIHByaXZhdGUgbGFtYmRhVG9LZWVwV2FybTogSUZ1bmN0aW9uO1xuXG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5rZWVwV2FybUxhbWJkYSA9IG5ldyBGdW5jdGlvbih0aGlzLCAnaXhvci1sYW1iZGEta2VlcC13YXJtLWxhbWJkYScsIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogJ2tlZXBXYXJtTGFtYmRhJyxcbiAgICAgICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi90ZXN0X2F3c19jZGtfaXhvcl9sYW1iZGFfaGFuZGxlcicpKSxcbiAgICAgICAgICAgIGhhbmRsZXI6IFwidGVzdF9hd3NfY2RrX2l4b3JfbGFtYmRhX2tlZXB3YXJtLmxhbWJkYV9oYW5kbGVyXCIsXG4gICAgICAgICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzgsXG4gICAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKVxuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMubGFtYmRhVG9LZWVwV2FybSA9IG5ldyBJeG9yRnVuY3Rpb24odGhpcywgJ2l4b3ItbGFtYmRhLWxhbWJkYS10by1rZWVwLXdhcm0nLCB7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6ICdsYW1iZGFUb0tlZXBXYXJtJyxcbiAgICAgICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi90ZXN0X2F3c19jZGtfaXhvcl9sYW1iZGFfaGFuZGxlcicpKSxcbiAgICAgICAgICAgIGhhbmRsZXI6IFwidGVzdF9hd3NfY2RrX2l4b3JfbGFtYmRhX3dhcm1lZF9sYW1iZGEubGFtYmRhX2hhbmRsZXJcIixcbiAgICAgICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuUFlUSE9OXzNfOCxcbiAgICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgICAgICAga2VlcFdhcm06IHRydWUsXG4gICAgICAgICAgICBrZWVwV2FybUNvdW50OiAyLFxuICAgICAgICAgICAga2VlcFdhcm1MYW1iZGFGdW5jdGlvbjogdGhpcy5rZWVwV2FybUxhbWJkYSxcbiAgICAgICAgICAgIGtlZXBXYXJtRXZlbnRTY2hlZHVsZTogU2NoZWR1bGUuY3Jvbih7XG4gICAgICAgICAgICAgICAgbWludXRlOiAnMC8xMCcsXG4gICAgICAgICAgICAgICAgaG91cjogJzctMTknLFxuICAgICAgICAgICAgICAgIGRheTogJypXJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgICB0aGlzLmtlZXBXYXJtTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIHJlc291cmNlczogW3RoaXMubGFtYmRhVG9LZWVwV2FybS5mdW5jdGlvbkFybl0sXG4gICAgICAgICAgICBhY3Rpb25zOiBbJ2xhbWJkYTpJbnZva2VGdW5jdGlvbicsICdsYW1iZGE6SW52b2tlQXN5bmMnXVxuICAgICAgICB9KSlcbiAgICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ixor/aws-cdk-ixor-lambda",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-rc-3",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/ixorbe/aws-cdk-ixor-lambda.git"
|
|
@@ -19,25 +19,19 @@
|
|
|
19
19
|
"prepublishOnly": "tsc"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"
|
|
22
|
+
"aws-cdk-lib": "~2.50.0",
|
|
23
|
+
"constructs": "~10.1.152",
|
|
23
24
|
"@types/jest": "^25.2.1",
|
|
24
25
|
"@types/node": "10.17.5",
|
|
25
26
|
"jest": "^25.5.0",
|
|
26
27
|
"ts-jest": "^25.3.1",
|
|
27
|
-
"aws-cdk": "~1.128.0",
|
|
28
28
|
"ts-node": "^8.1.0",
|
|
29
|
-
"typescript": "~3.7
|
|
30
|
-
"@aws-cdk/aws-events": "~1.128.0",
|
|
31
|
-
"@aws-cdk/aws-events-targets": "~1.128.0",
|
|
32
|
-
"@aws-cdk/aws-lambda": "~1.128.0",
|
|
33
|
-
"@aws-cdk/core": "~1.128.0",
|
|
29
|
+
"typescript": "~3.9.7",
|
|
34
30
|
"source-map-support": "^0.5.16"
|
|
35
31
|
},
|
|
36
32
|
"peerDependencies": {
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"@aws-cdk/aws-lambda": "~1.128.0",
|
|
40
|
-
"@aws-cdk/core": "~1.128.0",
|
|
33
|
+
"aws-cdk-lib": "~2.50.0",
|
|
34
|
+
"constructs": "~10.1.152",
|
|
41
35
|
"source-map-support": "^0.5.16"
|
|
42
36
|
}
|
|
43
37
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
require("source-map-support/register");
|
|
5
|
+
const cdk = require("aws-cdk-lib");
|
|
6
|
+
const test_aws_cdk_ixor_lambda_stack_1 = require("../lib/test-aws-cdk-ixor-lambda-stack");
|
|
7
|
+
const app = new cdk.App();
|
|
8
|
+
new test_aws_cdk_ixor_lambda_stack_1.TestAwsCdkIxorLambdaStack(app, 'TestAwsCdkIxorLambdaStack', {
|
|
9
|
+
/* If you don't specify 'env', this stack will be environment-agnostic.
|
|
10
|
+
* Account/Region-dependent features and context lookups will not work,
|
|
11
|
+
* but a single synthesized template can be deployed anywhere. */
|
|
12
|
+
/* Uncomment the next line to specialize this stack for the AWS Account
|
|
13
|
+
* and Region that are implied by the current CLI configuration. */
|
|
14
|
+
// env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION },
|
|
15
|
+
/* Uncomment the next line if you know exactly what Account and Region you
|
|
16
|
+
* want to deploy the stack to. */
|
|
17
|
+
//only Sandbox account
|
|
18
|
+
env: { account: '365354788990', region: 'eu-central-1' },
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1hd3MtY2RrLWl4b3ItbGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC1hd3MtY2RrLWl4b3ItbGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVDQUFxQztBQUNyQyxtQ0FBbUM7QUFDbkMsMEZBQWtGO0FBR2xGLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLElBQUksMERBQXlCLENBQUMsR0FBRyxFQUFFLDJCQUEyQixFQUFFO0lBQzVEOztxRUFFaUU7SUFFakU7dUVBQ21FO0lBQ25FLDZGQUE2RjtJQUU3RjtzQ0FDa0M7SUFDbEMsc0JBQXNCO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRTtDQUUzRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgJ3NvdXJjZS1tYXAtc3VwcG9ydC9yZWdpc3Rlcic7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgVGVzdEF3c0Nka0l4b3JMYW1iZGFTdGFjayB9IGZyb20gJy4uL2xpYi90ZXN0LWF3cy1jZGstaXhvci1sYW1iZGEtc3RhY2snO1xuXG5cbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG5uZXcgVGVzdEF3c0Nka0l4b3JMYW1iZGFTdGFjayhhcHAsICdUZXN0QXdzQ2RrSXhvckxhbWJkYVN0YWNrJywge1xuICAgIC8qIElmIHlvdSBkb24ndCBzcGVjaWZ5ICdlbnYnLCB0aGlzIHN0YWNrIHdpbGwgYmUgZW52aXJvbm1lbnQtYWdub3N0aWMuXG4gICAgICogQWNjb3VudC9SZWdpb24tZGVwZW5kZW50IGZlYXR1cmVzIGFuZCBjb250ZXh0IGxvb2t1cHMgd2lsbCBub3Qgd29yayxcbiAgICAgKiBidXQgYSBzaW5nbGUgc3ludGhlc2l6ZWQgdGVtcGxhdGUgY2FuIGJlIGRlcGxveWVkIGFueXdoZXJlLiAqL1xuXG4gICAgLyogVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gc3BlY2lhbGl6ZSB0aGlzIHN0YWNrIGZvciB0aGUgQVdTIEFjY291bnRcbiAgICAgKiBhbmQgUmVnaW9uIHRoYXQgYXJlIGltcGxpZWQgYnkgdGhlIGN1cnJlbnQgQ0xJIGNvbmZpZ3VyYXRpb24uICovXG4gICAgLy8gZW52OiB7IGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIH0sXG5cbiAgICAvKiBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSBpZiB5b3Uga25vdyBleGFjdGx5IHdoYXQgQWNjb3VudCBhbmQgUmVnaW9uIHlvdVxuICAgICAqIHdhbnQgdG8gZGVwbG95IHRoZSBzdGFjayB0by4gKi9cbiAgICAvL29ubHkgU2FuZGJveCBhY2NvdW50XG4gICAgZW52OiB7IGFjY291bnQ6ICczNjUzNTQ3ODg5OTAnLCByZWdpb246ICdldS1jZW50cmFsLTEnIH0sXG4gICAgLyogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2xhdGVzdC9ndWlkZS9lbnZpcm9ubWVudHMuaHRtbCAqL1xufSk7Il19
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
import boto3
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
logger = logging.getLogger()
|
|
7
|
+
logger.setLevel(logging.INFO)
|
|
8
|
+
|
|
9
|
+
client = boto3.client("lambda")
|
|
10
|
+
|
|
11
|
+
dummy_sleep_seconds = os.getenv('DUMMY_SLEEP_SECONDS', '1')
|
|
12
|
+
|
|
13
|
+
def lambda_handler(event, context):
|
|
14
|
+
logger.info(json.dumps(event))
|
|
15
|
+
count = event.get('count', 3)
|
|
16
|
+
lambda_arn = event.get('lambdaArn')
|
|
17
|
+
logger.debug(f"Lambda to warm: {lambda_arn}")
|
|
18
|
+
logger.debug(f"How many? {count}")
|
|
19
|
+
logger.info(f"Asynchronously starting {count} target lambdas")
|
|
20
|
+
|
|
21
|
+
success_count = 0
|
|
22
|
+
|
|
23
|
+
for i in range(count):
|
|
24
|
+
logger.debug(f"Iteration {i+1}")
|
|
25
|
+
try:
|
|
26
|
+
client.invoke(
|
|
27
|
+
FunctionName=lambda_arn,
|
|
28
|
+
InvocationType='Event',
|
|
29
|
+
Payload=f'{{"dummy": "dummy", "dummySleepSeconds": {dummy_sleep_seconds} }}'
|
|
30
|
+
)
|
|
31
|
+
except Exception as e:
|
|
32
|
+
logger.error(f"Exception occured: {e}")
|
|
33
|
+
else:
|
|
34
|
+
success_count = success_count + 1
|
|
35
|
+
|
|
36
|
+
logger.info(f"{success_count}/{count} successful invocations")
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
'statusCode': 200,
|
|
40
|
+
'body': json.dumps('Finished')
|
|
41
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
logger = logging.getLogger()
|
|
6
|
+
logger.setLevel(logging.INFO)
|
|
7
|
+
|
|
8
|
+
if "DEBUG" in os.environ:
|
|
9
|
+
logger.setLevel(logging.DEBUG)
|
|
10
|
+
|
|
11
|
+
def lambda_handler(event, context):
|
|
12
|
+
logger.info(f"Starting warmed lambda")
|
|
13
|
+
logger.info(json.dumps(event))
|
|
14
|
+
|
|
15
|
+
result = False
|
|
16
|
+
if 'dummy' in event:
|
|
17
|
+
sleep(event.get('dummySleepSeconds', 1))
|
|
18
|
+
result = True
|
|
19
|
+
|
|
20
|
+
logger.info(f"Successful dummy: {result}")
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
"success": result
|
|
24
|
+
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<module type="WEB_MODULE" version="4">
|
|
3
|
-
<component name="NewModuleRootManager">
|
|
4
|
-
<content url="file://$MODULE_DIR$">
|
|
5
|
-
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
6
|
-
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
7
|
-
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
|
8
|
-
</content>
|
|
9
|
-
<orderEntry type="inheritedJdk" />
|
|
10
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
|
11
|
-
</component>
|
|
12
|
-
</module>
|
package/.idea/aws.xml
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="accountSettings">
|
|
4
|
-
<option name="activeRegion" value="eu-central-1" />
|
|
5
|
-
<option name="recentlyUsedRegions">
|
|
6
|
-
<list>
|
|
7
|
-
<option value="eu-central-1" />
|
|
8
|
-
</list>
|
|
9
|
-
</option>
|
|
10
|
-
</component>
|
|
11
|
-
</project>
|
package/.idea/misc.xml
DELETED
package/.idea/modules.xml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ProjectModuleManager">
|
|
4
|
-
<modules>
|
|
5
|
-
<module fileurl="file://$PROJECT_DIR$/.idea/aws-cdk-ixor-lambda.iml" filepath="$PROJECT_DIR$/.idea/aws-cdk-ixor-lambda.iml" />
|
|
6
|
-
</modules>
|
|
7
|
-
</component>
|
|
8
|
-
</project>
|
package/.idea/vcs.xml
DELETED
package/.idea/workspace.xml
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ChangeListManager">
|
|
4
|
-
<list default="true" id="698705ca-4ff3-4982-91fb-9a2ce97f8af0" name="Default Changelist" comment="">
|
|
5
|
-
<change beforePath="$PROJECT_DIR$/lib/aws-cdk-ixor-lambda.ts" beforeDir="false" afterPath="$PROJECT_DIR$/lib/aws-cdk-ixor-lambda.ts" afterDir="false" />
|
|
6
|
-
<change beforePath="$PROJECT_DIR$/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/package-lock.json" afterDir="false" />
|
|
7
|
-
<change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
|
|
8
|
-
</list>
|
|
9
|
-
<option name="SHOW_DIALOG" value="false" />
|
|
10
|
-
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
11
|
-
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
12
|
-
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
13
|
-
</component>
|
|
14
|
-
<component name="Git.Settings">
|
|
15
|
-
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
16
|
-
</component>
|
|
17
|
-
<component name="ProjectId" id="1cO47Lu7dR0pvgFWIv3sCgN93XF" />
|
|
18
|
-
<component name="ProjectViewState">
|
|
19
|
-
<option name="hideEmptyMiddlePackages" value="true" />
|
|
20
|
-
<option name="showExcludedFiles" value="false" />
|
|
21
|
-
<option name="showLibraryContents" value="true" />
|
|
22
|
-
</component>
|
|
23
|
-
<component name="PropertiesComponent">
|
|
24
|
-
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
|
25
|
-
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
|
26
|
-
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
|
27
|
-
<property name="node.js.detected.package.eslint" value="true" />
|
|
28
|
-
<property name="node.js.detected.package.standard" value="true" />
|
|
29
|
-
<property name="node.js.detected.package.tslint" value="true" />
|
|
30
|
-
<property name="node.js.path.for.package.eslint" value="project" />
|
|
31
|
-
<property name="node.js.path.for.package.standard" value="project" />
|
|
32
|
-
<property name="node.js.path.for.package.tslint" value="project" />
|
|
33
|
-
<property name="node.js.selected.package.eslint" value="(autodetect)" />
|
|
34
|
-
<property name="node.js.selected.package.standard" value="" />
|
|
35
|
-
<property name="node.js.selected.package.tslint" value="(autodetect)" />
|
|
36
|
-
<property name="nodejs_interpreter_path" value="node" />
|
|
37
|
-
<property name="nodejs_package_manager_path" value="npm" />
|
|
38
|
-
<property name="settings.editor.selected.configurable" value="settings.nodejs" />
|
|
39
|
-
<property name="ts.external.directory.path" value="$PROJECT_DIR$/node_modules/typescript/lib" />
|
|
40
|
-
<property name="vue.rearranger.settings.migration" value="true" />
|
|
41
|
-
</component>
|
|
42
|
-
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
|
43
|
-
<component name="SvnConfiguration">
|
|
44
|
-
<configuration />
|
|
45
|
-
</component>
|
|
46
|
-
<component name="TaskManager">
|
|
47
|
-
<task active="true" id="Default" summary="Default task">
|
|
48
|
-
<changelist id="698705ca-4ff3-4982-91fb-9a2ce97f8af0" name="Default Changelist" comment="" />
|
|
49
|
-
<created>1590386137515</created>
|
|
50
|
-
<option name="number" value="Default" />
|
|
51
|
-
<option name="presentableId" value="Default" />
|
|
52
|
-
<updated>1590386137515</updated>
|
|
53
|
-
<workItem from="1590386140821" duration="8573000" />
|
|
54
|
-
<workItem from="1590471986532" duration="55000" />
|
|
55
|
-
<workItem from="1594298938144" duration="3372000" />
|
|
56
|
-
<workItem from="1634545910408" duration="305000" />
|
|
57
|
-
</task>
|
|
58
|
-
<task id="LOCAL-00001" summary="Moved code from a custom cdk stack to a construct in its own package and added a README.md file">
|
|
59
|
-
<created>1590398700384</created>
|
|
60
|
-
<option name="number" value="00001" />
|
|
61
|
-
<option name="presentableId" value="LOCAL-00001" />
|
|
62
|
-
<option name="project" value="LOCAL" />
|
|
63
|
-
<updated>1590398700385</updated>
|
|
64
|
-
</task>
|
|
65
|
-
<task id="LOCAL-00002" summary="Cleanup and update README.md">
|
|
66
|
-
<created>1590408429833</created>
|
|
67
|
-
<option name="number" value="00002" />
|
|
68
|
-
<option name="presentableId" value="LOCAL-00002" />
|
|
69
|
-
<option name="project" value="LOCAL" />
|
|
70
|
-
<updated>1590408429835</updated>
|
|
71
|
-
</task>
|
|
72
|
-
<option name="localTasksCounter" value="3" />
|
|
73
|
-
<servers />
|
|
74
|
-
</component>
|
|
75
|
-
<component name="TypeScriptGeneratedFilesManager">
|
|
76
|
-
<option name="version" value="3" />
|
|
77
|
-
<option name="exactExcludedFiles">
|
|
78
|
-
<list>
|
|
79
|
-
<option value="$PROJECT_DIR$/lib/aws-cdk-ixor-lambda.js" />
|
|
80
|
-
<option value="$PROJECT_DIR$/lib/aws-cdk-ixor-lambda.d.ts" />
|
|
81
|
-
</list>
|
|
82
|
-
</option>
|
|
83
|
-
</component>
|
|
84
|
-
<component name="VcsManagerConfiguration">
|
|
85
|
-
<MESSAGE value="Moved code from a custom cdk stack to a construct in its own package and added a README.md file" />
|
|
86
|
-
<MESSAGE value="Cleanup and update README.md" />
|
|
87
|
-
<option name="LAST_COMMIT_MESSAGE" value="Cleanup and update README.md" />
|
|
88
|
-
</component>
|
|
89
|
-
<component name="WindowStateProjectService">
|
|
90
|
-
<state x="-2662" y="495" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1590408366170">
|
|
91
|
-
<screen x="-3200" y="86" width="3200" height="1310" />
|
|
92
|
-
</state>
|
|
93
|
-
<state x="-2662" y="495" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.23.2560.1417/-3200.86.3200.1310@-3200.86.3200.1310" timestamp="1590408366170" />
|
|
94
|
-
<state x="-2823" y="316" key="CommitChangelistDialog2" timestamp="1590408429408">
|
|
95
|
-
<screen x="-3200" y="86" width="3200" height="1310" />
|
|
96
|
-
</state>
|
|
97
|
-
<state x="-2823" y="316" key="CommitChangelistDialog2/0.23.2560.1417/-3200.86.3200.1310@-3200.86.3200.1310" timestamp="1590408429408" />
|
|
98
|
-
<state x="-2797" y="380" key="SettingsEditor" timestamp="1590386235160">
|
|
99
|
-
<screen x="-3200" y="86" width="3200" height="1310" />
|
|
100
|
-
</state>
|
|
101
|
-
<state x="-2797" y="380" key="SettingsEditor/0.23.2560.1417/-3200.86.3200.1310@-3200.86.3200.1310" timestamp="1590386235160" />
|
|
102
|
-
</component>
|
|
103
|
-
</project>
|