@ashishpandeyone/cdk-lambda-web-function 0.1.10 → 0.1.12
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 +187 -72
- package/.jsii.tabl.json +1 -1
- package/API.md +245 -0
- package/README.md +64 -0
- package/assets/web-function-provider/index.js +19 -19
- package/lib/nodejs-web-function.js +1 -1
- package/lib/private/log-group.d.ts +2 -0
- package/lib/private/log-group.js +11 -2
- package/lib/private/provider-protocol.d.ts +2 -0
- package/lib/private/provider-protocol.js +1 -1
- package/lib/web-function-deployment.js +1 -1
- package/lib/web-function-endpoint.js +1 -1
- package/lib/web-function-grants.js +1 -1
- package/lib/web-function-origin.js +1 -1
- package/lib/web-function-revision.js +1 -1
- package/lib/web-function.d.ts +56 -0
- package/lib/web-function.js +105 -4
- package/package.json +2 -1
|
@@ -50,7 +50,7 @@ const web_function_1 = require("./web-function");
|
|
|
50
50
|
* bundle, and `NODE_OPTIONS=--enable-source-maps` when source maps are on.
|
|
51
51
|
*/
|
|
52
52
|
class NodejsWebFunction extends web_function_1.WebFunction {
|
|
53
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.NodejsWebFunction", version: "0.1.
|
|
53
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.NodejsWebFunction", version: "0.1.12" };
|
|
54
54
|
/**
|
|
55
55
|
* Identifies this class to property injectors (`PropertyInjectors.of(scope).add(...)`). A `NodejsWebFunction` gets
|
|
56
56
|
* its own injector first, then `WebFunction`'s, as aws-cdk-lib's `NodejsFunction` does with `Function`'s.
|
|
@@ -8,6 +8,8 @@ export interface WebFunctionLogGroupProps {
|
|
|
8
8
|
readonly logGroupName: string;
|
|
9
9
|
readonly retention: logs.RetentionDays;
|
|
10
10
|
readonly removalPolicy: RemovalPolicy;
|
|
11
|
+
/** A KMS key in `region`, by ARN. */
|
|
12
|
+
readonly kmsKeyArn?: string;
|
|
11
13
|
}
|
|
12
14
|
/** One Web Function log group in one (possibly remote) region, owned through the provider. */
|
|
13
15
|
export declare class WebFunctionLogGroup extends Construct {
|
package/lib/private/log-group.js
CHANGED
|
@@ -60,18 +60,27 @@ class WebFunctionLogGroup extends constructs_1.Construct {
|
|
|
60
60
|
// per-region grants break when a region is removed (CloudFormation reverts or updates the role first).
|
|
61
61
|
const webLogGroups = stack.formatArn({ service: 'logs', region: '*', resource: 'log-group', resourceName: '/aws/lambda/web/*', arnFormat: aws_cdk_lib_1.ArnFormat.COLON_RESOURCE_NAME });
|
|
62
62
|
(0, provider_1.grantToProvider)(provider, {
|
|
63
|
-
|
|
63
|
+
// The key actions too when no group has a key: removing one needs DisassociateKmsKey.
|
|
64
|
+
Action: [
|
|
65
|
+
'logs:CreateLogGroup', 'logs:PutRetentionPolicy', 'logs:DeleteRetentionPolicy', 'logs:DeleteLogGroup',
|
|
66
|
+
'logs:AssociateKmsKey', 'logs:DisassociateKmsKey',
|
|
67
|
+
],
|
|
64
68
|
Resource: webLogGroups,
|
|
65
69
|
});
|
|
66
70
|
(0, provider_1.grantToProvider)(provider, {
|
|
67
71
|
Action: 'logs:DescribeLogGroups',
|
|
68
72
|
Resource: stack.formatArn({ service: 'logs', region: '*', resource: 'log-group', resourceName: '*', arnFormat: aws_cdk_lib_1.ArnFormat.COLON_RESOURCE_NAME }),
|
|
69
73
|
});
|
|
74
|
+
if (props.kmsKeyArn) {
|
|
75
|
+
// CreateLogGroup and AssociateKmsKey check that the caller can describe the key.
|
|
76
|
+
(0, provider_1.grantToProvider)(provider, { Action: 'kms:DescribeKey', Resource: props.kmsKeyArn });
|
|
77
|
+
}
|
|
70
78
|
const properties = {
|
|
71
79
|
Region: props.region,
|
|
72
80
|
LogGroupName: props.logGroupName,
|
|
73
81
|
RetentionInDays: props.retention === logs.RetentionDays.INFINITE ? 'Infinite' : String(props.retention),
|
|
74
82
|
RemovalPolicy: props.removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY ? 'destroy' : 'retain',
|
|
83
|
+
KmsKeyId: props.kmsKeyArn,
|
|
75
84
|
FlushWaitSeconds: String(exports.FLUSH_WAIT_SECONDS),
|
|
76
85
|
RecheckWaitSeconds: String(RECHECK_WAIT_SECONDS),
|
|
77
86
|
};
|
|
@@ -83,4 +92,4 @@ class WebFunctionLogGroup extends constructs_1.Construct {
|
|
|
83
92
|
}
|
|
84
93
|
}
|
|
85
94
|
exports.WebFunctionLogGroup = WebFunctionLogGroup;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaXZhdGUvbG9nLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUE4RTtBQUM5RSwyREFBNkM7QUFDN0MsMkNBQXVDO0FBQ3ZDLHlDQUFrRTtBQUNsRSwyREFBdUY7QUFFdkYsOEZBQThGO0FBQ2pGLFFBQUEsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBV2hDLDhGQUE4RjtBQUM5RixNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBQ2hDLE1BQU0sQ0FBUztJQUNmLFlBQVksQ0FBUztJQUNyQixRQUFRLENBQWlCO0lBRXpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssMkJBQWEsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSywyQkFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xHLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUkscURBQXFELEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBRXZDLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sUUFBUSxHQUFHLElBQUEsOEJBQW1CLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsMEdBQTBHO1FBQzFHLHVHQUF1RztRQUN2RyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSx1QkFBUyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUMzSyxJQUFBLDBCQUFlLEVBQUMsUUFBUSxFQUFFO1lBQ3hCLHNGQUFzRjtZQUN0RixNQUFNLEVBQUU7Z0JBQ04scUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsNEJBQTRCLEVBQUUscUJBQXFCO2dCQUNyRyxzQkFBc0IsRUFBRSx5QkFBeUI7YUFDbEQ7WUFDRCxRQUFRLEVBQUUsWUFBWTtTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFBLDBCQUFlLEVBQUMsUUFBUSxFQUFFO1lBQ3hCLE1BQU0sRUFBRSx3QkFBd0I7WUFDaEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSx1QkFBUyxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDaEosQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsaUZBQWlGO1lBQ2pGLElBQUEsMEJBQWUsRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBdUI7WUFDckMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUN2RyxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsS0FBSywyQkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQ25GLFFBQVEsRUFBRSxLQUFLLENBQUMsU0FBUztZQUN6QixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsMEJBQWtCLENBQUM7WUFDNUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1NBQ2pELENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25ELFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxZQUFZLEVBQUUsMkNBQXVCO1lBQ3JDLFVBQVUsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFO1NBQzlCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5ERCxrREFtREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcm5Gb3JtYXQsIEN1c3RvbVJlc291cmNlLCBSZW1vdmFsUG9saWN5LCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBncmFudFRvUHJvdmlkZXIsIHdlYkZ1bmN0aW9uUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVyJztcbmltcG9ydCB7IExPR19HUk9VUF9SRVNPVVJDRV9UWVBFLCB0eXBlIExvZ0dyb3VwUHJvcGVydGllcyB9IGZyb20gJy4vcHJvdmlkZXItcHJvdG9jb2wnO1xuXG4vKiogU2Vjb25kcyB0byB3YWl0IGJlZm9yZSBkZWxldGluZyBhIGdyb3VwOyB2ZXJpZmllZCBhZ2FpbnN0IGxhdGUgZmx1c2hlcyBpbiBldmVyeSByZWdpb24uICovXG5leHBvcnQgY29uc3QgRkxVU0hfV0FJVF9TRUNPTkRTID0gNzU7XG5jb25zdCBSRUNIRUNLX1dBSVRfU0VDT05EUyA9IDMwO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdlYkZ1bmN0aW9uTG9nR3JvdXBQcm9wcyB7XG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICByZWFkb25seSBsb2dHcm91cE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXM7XG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3k7XG4gIC8qKiBBIEtNUyBrZXkgaW4gYHJlZ2lvbmAsIGJ5IEFSTi4gKi9cbiAgcmVhZG9ubHkga21zS2V5QXJuPzogc3RyaW5nO1xufVxuXG4vKiogT25lIFdlYiBGdW5jdGlvbiBsb2cgZ3JvdXAgaW4gb25lIChwb3NzaWJseSByZW1vdGUpIHJlZ2lvbiwgb3duZWQgdGhyb3VnaCB0aGUgcHJvdmlkZXIuICovXG5leHBvcnQgY2xhc3MgV2ViRnVuY3Rpb25Mb2dHcm91cCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGxvZ0dyb3VwTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IEN1c3RvbVJlc291cmNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXZWJGdW5jdGlvbkxvZ0dyb3VwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGlmIChwcm9wcy5yZW1vdmFsUG9saWN5ICE9PSBSZW1vdmFsUG9saWN5LlJFVEFJTiAmJiBwcm9wcy5yZW1vdmFsUG9saWN5ICE9PSBSZW1vdmFsUG9saWN5LkRFU1RST1kpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm5vZGUucGF0aH06IGxvZ1JlbW92YWxQb2xpY3kgbXVzdCBiZSBSRVRBSU4gb3IgREVTVFJPWSwgZ290ICR7cHJvcHMucmVtb3ZhbFBvbGljeX1gKTtcbiAgICB9XG4gICAgdGhpcy5yZWdpb24gPSBwcm9wcy5yZWdpb247XG4gICAgdGhpcy5sb2dHcm91cE5hbWUgPSBwcm9wcy5sb2dHcm91cE5hbWU7XG5cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IHByb3ZpZGVyID0gd2ViRnVuY3Rpb25Qcm92aWRlcih0aGlzKTtcbiAgICAvLyBTdGFibGUgZ3JhbnQgKHNlZSBncmFudFRvUHJvdmlkZXIpOiBXZWIgRnVuY3Rpb24gbG9nIGdyb3VwcyBvZiB0aGlzIGFjY291bnQsIGluIGFueSByZWdpb24uIFBlci1uYW1lIG9yXG4gICAgLy8gcGVyLXJlZ2lvbiBncmFudHMgYnJlYWsgd2hlbiBhIHJlZ2lvbiBpcyByZW1vdmVkIChDbG91ZEZvcm1hdGlvbiByZXZlcnRzIG9yIHVwZGF0ZXMgdGhlIHJvbGUgZmlyc3QpLlxuICAgIGNvbnN0IHdlYkxvZ0dyb3VwcyA9IHN0YWNrLmZvcm1hdEFybih7IHNlcnZpY2U6ICdsb2dzJywgcmVnaW9uOiAnKicsIHJlc291cmNlOiAnbG9nLWdyb3VwJywgcmVzb3VyY2VOYW1lOiAnL2F3cy9sYW1iZGEvd2ViLyonLCBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FIH0pO1xuICAgIGdyYW50VG9Qcm92aWRlcihwcm92aWRlciwge1xuICAgICAgLy8gVGhlIGtleSBhY3Rpb25zIHRvbyB3aGVuIG5vIGdyb3VwIGhhcyBhIGtleTogcmVtb3Zpbmcgb25lIG5lZWRzIERpc2Fzc29jaWF0ZUttc0tleS5cbiAgICAgIEFjdGlvbjogW1xuICAgICAgICAnbG9nczpDcmVhdGVMb2dHcm91cCcsICdsb2dzOlB1dFJldGVudGlvblBvbGljeScsICdsb2dzOkRlbGV0ZVJldGVudGlvblBvbGljeScsICdsb2dzOkRlbGV0ZUxvZ0dyb3VwJyxcbiAgICAgICAgJ2xvZ3M6QXNzb2NpYXRlS21zS2V5JywgJ2xvZ3M6RGlzYXNzb2NpYXRlS21zS2V5JyxcbiAgICAgIF0sXG4gICAgICBSZXNvdXJjZTogd2ViTG9nR3JvdXBzLFxuICAgIH0pO1xuICAgIGdyYW50VG9Qcm92aWRlcihwcm92aWRlciwge1xuICAgICAgQWN0aW9uOiAnbG9nczpEZXNjcmliZUxvZ0dyb3VwcycsXG4gICAgICBSZXNvdXJjZTogc3RhY2suZm9ybWF0QXJuKHsgc2VydmljZTogJ2xvZ3MnLCByZWdpb246ICcqJywgcmVzb3VyY2U6ICdsb2ctZ3JvdXAnLCByZXNvdXJjZU5hbWU6ICcqJywgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSB9KSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5rbXNLZXlBcm4pIHtcbiAgICAgIC8vIENyZWF0ZUxvZ0dyb3VwIGFuZCBBc3NvY2lhdGVLbXNLZXkgY2hlY2sgdGhhdCB0aGUgY2FsbGVyIGNhbiBkZXNjcmliZSB0aGUga2V5LlxuICAgICAgZ3JhbnRUb1Byb3ZpZGVyKHByb3ZpZGVyLCB7IEFjdGlvbjogJ2ttczpEZXNjcmliZUtleScsIFJlc291cmNlOiBwcm9wcy5rbXNLZXlBcm4gfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydGllczogTG9nR3JvdXBQcm9wZXJ0aWVzID0ge1xuICAgICAgUmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgICBMb2dHcm91cE5hbWU6IHByb3BzLmxvZ0dyb3VwTmFtZSxcbiAgICAgIFJldGVudGlvbkluRGF5czogcHJvcHMucmV0ZW50aW9uID09PSBsb2dzLlJldGVudGlvbkRheXMuSU5GSU5JVEUgPyAnSW5maW5pdGUnIDogU3RyaW5nKHByb3BzLnJldGVudGlvbiksXG4gICAgICBSZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1kgPyAnZGVzdHJveScgOiAncmV0YWluJyxcbiAgICAgIEttc0tleUlkOiBwcm9wcy5rbXNLZXlBcm4sXG4gICAgICBGbHVzaFdhaXRTZWNvbmRzOiBTdHJpbmcoRkxVU0hfV0FJVF9TRUNPTkRTKSxcbiAgICAgIFJlY2hlY2tXYWl0U2Vjb25kczogU3RyaW5nKFJFQ0hFQ0tfV0FJVF9TRUNPTkRTKSxcbiAgICB9O1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6IExPR19HUk9VUF9SRVNPVVJDRV9UWVBFLFxuICAgICAgcHJvcGVydGllczogeyAuLi5wcm9wZXJ0aWVzIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -25,6 +25,8 @@ export interface LogGroupProperties {
|
|
|
25
25
|
/** Days, or 'Infinite' for no retention. */
|
|
26
26
|
readonly RetentionInDays: string;
|
|
27
27
|
readonly RemovalPolicy: 'retain' | 'destroy';
|
|
28
|
+
/** The ARN of a KMS key in the group's region to encrypt it with; none means the service's own encryption. */
|
|
29
|
+
readonly KmsKeyId?: string;
|
|
28
30
|
/** Seconds to wait before deleting, so environments still shutting down can flush their last lines. */
|
|
29
31
|
readonly FlushWaitSeconds: string;
|
|
30
32
|
/** Seconds to wait before checking once more that the service hasn't re-created the group. */
|
|
@@ -42,4 +42,4 @@ exports.EMPTY_ON_DELETE_TAG = { key: 'cdk-lambda-web:empty-on-delete', value: 't
|
|
|
42
42
|
* (Web Functions have no AddPermission: the policy is a single document, so writers merge into it).
|
|
43
43
|
*/
|
|
44
44
|
exports.RESOURCE_POLICY_STATEMENTS_RESOURCE_TYPE = 'Custom::LambdaWebResourcePolicyStatements';
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItcHJvdG9jb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpdmF0ZS9wcm92aWRlci1wcm90b2NvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUE2Q0gsMERBRUM7QUE3Q0QsdUZBQXVGO0FBQzFFLFFBQUEsa0JBQWtCLEdBQUcsdUJBQXVCLENBQUM7QUFjMUQsdUdBQXVHO0FBQzFGLFFBQUEsdUJBQXVCLEdBQUcsMkJBQTJCLENBQUM7QUFnQm5FLGdIQUFnSDtBQUNuRyxRQUFBLDZCQUE2QixHQUFHLGlDQUFpQyxDQUFDO0FBUy9FLGdGQUFnRjtBQUNoRixTQUFnQix1QkFBdUIsQ0FBQyxNQUFjO0lBQ3BELE9BQU8sVUFBVSxNQUFNLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsbUhBQW1IO0FBQ3RHLFFBQUEsOEJBQThCLEdBQUcsa0NBQWtDLENBQUM7QUFhakY7OztHQUdHO0FBQ1UsUUFBQSwyQkFBMkIsR0FBRywrQkFBK0IsQ0FBQztBQTJCM0Usa0hBQWtIO0FBQ2xILGlIQUFpSDtBQUNwRyxRQUFBLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUNqQyxRQUFBLDRCQUE0QixHQUFHLHdCQUF3QixDQUFDO0FBZ0JyRSwwR0FBMEc7QUFDN0YsUUFBQSxpQ0FBaUMsR0FBRyxvQ0FBb0MsQ0FBQztBQUV0Rjs7O0dBR0c7QUFDVSxRQUFBLG1CQUFtQixHQUFHLEVBQUUsR0FBRyxFQUFFLGdDQUFnQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztBQU01Rjs7O0dBR0c7QUFDVSxRQUFBLHdDQUF3QyxHQUFHLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250cmFjdCBiZXR3ZWVuIHRoZSBjb25zdHJ1Y3RzIGFuZCB0aGUgY3VzdG9tIHJlc291cmNlIGhhbmRsZXIgaW5cbiAqIGBoYW5kbGVycy93ZWItZnVuY3Rpb24tcHJvdmlkZXJgLiBCb3RoIHNpZGVzIGltcG9ydCB0aGlzIGZpbGUsIHNvIHJlc291cmNlXG4gKiB0eXBlcyBhbmQgcHJvcGVydHkgbmFtZXMgY2FuJ3QgZHJpZnQgYXBhcnQuXG4gKlxuICogQ2xvdWRGb3JtYXRpb24gcGFzc2VzIGV2ZXJ5IHNjYWxhciBwcm9wZXJ0eSB0byB0aGUgaGFuZGxlciBhcyBhIHN0cmluZy5cbiAqL1xuXG4vKiogQ29waWVzIGEgY29kZSB6aXAgaW50byB0aGUgc3RhY2sncyBjb2RlIGJ1Y2tldCBhbmQgcmV0dXJucyB0aGUgb2JqZWN0J3MgdmVyc2lvbi4gKi9cbmV4cG9ydCBjb25zdCBDT0RFX1JFU09VUkNFX1RZUEUgPSAnQ3VzdG9tOjpMYW1iZGFXZWJDb2RlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2RlUHJvcGVydGllcyB7XG4gIHJlYWRvbmx5IFNvdXJjZUJ1Y2tldDogc3RyaW5nO1xuICByZWFkb25seSBTb3VyY2VLZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgU291cmNlVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgRGVzdGluYXRpb25CdWNrZXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgRGVzdGluYXRpb25LZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2RlQXR0cmlidXRlcyB7XG4gIHJlYWRvbmx5IFZlcnNpb25JZDogc3RyaW5nO1xufVxuXG4vKiogRW5zdXJlcyBvbmUgbG9nIGdyb3VwIChpbiBhbnkgcmVnaW9uKSBleGlzdHMgd2l0aCB0aGUgZ2l2ZW4gcmV0ZW50aW9uLCBhbmQgcmVtb3ZlcyBpdCBvbiBkZWxldGUuICovXG5leHBvcnQgY29uc3QgTE9HX0dST1VQX1JFU09VUkNFX1RZUEUgPSAnQ3VzdG9tOjpMYW1iZGFXZWJMb2dHcm91cCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nR3JvdXBQcm9wZXJ0aWVzIHtcbiAgcmVhZG9ubHkgUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IExvZ0dyb3VwTmFtZTogc3RyaW5nO1xuICAvKiogRGF5cywgb3IgJ0luZmluaXRlJyBmb3Igbm8gcmV0ZW50aW9uLiAqL1xuICByZWFkb25seSBSZXRlbnRpb25JbkRheXM6IHN0cmluZztcbiAgcmVhZG9ubHkgUmVtb3ZhbFBvbGljeTogJ3JldGFpbicgfCAnZGVzdHJveSc7XG4gIC8qKiBUaGUgQVJOIG9mIGEgS01TIGtleSBpbiB0aGUgZ3JvdXAncyByZWdpb24gdG8gZW5jcnlwdCBpdCB3aXRoOyBub25lIG1lYW5zIHRoZSBzZXJ2aWNlJ3Mgb3duIGVuY3J5cHRpb24uICovXG4gIHJlYWRvbmx5IEttc0tleUlkPzogc3RyaW5nO1xuICAvKiogU2Vjb25kcyB0byB3YWl0IGJlZm9yZSBkZWxldGluZywgc28gZW52aXJvbm1lbnRzIHN0aWxsIHNodXR0aW5nIGRvd24gY2FuIGZsdXNoIHRoZWlyIGxhc3QgbGluZXMuICovXG4gIHJlYWRvbmx5IEZsdXNoV2FpdFNlY29uZHM6IHN0cmluZztcbiAgLyoqIFNlY29uZHMgdG8gd2FpdCBiZWZvcmUgY2hlY2tpbmcgb25jZSBtb3JlIHRoYXQgdGhlIHNlcnZpY2UgaGFzbid0IHJlLWNyZWF0ZWQgdGhlIGdyb3VwLiAqL1xuICByZWFkb25seSBSZWNoZWNrV2FpdFNlY29uZHM6IHN0cmluZztcbn1cblxuLyoqIFJlYWRzIGFuIGVuZHBvaW50J3MgcGVyLXJlZ2lvbiBkb21haW4gbmFtZXMsIHdoaWNoIENsb3VkRm9ybWF0aW9uIGNhbid0IGluZGV4IG91dCBvZiBgUmVnaW9uYWxFbmRwb2ludHNgLiAqL1xuZXhwb3J0IGNvbnN0IEVORFBPSU5UX0xPT0tVUF9SRVNPVVJDRV9UWVBFID0gJ0N1c3RvbTo6TGFtYmRhV2ViRW5kcG9pbnRMb29rdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50TG9va3VwUHJvcGVydGllcyB7XG4gIHJlYWRvbmx5IEZ1bmN0aW9uQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IEVuZHBvaW50TmFtZTogc3RyaW5nO1xuICAvKiogQ2hhbmdlcyB3aGVuZXZlciB0aGUgZW5kcG9pbnQgaXMgcmVwbGFjZWQsIHNvIHRoZSBsb29rdXAgcnVucyBhZ2Fpbi4gKi9cbiAgcmVhZG9ubHkgRW5kcG9pbnRBcm46IHN0cmluZztcbn1cblxuLyoqIEF0dHJpYnV0ZSBuYW1lIGhvbGRpbmcgdGhlIGRvbWFpbiBvZiBvbmUgcmVnaW9uLCBlLmcuIGBEb21haW4udXMtZWFzdC0xYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpb25hbERvbWFpbkF0dHJpYnV0ZShyZWdpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgRG9tYWluLiR7cmVnaW9ufWA7XG59XG5cbi8qKiBEZWxldGVzIGEgZnVuY3Rpb24ncyBvbGRlc3QgcmV2aXNpb25zIGJleW9uZCBhIGNvdW50LCBleGNlcHQgdGhvc2UgdGhhdCBhcmUgaW4gdXNlIG9yIG1heSBiZSByb2xsZWQgYmFjayB0by4gKi9cbmV4cG9ydCBjb25zdCBSRVZJU0lPTl9DTEVBTlVQX1JFU09VUkNFX1RZUEUgPSAnQ3VzdG9tOjpMYW1iZGFXZWJSZXZpc2lvbkNsZWFudXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJldmlzaW9uQ2xlYW51cFByb3BlcnRpZXMge1xuICByZWFkb25seSBGdW5jdGlvbkFybjogc3RyaW5nO1xuICAvKiogSG93IG1hbnkgb2YgdGhlIG5ld2VzdCByZXZpc2lvbnMgdG8ga2VlcC4gKi9cbiAgcmVhZG9ubHkgS2VlcDogc3RyaW5nO1xuICAvKipcbiAgICogUmV2aXNpb25zIHRoZSB0ZW1wbGF0ZSB1c2VzICh0aGUgY3VycmVudCBvbmUgYW5kIGFueSBhbiBlbmRwb2ludCByb3V0ZXMgdG8pLiBBbHdheXMga2VwdCwgYW5kIG9uIGFuIHVwZGF0ZVxuICAgKiB0aGUgcHJldmlvdXMgdGVtcGxhdGUncyBhcmUga2VwdCB0b286IHRoZXkncmUgd2hhdCBhIHJvbGxiYWNrIHJvdXRlcyBiYWNrIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgUmV2aXNpb25JZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE1vdmVzIGFuIGVuZHBvaW50J3MgdHJhZmZpYyB0byBhIHJldmlzaW9uIGluIHN0ZXBzLCB3YXRjaGluZyBhbGFybXMgKGNhbmFyeSBhbmQgbGluZWFyIGRlcGxveW1lbnRzKS5cbiAqIFNlcnZlZCBieSB0aGUgZGVwbG95bWVudCBwcm92aWRlciAoYGhhbmRsZXJzL3dlYi1mdW5jdGlvbi1kZXBsb3ltZW50YCksIG5vdCB0aGUgc2hhcmVkIHByb3ZpZGVyOiBpdCBjYW4gcnVuIGZvciB1cCB0byBhbiBob3VyLlxuICovXG5leHBvcnQgY29uc3QgVFJBRkZJQ19TSElGVF9SRVNPVVJDRV9UWVBFID0gJ0N1c3RvbTo6TGFtYmRhV2ViVHJhZmZpY1NoaWZ0JztcblxuZXhwb3J0IGludGVyZmFjZSBUcmFmZmljU2hpZnRQcm9wZXJ0aWVzIHtcbiAgcmVhZG9ubHkgRnVuY3Rpb25Bcm46IHN0cmluZztcbiAgcmVhZG9ubHkgRW5kcG9pbnROYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgcmV2aXNpb24gdGhhdCBlbmRzIHVwIHdpdGggYWxsIG9mIHRoZSBlbmRwb2ludCdzIHRyYWZmaWMuICovXG4gIHJlYWRvbmx5IFJldmlzaW9uSWQ6IHN0cmluZztcbiAgLyoqIFRoZSByZXZpc2lvbidzIHNoYXJlIG9mIHRyYWZmaWMgYXQgZWFjaCBzdGVwLCBpbiBwZXJjZW50LCBjb21tYS1zZXBhcmF0ZWQ7IHRoZSBsYXN0IGlzIDEwMC4gKi9cbiAgcmVhZG9ubHkgU3RlcHM6IHN0cmluZztcbiAgLyoqIFNlY29uZHMgZWFjaCBzdGVwIHNlcnZlcyAoY291bnRlZCBmcm9tIHdoZW4gaXRzIHVwZGF0ZSBzdGFydGVkKSBiZWZvcmUgdGhlIG5leHQuICovXG4gIHJlYWRvbmx5IFdhaXRTZWNvbmRzOiBzdHJpbmc7XG4gIC8qKiBBbGFybXMgKGluIGFueSByZWdpb24pIHRoYXQgc3RvcCB0aGUgZGVwbG95bWVudCBhbmQgcmVzdG9yZSB0aGUgcHJldmlvdXMgd2VpZ2h0cy4gKi9cbiAgcmVhZG9ubHkgQWxhcm1Bcm5zPzogc3RyaW5nW107XG4gIC8qKiBIYXNoIG9mIHRoZSBlbmRwb2ludCdzIG90aGVyIHNldHRpbmdzOiBhbnkgZW5kcG9pbnQgY2hhbmdlIHJlLWNoZWNrcyBpdHMgdHJhZmZpYyBiZWZvcmUgQ2xvdWRGb3JtYXRpb24gd3JpdGVzIGl0LiAqL1xuICByZWFkb25seSBFbmRwb2ludENvbmZpZzogc3RyaW5nO1xufVxuXG4vKiogV2hhdCBgb25FdmVudGAgaGFuZHMgdG8gYGlzQ29tcGxldGVgICh0aGUgUHJvdmlkZXIgZnJhbWV3b3JrIHBhc3NlcyBpdCBhcyBgRGF0YWApLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFmZmljU2hpZnRTdGF0ZSB7XG4gIC8qKiBgbm9uZWA6IG5vdGhpbmcgdG8gZG87IGBzaGlmdGA6IG1vdmluZyBpbiBzdGVwczsgYHN3aXRjaGA6IGFsbCBhdCBvbmNlLCB3aXRob3V0IGFsYXJtcyAoc3RhY2sgcm9sbGJhY2spLiAqL1xuICByZWFkb25seSBBY3Rpb246ICdub25lJyB8ICdzaGlmdCcgfCAnc3dpdGNoJztcbiAgLyoqIGBzaGlmdGA6IHRoZSBlbmRwb2ludCdzIHdlaWdodHMgYmVmb3JlIHRoZSBkZXBsb3ltZW50IChKU09OIGBbe3JldmlzaW9uSWQsIHdlaWdodH1dYCksIHJlc3RvcmVkIHdoZW4gYW4gYWxhcm0gZmlyZXMuICovXG4gIHJlYWRvbmx5IFByZXZpb3VzV2VpZ2h0cz86IHN0cmluZztcbiAgLyoqIGBzd2l0Y2hgOiB0aGUgd2VpZ2h0cyBiZWluZyB3cml0dGVuIChKU09OIGBbe3JldmlzaW9uSWQsIHdlaWdodH1dYCkuICovXG4gIHJlYWRvbmx5IFRhcmdldFdlaWdodHM/OiBzdHJpbmc7XG59XG5cbi8qKiBDcmVhdGVzIGEgQ2xvdWRXYXRjaCBtZXRyaWMgYWxhcm0gaW4gYW55IHJlZ2lvbiAoQ2xvdWRGb3JtYXRpb24gb25seSBjcmVhdGVzIGFsYXJtcyBpbiB0aGUgc3RhY2sncyByZWdpb24pLiAqL1xuLyoqIFByZWZpeCBvZiBldmVyeSBhbGFybSB0aGlzIGxpYnJhcnkgY3JlYXRlcyBvdXRzaWRlIHRoZSBzdGFjaydzIHJlZ2lvbjsgdGhlIHByb3ZpZGVyJ3MgSUFNIGlzIHNjb3BlZCB0byBpdC4gKi9cbmV4cG9ydCBjb25zdCBBTEFSTV9OQU1FX1BSRUZJWCA9ICdMYW1iZGFXZWItJztcbmV4cG9ydCBjb25zdCBSRUdJT05BTF9BTEFSTV9SRVNPVVJDRV9UWVBFID0gJ0N1c3RvbTo6TGFtYmRhV2ViQWxhcm0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lvbmFsQWxhcm1Qcm9wZXJ0aWVzIHtcbiAgcmVhZG9ubHkgUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IEFsYXJtTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBBbGFybURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBQdXRNZXRyaWNBbGFybSdzIGBNZXRyaWNzYCwgYXMgSlNPTi4gKi9cbiAgcmVhZG9ubHkgTWV0cmljczogc3RyaW5nO1xuICByZWFkb25seSBUaHJlc2hvbGQ6IHN0cmluZztcbiAgcmVhZG9ubHkgRXZhbHVhdGlvblBlcmlvZHM6IHN0cmluZztcbiAgLyoqIFB1dE1ldHJpY0FsYXJtJ3MgYENvbXBhcmlzb25PcGVyYXRvcmAuICovXG4gIHJlYWRvbmx5IENvbXBhcmlzb25PcGVyYXRvcjogc3RyaW5nO1xuICAvKiogUHV0TWV0cmljQWxhcm0ncyBgVHJlYXRNaXNzaW5nRGF0YWAuICovXG4gIHJlYWRvbmx5IFRyZWF0TWlzc2luZ0RhdGE6IHN0cmluZztcbn1cblxuLyoqIEVtcHRpZXMgdGhlIHN0YWNrJ3MgY29kZSBidWNrZXQgKGV2ZXJ5IG9iamVjdCB2ZXJzaW9uIGFuZCBkZWxldGUgbWFya2VyKSB3aGVuIHRoZSBzdGFjayBkZWxldGVzIGl0LiAqL1xuZXhwb3J0IGNvbnN0IENPREVfQlVDS0VUX0NMRUFOVVBfUkVTT1VSQ0VfVFlQRSA9ICdDdXN0b206OkxhbWJkYVdlYkNvZGVCdWNrZXRDbGVhbnVwJztcblxuLyoqXG4gKiBUYWcgb24gdGhlIGNvZGUgYnVja2V0IHRoYXQgbGV0cyB0aGUgY2xlYW51cCBlbXB0eSBpdC4gQSByb2xsYmFjayByZXZlcnRzIHRoZSBidWNrZXQncyB0YWdzIGJlZm9yZSBpdCBkZWxldGVzXG4gKiByZXNvdXJjZXMgdGhlIGZhaWxlZCB1cGRhdGUgY3JlYXRlZCwgc28gYSBjbGVhbnVwIHJlc291cmNlIGFkZGVkIHRvIGFuIGV4aXN0aW5nIGJ1Y2tldCBuZXZlciBlbXB0aWVzIGl0IG9uIHJvbGxiYWNrLlxuICovXG5leHBvcnQgY29uc3QgRU1QVFlfT05fREVMRVRFX1RBRyA9IHsga2V5OiAnY2RrLWxhbWJkYS13ZWI6ZW1wdHktb24tZGVsZXRlJywgdmFsdWU6ICd0cnVlJyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVCdWNrZXRDbGVhbnVwUHJvcGVydGllcyB7XG4gIHJlYWRvbmx5IEJ1Y2tldE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBXcml0ZXMgb25lIHN0YWNrJ3Mgc3RhdGVtZW50cyBpbnRvIGEgV2ViIEZ1bmN0aW9uJ3MgcmVzb3VyY2UgcG9saWN5LCBrZWVwaW5nIGV2ZXJ5IG90aGVyIHdyaXRlcidzIHN0YXRlbWVudHNcbiAqIChXZWIgRnVuY3Rpb25zIGhhdmUgbm8gQWRkUGVybWlzc2lvbjogdGhlIHBvbGljeSBpcyBhIHNpbmdsZSBkb2N1bWVudCwgc28gd3JpdGVycyBtZXJnZSBpbnRvIGl0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFU09VUkNFX1BPTElDWV9TVEFURU1FTlRTX1JFU09VUkNFX1RZUEUgPSAnQ3VzdG9tOjpMYW1iZGFXZWJSZXNvdXJjZVBvbGljeVN0YXRlbWVudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUG9saWN5U3RhdGVtZW50c1Byb3BlcnRpZXMge1xuICByZWFkb25seSBGdW5jdGlvbkFybjogc3RyaW5nO1xuICAvKiogVGhlIHN0YXRlbWVudHMgdGhpcyByZXNvdXJjZSBvd25zLCBlYWNoIHdpdGggYSBTaWQgdW5pcXVlIGluIHRoZSBmdW5jdGlvbidzIHBvbGljeS4gKi9cbiAgcmVhZG9ubHkgUG9saWN5OiB7IHJlYWRvbmx5IFN0YXRlbWVudDogUmVhZG9ubHlBcnJheTx7IHJlYWRvbmx5IFNpZDogc3RyaW5nOyByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+IH07XG59XG4iXX0=
|
|
@@ -11,7 +11,7 @@ const MAX_STEPS = 20;
|
|
|
11
11
|
* How an endpoint moves its traffic to a new revision.
|
|
12
12
|
*/
|
|
13
13
|
class WebFunctionDeployment {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionDeployment", version: "0.1.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionDeployment", version: "0.1.12" };
|
|
15
15
|
/**
|
|
16
16
|
* All traffic moves to the new revision at once, as soon as it's ready (the default).
|
|
17
17
|
*/
|
|
@@ -53,7 +53,7 @@ const web_function_grants_1 = require("./web-function-grants");
|
|
|
53
53
|
* Endpoints are created only through `WebFunction`, which owns their log groups in every region, so the constructor is private.
|
|
54
54
|
*/
|
|
55
55
|
class WebFunctionEndpoint extends constructs_1.Construct {
|
|
56
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionEndpoint", version: "0.1.
|
|
56
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionEndpoint", version: "0.1.12" };
|
|
57
57
|
/**
|
|
58
58
|
* Creates an endpoint of a Web Function. Used by `WebFunction`.
|
|
59
59
|
*
|
|
@@ -42,7 +42,7 @@ const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
|
42
42
|
class WebFunctionGrants {
|
|
43
43
|
endpointArns;
|
|
44
44
|
webFunction;
|
|
45
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionGrants", version: "0.1.
|
|
45
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionGrants", version: "0.1.12" };
|
|
46
46
|
/**
|
|
47
47
|
* @internal
|
|
48
48
|
*/
|
|
@@ -54,7 +54,7 @@ const OPT_IN_REGIONS = [
|
|
|
54
54
|
* and only your distribution may call the endpoint. `new WebFunctionOrigin(endpoint)` is for a public (`NONE`) endpoint.
|
|
55
55
|
*/
|
|
56
56
|
class WebFunctionOrigin extends cloudfront.OriginBase {
|
|
57
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionOrigin", version: "0.1.
|
|
57
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionOrigin", version: "0.1.12" };
|
|
58
58
|
/**
|
|
59
59
|
* An origin for an `AWS_IAM` endpoint, with origin access control: CloudFront signs every request to the endpoint
|
|
60
60
|
* (`always-amz-auth`, which keeps the viewer's `Authorization` header for your application), and the function's
|
|
@@ -11,7 +11,7 @@ const constructs_1 = require("constructs");
|
|
|
11
11
|
* only revisions within `revisionRetention`, or that an endpoint routes to, are kept.
|
|
12
12
|
*/
|
|
13
13
|
class WebFunctionRevision extends constructs_1.Construct {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionRevision", version: "0.1.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionRevision", version: "0.1.12" };
|
|
15
15
|
/**
|
|
16
16
|
* References an existing revision of `webFunction`, e.g. to pin an endpoint to it or split traffic with it.
|
|
17
17
|
*/
|
package/lib/web-function.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Duration, type IResource, RemovalPolicy, Resource } from 'aws-cdk-lib';
|
|
2
2
|
import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';
|
|
3
3
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
4
|
+
import * as kms from 'aws-cdk-lib/aws-kms';
|
|
4
5
|
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
5
6
|
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
6
7
|
import { Construct } from 'constructs';
|
|
@@ -56,6 +57,20 @@ export interface WebFunctionOptions {
|
|
|
56
57
|
* @default - a role trusting `lambda.amazonaws.com` with `AWSLambdaBasicExecutionRole`
|
|
57
58
|
*/
|
|
58
59
|
readonly role?: iam.IRole;
|
|
60
|
+
/**
|
|
61
|
+
* A customer managed KMS key for the function's revisions: their code and environment variables.
|
|
62
|
+
*
|
|
63
|
+
* A `PER_REGION` or `MULTI_REGION` endpoint needs a **multi-Region key** with a replica in every region it serves
|
|
64
|
+
* from, and each replica's policy must allow Lambda to decrypt (see `encryptionKeyPolicyStatement()`). A key defined
|
|
65
|
+
* in this app gets that statement added to its own policy.
|
|
66
|
+
*
|
|
67
|
+
* Changing the key creates a new revision. Earlier revisions, including the ones kept as rollback targets, still
|
|
68
|
+
* need their key.
|
|
69
|
+
* [disable-awslint:prefer-ref-interface]
|
|
70
|
+
*
|
|
71
|
+
* @default - an AWS owned key
|
|
72
|
+
*/
|
|
73
|
+
readonly encryptionKey?: kms.IKey;
|
|
59
74
|
/**
|
|
60
75
|
* Environment variables. Names starting with `AWS_` are reserved.
|
|
61
76
|
*
|
|
@@ -90,6 +105,19 @@ export interface WebFunctionOptions {
|
|
|
90
105
|
* @default RemovalPolicy.RETAIN
|
|
91
106
|
*/
|
|
92
107
|
readonly logRemovalPolicy?: RemovalPolicy;
|
|
108
|
+
/**
|
|
109
|
+
* A customer managed KMS key for the function's log groups, in every region it serves from.
|
|
110
|
+
*
|
|
111
|
+
* CloudWatch Logs needs a key in each group's region: for regions other than the key's own, the construct uses the
|
|
112
|
+
* replica of a **multi-Region key** there (the same key ID). Each key's policy must allow CloudWatch Logs in its
|
|
113
|
+
* region (see `logEncryptionKeyPolicyStatement()`). A key defined in this app gets that statement for its own region.
|
|
114
|
+
*
|
|
115
|
+
* Removing the key decrypts nothing: the groups keep their existing events encrypted with it.
|
|
116
|
+
* [disable-awslint:prefer-ref-interface]
|
|
117
|
+
*
|
|
118
|
+
* @default - CloudWatch Logs' own encryption
|
|
119
|
+
*/
|
|
120
|
+
readonly logEncryptionKey?: kms.IKey;
|
|
93
121
|
/**
|
|
94
122
|
* The minimum level of application logs to keep.
|
|
95
123
|
*
|
|
@@ -325,6 +353,10 @@ export declare class WebFunction extends WebFunctionBase implements iam.IGrantab
|
|
|
325
353
|
readonly grants: WebFunctionGrants;
|
|
326
354
|
/** The execution role. */
|
|
327
355
|
readonly role: iam.IRole;
|
|
356
|
+
/** The customer managed key of the function's revisions, if any. */
|
|
357
|
+
readonly encryptionKey?: kms.IKey;
|
|
358
|
+
/** The customer managed key of the function's log groups, if any. */
|
|
359
|
+
readonly logEncryptionKey?: kms.IKey;
|
|
328
360
|
/** The principal to grant permissions to (the execution role). */
|
|
329
361
|
readonly grantPrincipal: iam.IPrincipal;
|
|
330
362
|
/**
|
|
@@ -368,6 +400,30 @@ export declare class WebFunction extends WebFunctionBase implements iam.IGrantab
|
|
|
368
400
|
* @param id the statement ID (`Sid`): letters and digits, unique within the function
|
|
369
401
|
*/
|
|
370
402
|
addPermission(id: string, permission: WebFunctionPermission): void;
|
|
403
|
+
/**
|
|
404
|
+
* The key-policy statement Lambda needs to start this function's environments with `encryptionKey`: `kms:Decrypt` for
|
|
405
|
+
* `lambda.amazonaws.com`, limited to this function's revisions (`aws:SourceArn` and the encryption context Lambda sets).
|
|
406
|
+
*
|
|
407
|
+
* It's added to `encryptionKey` when the key is defined in this app. Add it to every replica of a multi-Region key
|
|
408
|
+
* yourself: replicas don't share their primary's policy.
|
|
409
|
+
*/
|
|
410
|
+
encryptionKeyPolicyStatement(): iam.PolicyStatement;
|
|
411
|
+
/**
|
|
412
|
+
* The key-policy statement CloudWatch Logs needs in `region` to encrypt this function's log groups there with
|
|
413
|
+
* `logEncryptionKey`, limited to those groups (`kms:EncryptionContext:aws:logs:arn`).
|
|
414
|
+
*
|
|
415
|
+
* It's added to `logEncryptionKey` for the key's own region when the key is defined in this app. Add it to the
|
|
416
|
+
* replica in every other region the function serves from yourself: replicas don't share their primary's policy.
|
|
417
|
+
*
|
|
418
|
+
* @param region the region of the key or replica
|
|
419
|
+
*/
|
|
420
|
+
logEncryptionKeyPolicyStatement(region: string): iam.PolicyStatement;
|
|
421
|
+
/** Regional and multi-region endpoints need a multi-Region key: otherwise their other regions fail to activate. */
|
|
422
|
+
private validateEncryptionKey;
|
|
423
|
+
/** Log groups outside the key's region need the replica of a multi-Region key there. */
|
|
424
|
+
private validateLogEncryptionKey;
|
|
425
|
+
/** The key for a log group in `region`: the key itself in its own region, otherwise its replica there (same key ID). */
|
|
426
|
+
private logKeyArnIn;
|
|
371
427
|
private createEndpoint;
|
|
372
428
|
/**
|
|
373
429
|
* The default execution role: write to the function's own log groups only (the home region's and every region's
|