def create_update_stack_handler(job_id, job_data, params: PipelineUserParameters, in_artifacts):
    s3, cf = setup_s3_client(job_data), boto3.client('cloudformation')

    if 'continuationToken' in job_data:
        if check_stack_status(cf, job_id, params.StackName):
            generate_output_artifact(s3, job_data, params, get_stack_output(cf, params.StackName))
    else:
        template_url, config, update = generate_template_and_config(s3, cf, job_id, params, in_artifacts)
        start_stack_create_or_update(cf, job_id, params.StackName,
                                     template_url, config, update, params.RoleArn)
def execute_change_set_handler(job_id, job_data, params: PipelineUserParameters):
    s3, cf = setup_s3_client(job_data), boto3.client('cloudformation')
    if 'continuationToken' in job_data:
        if check_stack_status(cf, job_id, params.StackName):
            generate_output_artifact(s3, job_data, params, get_stack_output(cf, params.StackName))
    else:
        if not change_set_exists(cf, params.StackName, params.ChangeSetName):
            raise Exception("Change set {} cannot be executed because doesn't exist".format(params.ChangeSetName))
        execute_change_set(cf, params.StackName, params.ChangeSetName)
        continue_job_later(job_id, 'Stack create started')
def create_replace_change_set_handler(job_id, job_data, params: PipelineUserParameters, in_artifacts):
    s3, cf = setup_s3_client(job_data), boto3.client('cloudformation')

    if 'continuationToken' in job_data:
        check_change_set_status(cf, job_id, params.StackName, params.ChangeSetName)
    else:
        if change_set_exists(cf, params.StackName, params.ChangeSetName):
            delete_change_set(cf, params.StackName, params.ChangeSetName)

        template_url, config, update = generate_template_and_config(s3, cf, job_id, params, in_artifacts)

        create_change_set(cf, params.StackName, params.ChangeSetName,
                          template_url, config, params.RoleArn)
        continue_job_later(job_id, 'Stack create started')