def update_deployment_group()

in src/main/resources/cdk_custom_resources/create_deployment_group.py [0:0]


def update_deployment_group(event, context):
    data = {}
    status = FAILED
    new_deployment_group_name_ = None
    try:
        application_name_ = event['ResourceProperties']['ApplicationName']
        current_deployment_group_name_ = event['OldResourceProperties']['DeploymentGroupName']
        new_deployment_group_name_ = event['ResourceProperties']['DeploymentGroupName']
        deployment_config_name_ = event['ResourceProperties']['DeploymentConfigName']
        service_role_arn_ = event['ResourceProperties']['ServiceRoleArn']
        blue_target_group_ = event['ResourceProperties']['BlueTargetGroup']
        green_target_group_ = event['ResourceProperties']['GreenTargetGroup']
        prod_listener_arn_ = event['ResourceProperties']['ProdListenerArn']
        test_listener_arn_ = event['ResourceProperties']['TestListenerArn']
        cluster_name_ = event['ResourceProperties']['EcsClusterName']
        service_name_ = event['ResourceProperties']['EcsServiceName']
        termination_wait_time = event['ResourceProperties']['TerminationWaitTime']

        client.update_deployment_group(
            applicationName=application_name_,
            currentDeploymentGroupName=current_deployment_group_name_,
            newDeploymentGroupName=new_deployment_group_name_,
            deploymentConfigName=deployment_config_name_,
            serviceRoleArn=service_role_arn_,
            deploymentStyle={
                'deploymentType': 'BLUE_GREEN',
                'deploymentOption': 'WITH_TRAFFIC_CONTROL'
            },
            blueGreenDeploymentConfiguration={
                'terminateBlueInstancesOnDeploymentSuccess': {
                    'action': 'TERMINATE',
                    'terminationWaitTimeInMinutes': int(termination_wait_time)
                },
                'deploymentReadyOption': {
                    'actionOnTimeout': 'CONTINUE_DEPLOYMENT'
                }
            },
            autoRollbackConfiguration={
                'enabled': True,
                'events': [
                    'DEPLOYMENT_FAILURE',
                    'DEPLOYMENT_STOP_ON_REQUEST',
                    'DEPLOYMENT_STOP_ON_ALARM'
                ]
            },
            ecsServices=[
                {
                    'serviceName': service_name_,
                    'clusterName': cluster_name_
                },
            ],
            loadBalancerInfo={
                'targetGroupPairInfoList': [
                    {
                        'targetGroups': [
                            {
                                'name': blue_target_group_
                            },
                            {
                                'name': green_target_group_
                            }
                        ],
                        'prodTrafficRoute': {
                            'listenerArns': [
                                prod_listener_arn_
                            ]
                        },
                        'testTrafficRoute': {
                            'listenerArns': [
                                test_listener_arn_
                            ]
                        }
                    },
                ]
            }
        )
        data = {
            "event": "Resource updated",
            "deploymentGroupName": new_deployment_group_name_
        }
        status = SUCCESS
    except BaseException as e:
        raise e
    finally:
        send(event=event,
             context=context,
             physical_resource_id=new_deployment_group_name_,
             response_status=status,
             response_data=data)