UNPKG

serverless-blue-green-deployments

Version:

A Serverless plugin to implement blue/green deployment of Lambda functions

47 lines (40 loc) 1.44 kB
const _ = require('lodash/fp') const omitEmpty = require('omit-empty') function buildUpdatePolicy ({ codeDeployApp, deploymentGroup, afterHook, beforeHook }) { const updatePolicy = { CodeDeployLambdaAliasUpdate: { ApplicationName: { Ref: codeDeployApp }, AfterAllowTrafficHook: { Ref: afterHook }, BeforeAllowTrafficHook: { Ref: beforeHook }, DeploymentGroupName: { Ref: deploymentGroup } } } return omitEmpty({ UpdatePolicy: updatePolicy }) } function buildAlias ({ alias, functionName, functionVersion, trafficShiftingSettings }) { const lambdaAlias = { Type: 'AWS::Lambda::Alias', Properties: { FunctionVersion: { 'Fn::GetAtt': [functionVersion, 'Version'] }, FunctionName: { Ref: functionName }, Name: alias } } if (trafficShiftingSettings) { const updatePolicy = buildUpdatePolicy(trafficShiftingSettings) Object.assign(lambdaAlias, updatePolicy) } return lambdaAlias } function replacePermissionFunctionWithAlias (lambdaPermission, funcitonAlias) { return _.set('Properties.FunctionName', { Ref: funcitonAlias }, lambdaPermission) } function replaceEventMappingFunctionWithAlias (eventSourceMapping, funcitonAlias) { return _.set('Properties.FunctionName', { Ref: funcitonAlias }, eventSourceMapping) } const Lambda = { buildAlias, replacePermissionFunctionWithAlias, replaceEventMappingFunctionWithAlias } module.exports = Lambda