Originally reported in https://github.com/localstack/localstack/issues/2099, the CreationTime for CF stacks was hardcoded. This was fixed in in LocalStack itself (https://github.com/localstack/localstack/pull/2103), but is now also fixed in moto (https://github.com/spulec/moto/pull/2818).

I don't know what version of moto you're using, and whether it's acceptable to use dev-releases, but if you do: 

moto 1.3.15.dev550 should fix this issue, so the LS fix can be removed if you upgrade :) 
def attr_val(val):
        return json.dumps(val) if isinstance(val, (dict, list)) else str(val)
    attrs = ['DeliveryPolicy', 'FilterPolicy', 'RawMessageDelivery', 'RedrivePolicy']
    result = dict([(a, attr_val(params[a])) for a in attrs if a in params])
    return result
def s3_bucket_notification_config(params, **kwargs):
    notif_config = params.get('NotificationConfiguration')
    if not notif_config:
        return None
    lambda_configs = []
    queue_configs = []
    topic_configs = []
    attr_tuples = (
        ('LambdaConfigurations', lambda_configs, 'LambdaFunctionArn', 'Function'),
        ('QueueConfigurations', queue_configs, 'QueueArn', 'Queue'),
        ('TopicConfigurations', topic_configs, 'TopicArn', 'Topic')
    )
    
    for attrs in attr_tuples:
        for config in notif_config.get(attrs[0]) or []:
            filter_rules = config.get('Filter', {}).get('S3Key', {}).get('Rules')
            entry = {
                attrs[2]: config[attrs[3]],
                'Events': [config['Event']]
            }
            if filter_rules:
                entry['Filter'] = {'Key': {'FilterRules': filter_rules}}
            attrs[1].append(entry)
    
    result = {