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.
@@ -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
@@ -1,5 +1,14 @@
1
1
  # Change Log
2
2
 
3
+ ## 2.2.0 - 2023-02-08
4
+
5
+ - Replace enable/disable by stage with `enabled`
6
+
7
+ ## 2.1.0 - 2023-02-08
8
+
9
+ - Add configuration to enable for explicit stages. Fix #3
10
+ - Update npms
11
+
3
12
  ## 2.0.4 - 2022-12-06
4
13
 
5
14
  - Update npms
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: nodejs14.x
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: nodejs14.x
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9EQUFvRTtBQWtCcEUsTUFBTSxjQUFjO0lBR2xCLFlBQW1CLFVBQThCO1FBQy9DLElBQUksQ0FBQyw2QkFBNkIsR0FBRztZQUNuQyxHQUFHLEVBQUU7Z0JBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBaUI7b0JBQ3RDLElBQUksQ0FBQyxvREFBb0QsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztxQkFDckU7b0JBRUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMscUNBQXFDLE9BQU8sRUFBRSxDQUFDLENBQUM7b0JBRW5FLE1BQU0sTUFBTSxHQUFHLElBQUksc0JBQVMsQ0FBQzt3QkFDM0IsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUU7d0JBQzVDLE1BQU0sRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7cUJBQzdDLENBQUMsQ0FBQztvQkFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUFrQixDQUFDO3dCQUNyQyxLQUFLLEVBQUUsT0FBTztxQkFDZixDQUFDLENBQUM7b0JBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUU1QyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO29CQUV6QyxJQUFJLENBQUMsV0FBVyxFQUFFO3dCQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxPQUFPLEVBQUUsQ0FBQyxDQUFDO3FCQUN6RTtvQkFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTt3QkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsT0FBTyxFQUFFLENBQUMsQ0FBQztxQkFDdEU7b0JBRUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0NBQWtDLE9BQU8sTUFBTSxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFFckYsT0FBTzt3QkFDTCxLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUc7cUJBQ3ZCLENBQUM7Z0JBQ0osQ0FBQzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELGlCQUFTLGNBQWMsQ0FBQyJ9
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==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFxQyJ9
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.4",
3
+ "version": "2.2.0",
4
4
  "engines": {
5
5
  "node": ">= 14"
6
6
  },
7
7
  "dependencies": {
8
- "@aws-sdk/client-kms": "^3.224.0"
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.9",
13
- "@typescript-eslint/eslint-plugin": "5.45.1",
14
- "@typescript-eslint/parser": "5.45.1",
15
- "eslint": "8.29.0",
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.5.0",
19
- "eslint-plugin-import": "2.26.0",
20
- "eslint-plugin-jsdoc": "39.6.4",
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.5.0",
24
- "husky": "8.0.2",
25
- "lint-staged": "13.1.0",
26
- "markdownlint-cli": "0.32.2",
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.0",
30
- "prettier-plugin-packagejson": "2.3.0",
31
- "typescript": "4.9.3"
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({
@@ -0,0 +1,3 @@
1
+ export interface KmsAliasSettings {
2
+ enabled?: string;
3
+ }
@@ -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
  };
@@ -1 +1,2 @@
1
+ export * from './KmsAliasSettings';
1
2
  export * from './ServerlessInstance';