Skip to content

Commit

Permalink
feat(cdk): add the CodeDeployLambdaAlias Update Policy. (#1346)
Browse files Browse the repository at this point in the history
Fixes #1177.
  • Loading branch information
skinny85 authored Dec 14, 2018
1 parent 239d0d5 commit d648b58
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 1 deletion.
32 changes: 32 additions & 0 deletions packages/@aws-cdk/cdk/lib/cloudformation/resource-policy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,12 @@ export interface UpdatePolicy {
*/
autoScalingScheduledAction?: AutoScalingScheduledAction;

/**
* To perform an AWS CodeDeploy deployment when the version changes on an AWS::Lambda::Alias resource,
* use the CodeDeployLambdaAliasUpdate update policy.
*/
codeDeployLambdaAliasUpdate?: CodeDeployLambdaAliasUpdate;

/**
* To modify a replication group's shards by adding or removing shards, rather than replacing the entire
* AWS::ElastiCache::ReplicationGroup resource, use the UseOnlineResharding update policy.
Expand Down Expand Up @@ -236,3 +242,29 @@ export interface AutoScalingScheduledAction {
*/
ignoreUnmodifiedGroupSizeProperties?: boolean;
}

/**
* To perform an AWS CodeDeploy deployment when the version changes on an AWS::Lambda::Alias resource,
* use the CodeDeployLambdaAliasUpdate update policy.
*/
export interface CodeDeployLambdaAliasUpdate {
/**
* The name of the AWS CodeDeploy application.
*/
applicationName: string;

/**
* The name of the AWS CodeDeploy deployment group. This is where the traffic-shifting policy is set.
*/
deploymentGroupName: string;

/**
* The name of the Lambda function to run before traffic routing starts.
*/
beforeAllowTrafficHook?: string;

/**
* The name of the Lambda function to run after traffic routing completes.
*/
afterAllowTrafficHook?: string;
}
15 changes: 14 additions & 1 deletion packages/@aws-cdk/cdk/test/cloudformation/test.resource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,15 @@ export = {

r1.options.creationPolicy = { autoScalingCreationPolicy: { minSuccessfulInstancesPercent: 10 } };
// tslint:disable-next-line:max-line-length
r1.options.updatePolicy = { autoScalingScheduledAction: { ignoreUnmodifiedGroupSizeProperties: false }, autoScalingReplacingUpdate: { willReplace: true }};
r1.options.updatePolicy = {
autoScalingScheduledAction: { ignoreUnmodifiedGroupSizeProperties: false },
autoScalingReplacingUpdate: { willReplace: true },
codeDeployLambdaAliasUpdate: {
applicationName: 'CodeDeployApplication',
deploymentGroupName: 'CodeDeployDeploymentGroup',
beforeAllowTrafficHook: 'lambda1',
},
};
r1.options.deletionPolicy = DeletionPolicy.Retain;

test.deepEqual(stack.toCloudFormation(), {
Expand All @@ -182,6 +190,11 @@ export = {
UpdatePolicy: {
AutoScalingScheduledAction: { IgnoreUnmodifiedGroupSizeProperties: false },
AutoScalingReplacingUpdate: { WillReplace: true },
CodeDeployLambdaAliasUpdate: {
ApplicationName: 'CodeDeployApplication',
DeploymentGroupName: 'CodeDeployDeploymentGroup',
BeforeAllowTrafficHook: 'lambda1',
},
},
DeletionPolicy: 'Retain'
}
Expand Down

0 comments on commit d648b58

Please sign in to comment.