New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

serverless-plugin-canary-deployments

Package Overview
Dependencies
Maintainers
2
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

serverless-plugin-canary-deployments - npm Package Compare versions

Comparing version 0.6.0 to 0.7.0

3

CHANGELOG.md

@@ -0,1 +1,4 @@

# 0.7.0 (09.09.2021)
- Generate a Deployment Group Name in the format of ${stackName}-${logicalId} to avoid a circular dependency when used with the aws-alerts plugin #135
# 0.6.0 (31.03.2021)

@@ -2,0 +5,0 @@ - Add config validator #102

3

fixtures/1.output.json

@@ -127,3 +127,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
}

@@ -567,2 +567,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -569,0 +570,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -187,3 +187,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
}

@@ -875,2 +875,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -877,0 +878,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -197,3 +197,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
}

@@ -972,2 +972,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-AuthorizeLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -1032,2 +1033,3 @@ "DeploymentType": "BLUE_GREEN",

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -1034,0 +1036,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -556,2 +556,3 @@ {

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -558,0 +559,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -113,6 +113,6 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
},
{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${GoodbyeLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-GoodbyeLambdaFunctionDeploymentGroup"
}

@@ -342,2 +342,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-GoodbyeLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -405,2 +406,3 @@ "DeploymentType": "BLUE_GREEN",

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -407,0 +409,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -422,2 +422,3 @@ {

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -424,0 +425,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -127,3 +127,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
}

@@ -500,2 +500,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -502,0 +503,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -127,3 +127,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
}

@@ -582,2 +582,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -584,0 +585,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -110,3 +110,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
}

@@ -366,2 +366,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -368,0 +369,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -112,3 +112,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
}

@@ -359,2 +359,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -361,0 +362,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -91,3 +91,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${BelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-BelloLambdaFunctionDeploymentGroup"
}

@@ -289,2 +289,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-BelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -291,0 +292,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -142,3 +142,3 @@ {

{
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/${HelloLambdaFunctionDeploymentGroup}"
"Fn::Sub": "arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${CanarydeploymentstestdevDeploymentApplication}/canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup"
}

@@ -785,2 +785,3 @@ ]

},
"DeploymentGroupName": "canary-deployments-test-dev-HelloLambdaFunctionDeploymentGroup",
"DeploymentStyle": {

@@ -787,0 +788,0 @@ "DeploymentType": "BLUE_GREEN",

@@ -12,3 +12,3 @@ /* eslint-disable no-template-curly-in-string */

function buildFnDeploymentGroup ({ codeDeployAppName, codeDeployRoleArn, deploymentSettings = {} }) {
function buildFnDeploymentGroup ({ codeDeployAppName, codeDeployGroupName, codeDeployRoleArn, deploymentSettings = {} }) {
const deploymentGroup = {

@@ -28,2 +28,3 @@ Type: 'AWS::CodeDeploy::DeploymentGroup',

},
DeploymentGroupName: codeDeployGroupName,
DeploymentConfigName: {

@@ -30,0 +31,0 @@ 'Fn::Sub': [

@@ -21,2 +21,3 @@ /* eslint-disable no-template-curly-in-string */

const codeDeployAppName = 'MyCDApp'
const codeDeployGroupName = 'canary-deployments-test-dev-FirstLambdaFunctionDeploymentGroup'
const baseDeploymentGroup = {

@@ -28,2 +29,3 @@ Type: 'AWS::CodeDeploy::DeploymentGroup',

},
DeploymentGroupName: '',
AutoRollbackConfiguration: {

@@ -67,6 +69,7 @@ Enabled: true,

_.set('Properties.ApplicationName', { Ref: codeDeployAppName }),
_.set('Properties.DeploymentGroupName', codeDeployGroupName),
_.set('Properties.AlarmConfiguration', expectedAlarms),
_.set('Properties.DeploymentConfigName.Fn::Sub[1].ConfigName', deploymentSettings.type)
)(baseDeploymentGroup)
const actual = CodeDeploy.buildFnDeploymentGroup({ codeDeployAppName, deploymentSettings })
const actual = CodeDeploy.buildFnDeploymentGroup({ codeDeployAppName, codeDeployGroupName, deploymentSettings })
expect(actual).to.deep.equal(expected)

@@ -80,5 +83,6 @@ })

_.set('Properties.ApplicationName', { Ref: codeDeployAppName }),
_.set('Properties.DeploymentGroupName', codeDeployGroupName),
_.set('Properties.DeploymentConfigName.Fn::Sub[1].ConfigName', deploymentSettings.type)
)(baseDeploymentGroup)
const actual = CodeDeploy.buildFnDeploymentGroup({ codeDeployAppName, deploymentSettings })
const actual = CodeDeploy.buildFnDeploymentGroup({ codeDeployAppName, codeDeployGroupName, deploymentSettings })
expect(actual).to.deep.equal(expected)

@@ -96,6 +100,7 @@ })

_.set('Properties.ApplicationName', { Ref: codeDeployAppName }),
_.set('Properties.DeploymentGroupName', codeDeployGroupName),
_.set('Properties.DeploymentConfigName.Fn::Sub[1].ConfigName', deploymentSettings.type)
)(baseDeploymentGroup)
const actual = CodeDeploy.buildFnDeploymentGroup({
codeDeployAppName, codeDeployRoleArn, deploymentSettings
codeDeployAppName, codeDeployGroupName, codeDeployRoleArn, deploymentSettings
})

@@ -120,2 +125,3 @@ expect(actual).to.deep.equal(expected)

_.set('Properties.ApplicationName', { Ref: codeDeployAppName }),
_.set('Properties.DeploymentGroupName', codeDeployGroupName),
_.set('Properties.DeploymentConfigName.Fn::Sub[1].ConfigName', deploymentSettings.type),

@@ -127,3 +133,4 @@ _.set('Properties.TriggerConfigurations', deploymentSettings.triggerConfigurations)

deploymentSettings,
codeDeployAppName
codeDeployAppName,
codeDeployGroupName
})

@@ -130,0 +137,0 @@

@@ -49,3 +49,3 @@ const _ = require('lodash/fp')

Resource: deploymentGroups.map(deploymentGroup => ({
'Fn::Sub': `arn:\${AWS::Partition}:codedeploy:\${AWS::Region}:\${AWS::AccountId}:deploymentgroup:\${${codeDeployAppName}}/\${${deploymentGroup}}`
'Fn::Sub': `arn:\${AWS::Partition}:codedeploy:\${AWS::Region}:\${AWS::AccountId}:deploymentgroup:\${${codeDeployAppName}}/${deploymentGroup}`
}))

@@ -52,0 +52,0 @@ })

@@ -141,3 +141,3 @@ const { expect } = require('chai')

// eslint-disable-next-line no-template-curly-in-string
{ 'Fn::Sub': 'arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServiceDeploymentApplication}/${FirstLambdaFunctionDeploymentGroup}' }
{ 'Fn::Sub': 'arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServiceDeploymentApplication}/canary-deployments-test-dev-FirstLambdaFunctionDeploymentGroup' }
]

@@ -151,3 +151,3 @@ }

}
const deploymentGroups = ['FirstLambdaFunctionDeploymentGroup']
const deploymentGroups = ['canary-deployments-test-dev-FirstLambdaFunctionDeploymentGroup']
const actual = Iam.buildExecutionRoleWithCodeDeploy(input, codeDeployAppName, deploymentGroups)

@@ -182,5 +182,5 @@ expect(actual).to.deep.equal(expected)

// eslint-disable-next-line no-template-curly-in-string
{ 'Fn::Sub': 'arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServiceDeploymentApplication}/${FirstLambdaFunctionDeploymentGroup}' },
{ 'Fn::Sub': 'arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServiceDeploymentApplication}/canary-deployments-test-dev-FirstLambdaFunctionDeploymentGroup' },
// eslint-disable-next-line no-template-curly-in-string
{ 'Fn::Sub': 'arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServiceDeploymentApplication}/${SecondLambdaFunctionDeploymentGroup}' }
{ 'Fn::Sub': 'arn:${AWS::Partition}:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServiceDeploymentApplication}/canary-deployments-test-dev-SecondLambdaFunctionDeploymentGroup' }
]

@@ -194,3 +194,3 @@ }

}
const deploymentGroups = ['FirstLambdaFunctionDeploymentGroup', 'SecondLambdaFunctionDeploymentGroup']
const deploymentGroups = ['canary-deployments-test-dev-FirstLambdaFunctionDeploymentGroup', 'canary-deployments-test-dev-SecondLambdaFunctionDeploymentGroup']
const actual = Iam.buildExecutionRoleWithCodeDeploy(input, codeDeployAppName, deploymentGroups)

@@ -223,3 +223,3 @@ expect(actual).to.deep.equal(expected)

const expected = JSON.parse(JSON.stringify(input))
const deploymentGroups = ['FirstLambdaFunctionDeploymentGroup']
const deploymentGroups = ['canary-deployments-test-dev-FirstLambdaFunctionDeploymentGroup']
const actual = Iam.buildExecutionRoleWithCodeDeploy(input, codeDeployAppName, deploymentGroups)

@@ -226,0 +226,0 @@ expect(actual).to.deep.equal(expected)

@@ -6,3 +6,3 @@ {

},
"version": "0.6.0",
"version": "0.7.0",
"description": "A Serverless plugin to implement canary deployment of Lambda functions",

@@ -9,0 +9,0 @@ "main": "serverless-plugin-canary-deployments.js",

@@ -74,4 +74,4 @@ const _ = require('lodash/fp')

// Checking if the template has trigger configurations.
for (var resource of functionsResources) {
for (var key of Object.keys(resource)) {
for (const resource of functionsResources) {
for (const key of Object.keys(resource)) {
if (resource[key].Type === 'AWS::CodeDeploy::DeploymentGroup') {

@@ -109,3 +109,4 @@ if (resource[key].Properties.TriggerConfigurations) {

this.getFunctionName.bind(this),
this.getFunctionDeploymentGroupId.bind(this)
this.getFunctionDeploymentGroupId.bind(this),
this.getDeploymentGroupName.bind(this)
)

@@ -157,4 +158,6 @@ const deploymentGroups = _.pipe(

const logicalName = this.getFunctionDeploymentGroupId(functionName)
const codeDeployGroupName = this.getDeploymentGroupName(logicalName)
const params = {
codeDeployAppName: this.codeDeployAppName,
codeDeployGroupName,
codeDeployRoleArn: deploymentSettings.codeDeployRole,

@@ -192,2 +195,6 @@ deploymentSettings

getDeploymentGroupName (deploymentGroupLogicalId) {
return `${this.naming.getStackName()}-${deploymentGroupLogicalId}`
}
getFunctionName (slsFunctionName) {

@@ -194,0 +201,0 @@ return slsFunctionName ? this.naming.getLambdaLogicalId(slsFunctionName) : null

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc