serverless-kms-alias 2.0.4 → 2.2.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/.devcontainer/devcontainer.json +16 -0
- package/CHANGELOG.md +9 -0
- package/README.md +23 -2
- package/dist/index.js +17 -1
- package/dist/types/KmsAliasSettings.js +3 -0
- package/dist/types/index.js +2 -1
- package/package.json +16 -16
- package/src/index.ts +16 -0
- package/src/types/KmsAliasSettings.ts +3 -0
- package/src/types/ServerlessInstance.ts +7 -0
- package/src/types/index.ts +1 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "serverless-kms-alias",
|
|
3
|
+
"features": {
|
|
4
|
+
"ghcr.io/devcontainers/features/node:1": {
|
|
5
|
+
"version": "lts"
|
|
6
|
+
}
|
|
7
|
+
},
|
|
8
|
+
"customizations": {
|
|
9
|
+
"vscode": {
|
|
10
|
+
"extensions": [
|
|
11
|
+
"EditorConfig.EditorConfig"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"postCreateCommand": "npm install"
|
|
16
|
+
}
|
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ service: foo
|
|
|
18
18
|
provider:
|
|
19
19
|
name: aws
|
|
20
20
|
kmsKeyArn: '${kms:alias/aws/lambda}'
|
|
21
|
-
runtime:
|
|
21
|
+
runtime: nodejs16.x
|
|
22
22
|
|
|
23
23
|
plugins:
|
|
24
24
|
- serverless-kms-alias
|
|
@@ -34,7 +34,7 @@ functions:
|
|
|
34
34
|
service: foo
|
|
35
35
|
provider:
|
|
36
36
|
name: aws
|
|
37
|
-
runtime:
|
|
37
|
+
runtime: nodejs16.x
|
|
38
38
|
|
|
39
39
|
plugins:
|
|
40
40
|
- serverless-kms-alias
|
|
@@ -44,3 +44,24 @@ functions:
|
|
|
44
44
|
handler: foo.handler
|
|
45
45
|
kmsKeyArn: '${kms:arn:aws:kms:${aws:region}:${aws:accountId}:alias/aws/lambda}'
|
|
46
46
|
```
|
|
47
|
+
|
|
48
|
+
### Example - Disable the plugin
|
|
49
|
+
|
|
50
|
+
```yaml
|
|
51
|
+
service: foo
|
|
52
|
+
provider:
|
|
53
|
+
name: aws
|
|
54
|
+
runtime: nodejs16.x
|
|
55
|
+
|
|
56
|
+
plugins:
|
|
57
|
+
- serverless-kms-alias
|
|
58
|
+
|
|
59
|
+
custom:
|
|
60
|
+
kmsAlias:
|
|
61
|
+
enabled: false
|
|
62
|
+
|
|
63
|
+
functions:
|
|
64
|
+
foo:
|
|
65
|
+
handler: foo.handler
|
|
66
|
+
kmsKeyArn: '${kms:arn:aws:kms:${aws:region}:${aws:accountId}:alias/aws/lambda}'
|
|
67
|
+
```
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,22 @@ class KmsAliasPlugin {
|
|
|
8
8
|
if (!/^(alias\/[a-zA-Z]|arn:aws:kms:[\w-]*:[\d]*:alias)/i.test(address)) {
|
|
9
9
|
throw new Error(`Expected variable in the form of 'kms:alias/foo'`);
|
|
10
10
|
}
|
|
11
|
+
if (serverless.service?.custom?.kmsAlias?.enabled != null) {
|
|
12
|
+
try {
|
|
13
|
+
const isEnabled = serverless.service.custom.kmsAlias.enabled ? Boolean(JSON.parse(`${serverless.service.custom.kmsAlias.enabled}`.toLowerCase())) : false;
|
|
14
|
+
if (!isEnabled) {
|
|
15
|
+
serverless.cli.log(`Info: KMS Alias plugin not enabled`);
|
|
16
|
+
return {
|
|
17
|
+
value: address,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch (ex) {
|
|
22
|
+
throw new Error(`Unable to get enabled configuration for kms alias.`, {
|
|
23
|
+
cause: ex,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
11
27
|
serverless.cli.log(`Info: Fetching KMS key for alias: ${address}`);
|
|
12
28
|
const client = new client_kms_1.KMSClient({
|
|
13
29
|
...serverless.providers.aws.getCredentials(),
|
|
@@ -34,4 +50,4 @@ class KmsAliasPlugin {
|
|
|
34
50
|
}
|
|
35
51
|
}
|
|
36
52
|
module.exports = KmsAliasPlugin;
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9EQUFvRTtBQWtCcEUsTUFBTSxjQUFjO0lBR2xCLFlBQW1CLFVBQThCO1FBQy9DLElBQUksQ0FBQyw2QkFBNkIsR0FBRztZQUNuQyxHQUFHLEVBQUU7Z0JBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBaUI7b0JBQ3RDLElBQUksQ0FBQyxvREFBb0QsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztxQkFDckU7b0JBRUQsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRTt3QkFDekQsSUFBSTs0QkFDRixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzs0QkFDMUosSUFBSSxDQUFDLFNBQVMsRUFBRTtnQ0FDZCxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2dDQUN6RCxPQUFPO29DQUNMLEtBQUssRUFBRSxPQUFPO2lDQUNmLENBQUM7NkJBQ0g7eUJBQ0Y7d0JBQUMsT0FBTyxFQUFFLEVBQUU7NEJBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsRUFBRTtnQ0FDcEUsS0FBSyxFQUFFLEVBQUU7NkJBQ1YsQ0FBQyxDQUFDO3lCQUNKO3FCQUNGO29CQUVELFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUVuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLHNCQUFTLENBQUM7d0JBQzNCLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFO3dCQUM1QyxNQUFNLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFO3FCQUM3QyxDQUFDLENBQUM7b0JBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBa0IsQ0FBQzt3QkFDckMsS0FBSyxFQUFFLE9BQU87cUJBQ2YsQ0FBQyxDQUFDO29CQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFNUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztvQkFFekMsSUFBSSxDQUFDLFdBQVcsRUFBRTt3QkFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsT0FBTyxFQUFFLENBQUMsQ0FBQztxQkFDekU7b0JBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7d0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLE9BQU8sRUFBRSxDQUFDLENBQUM7cUJBQ3RFO29CQUVELFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxPQUFPLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBRXJGLE9BQU87d0JBQ0wsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHO3FCQUN2QixDQUFDO2dCQUNKLENBQUM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxpQkFBUyxjQUFjLENBQUMifQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS21zQWxpYXNTZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9LbXNBbGlhc1NldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
package/dist/types/index.js
CHANGED
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./KmsAliasSettings"), exports);
|
|
17
18
|
__exportStar(require("./ServerlessInstance"), exports);
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFtQztBQUNuQyx1REFBcUMifQ==
|
package/package.json
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "serverless-kms-alias",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">= 14"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@aws-sdk/client-kms": "^3.
|
|
8
|
+
"@aws-sdk/client-kms": "^3.266.1"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@types/lodash": "4.14.191",
|
|
12
|
-
"@types/serverless": "3.12.
|
|
13
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
14
|
-
"@typescript-eslint/parser": "5.
|
|
15
|
-
"eslint": "8.
|
|
12
|
+
"@types/serverless": "3.12.10",
|
|
13
|
+
"@typescript-eslint/eslint-plugin": "5.51.0",
|
|
14
|
+
"@typescript-eslint/parser": "5.51.0",
|
|
15
|
+
"eslint": "8.33.0",
|
|
16
16
|
"eslint-config-airbnb-base": "15.0.0",
|
|
17
17
|
"eslint-config-airbnb-typescript": "17.0.0",
|
|
18
|
-
"eslint-config-prettier": "8.
|
|
19
|
-
"eslint-plugin-import": "2.
|
|
20
|
-
"eslint-plugin-jsdoc": "39.
|
|
18
|
+
"eslint-config-prettier": "8.6.0",
|
|
19
|
+
"eslint-plugin-import": "2.27.5",
|
|
20
|
+
"eslint-plugin-jsdoc": "39.8.0",
|
|
21
21
|
"eslint-plugin-prettier": "4.2.1",
|
|
22
22
|
"eslint-plugin-promise": "6.1.1",
|
|
23
|
-
"eslint-plugin-security": "1.
|
|
24
|
-
"husky": "8.0.
|
|
25
|
-
"lint-staged": "13.1.
|
|
26
|
-
"markdownlint-cli": "0.
|
|
23
|
+
"eslint-plugin-security": "1.7.1",
|
|
24
|
+
"husky": "8.0.3",
|
|
25
|
+
"lint-staged": "13.1.1",
|
|
26
|
+
"markdownlint-cli": "0.33.0",
|
|
27
27
|
"npm-run-all": "4.1.5",
|
|
28
28
|
"pinst": "3.0.0",
|
|
29
|
-
"prettier": "2.8.
|
|
30
|
-
"prettier-plugin-packagejson": "2.
|
|
31
|
-
"typescript": "4.9.
|
|
29
|
+
"prettier": "2.8.4",
|
|
30
|
+
"prettier-plugin-packagejson": "2.4.2",
|
|
31
|
+
"typescript": "4.9.5"
|
|
32
32
|
},
|
|
33
33
|
"main": "dist/index.js",
|
|
34
34
|
"license": "MIT",
|
package/src/index.ts
CHANGED
|
@@ -27,6 +27,22 @@ class KmsAliasPlugin {
|
|
|
27
27
|
throw new Error(`Expected variable in the form of 'kms:alias/foo'`);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
if (serverless.service?.custom?.kmsAlias?.enabled != null) {
|
|
31
|
+
try {
|
|
32
|
+
const isEnabled = serverless.service.custom.kmsAlias.enabled ? Boolean(JSON.parse(`${serverless.service.custom.kmsAlias.enabled}`.toLowerCase())) : false;
|
|
33
|
+
if (!isEnabled) {
|
|
34
|
+
serverless.cli.log(`Info: KMS Alias plugin not enabled`);
|
|
35
|
+
return {
|
|
36
|
+
value: address,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
} catch (ex) {
|
|
40
|
+
throw new Error(`Unable to get enabled configuration for kms alias.`, {
|
|
41
|
+
cause: ex,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
30
46
|
serverless.cli.log(`Info: Fetching KMS key for alias: ${address}`);
|
|
31
47
|
|
|
32
48
|
const client = new KMSClient({
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { AwsAuthInputConfig } from '@aws-sdk/middleware-signing/dist-types/configurations';
|
|
2
2
|
|
|
3
|
+
import type { KmsAliasSettings } from './KmsAliasSettings';
|
|
4
|
+
|
|
3
5
|
export interface ServerlessInstance {
|
|
4
6
|
providers: {
|
|
5
7
|
aws: {
|
|
@@ -7,6 +9,11 @@ export interface ServerlessInstance {
|
|
|
7
9
|
getRegion(): string;
|
|
8
10
|
};
|
|
9
11
|
};
|
|
12
|
+
service: {
|
|
13
|
+
custom: {
|
|
14
|
+
kmsAlias?: KmsAliasSettings;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
10
17
|
cli: {
|
|
11
18
|
log(str: string, entity?: string): void;
|
|
12
19
|
};
|
package/src/types/index.ts
CHANGED