From d38eb8bd3bd571d3f459a85c44b99a6ca069629a Mon Sep 17 00:00:00 2001 From: ifitzsimmons Date: Wed, 30 Dec 2020 22:34:02 -0500 Subject: [PATCH] \#8692: Add kmsKeyArn property to `provider` and `function[]` objects for single function deployment --- lib/plugins/aws/deployFunction.js | 25 +++++++++++++++++++++---- lib/plugins/aws/provider.js | 5 +++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/plugins/aws/deployFunction.js b/lib/plugins/aws/deployFunction.js index e9aff8460e06..ef47d798f168 100644 --- a/lib/plugins/aws/deployFunction.js +++ b/lib/plugins/aws/deployFunction.js @@ -103,10 +103,27 @@ class AwsDeployFunction { FunctionName: functionObj.name, }; - if ('awsKmsKeyArn' in functionObj && !_.isObject(functionObj.awsKmsKeyArn)) { - params.KMSKeyArn = functionObj.awsKmsKeyArn; - } else if (serviceObj && 'awsKmsKeyArn' in serviceObj && !_.isObject(serviceObj.awsKmsKeyArn)) { - params.KMSKeyArn = serviceObj.awsKmsKeyArn; + let kmsKeyArn = functionObj.kmsKeyArn || serviceObj.kmsKeyArn; + if (!kmsKeyArn && functionObject.awsKmsKeyArn) { + kmsKeyArn = functionObject.awsKmsKeyArn; + + this.serverless._logDeprecation( + 'FUNCTION_DEPRECATED_PROPERTY_AWS_KMS_KEY_ARN', + `Starting with next major version, awsKmsKeyArn function property will + \sbe replaced by kmsKeyArn.` + ); + } else if (!kmsKeyArn && serviceObj.awsKmsKeyArn) { + kmsKeyArn = serviceObj.awsKmsKeyArn; + + this.serverless._logDeprecation( + 'SERVICE_DEPRECATED_PROPERTY_AWS_KMS_KEY_ARN', + `Starting with next major version, awsKmsKeyArn service property will\s + \sbe replaced by provider.kmsKeyArn.` + ) + } + + if (kmsKeyArn) { + params.KMSKeyArn = kmsKeyArn } if ('description' in functionObj && !_.isObject(functionObj.description)) { diff --git a/lib/plugins/aws/provider.js b/lib/plugins/aws/provider.js index 57d64db87295..8295445861a7 100644 --- a/lib/plugins/aws/provider.js +++ b/lib/plugins/aws/provider.js @@ -384,6 +384,10 @@ class AwsProvider { ], }, }, + awsKmsArn: { + type: 'string', + pattern: '^arn:aws:kms:*$', + }, awsLambdaEnvironment: { type: 'object', patternProperties: { @@ -590,6 +594,7 @@ class AwsProvider { }, additionalProperties: false, }, + awsKmsKeyArn: { $ref: '#/definitions/awsKmsArn' }, cfnRole: { $ref: '#/definitions/awsArn' }, cloudFront: { type: 'object',