def send_configuration_error()

in source/aws_lambda/s3_event/handler.py [0:0]


def send_configuration_error(configuration: Configuration):
    errors = configuration.errors
    sns = get_service_client("sns")
    dataset_group = configuration.dataset_group

    subject = f"{solution_name()} Notifications"

    def build_default_message():
        f"The personalization workflow for {configuration.dataset_group} completed with errors."

    def build_json_message():
        return json.dumps(
            {
                "datasetGroup": dataset_group,
                "status": "UPDATE FAILED",
                "summary": "There were errors detected when reading a personalization job configuration file",
                "description": [error for error in errors],
            }
        )

    def build_long_message():
        message = "There were errors detected when reading a personalization job configuration file:\n\n"
        for error in errors:
            logger.error(f"Personalization job configuration error: {error}")
            message += f"   - {error}\n"
        message += "\nPlease correct these errors and upload the configuration again."
        return message

    logger.error("publishing configuration error to SQS")
    sns.publish(
        TopicArn=topic_arn(),
        Message=json.dumps(
            {
                "default": build_default_message(),
                "sms": build_default_message(),
                "email": build_long_message(),
                "email-json": build_json_message(),
                "sqs": build_json_message(),
            }
        ),
        MessageStructure="json",
        Subject=subject,
    )
    logger.error("published configuration error to SQS")