Given a valid config, update the notification parameters for a bucket.

    Returns {updated: true} if parameters were updated and returns
    {updated: False} if parameters were not updated.

    CLI Example:

    .. code-block:: bash

        salt myminion boto_s3_bucket.put_notification_configuration my_bucket
                [{...}] \\
                [{...}] \\
                [{...}]

def put_notification_configuration(Bucket,
           TopicConfigurations=None, QueueConfigurations=None,
           LambdaFunctionConfigurations=None,
           region=None, key=None, keyid=None, profile=None):
    '''
    Given a valid config, update the notification parameters for a bucket.

    Returns {updated: true} if parameters were updated and returns
    {updated: False} if parameters were not updated.

    CLI Example:

    .. code-block:: bash

        salt myminion boto_s3_bucket.put_notification_configuration my_bucket
                [{...}] \\
                [{...}] \\
                [{...}]

    '''

    try:
        conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)
        if TopicConfigurations is None:
            TopicConfigurations = []
        elif isinstance(TopicConfigurations, six.string_types):
            TopicConfigurations = salt.utils.json.loads(TopicConfigurations)
        if QueueConfigurations is None:
            QueueConfigurations = []
        elif isinstance(QueueConfigurations, six.string_types):
            QueueConfigurations = salt.utils.json.loads(QueueConfigurations)
        if LambdaFunctionConfigurations is None:
            LambdaFunctionConfigurations = []
        elif isinstance(LambdaFunctionConfigurations, six.string_types):
            LambdaFunctionConfigurations = salt.utils.json.loads(LambdaFunctionConfigurations)
        # TODO allow the user to use simple names & substitute ARNs for those names
        conn.put_bucket_notification_configuration(Bucket=Bucket, NotificationConfiguration={
                'TopicConfigurations': TopicConfigurations,
                'QueueConfigurations': QueueConfigurations,
                'LambdaFunctionConfigurations': LambdaFunctionConfigurations,
        })
        return {'updated': True, 'name': Bucket}
    except ClientError as e:
        return {'updated': False, 'error': __utils__['boto3.get_error'](e)}