Como simular um objeto / chamada de cliente boto3

Estou tentando zombar de uma função boto3 específica. Meu módulo, Limpeza, importa boto3. A limpeza também possui uma classe "limpador". Durante o init, o limpador cria um cliente ec2:

self.ec2_client = boto3.client('ec2')

Eu quero zombar do método do cliente ec2: desribe_tags (), que python diz é:

<bound method EC2.describe_tags of <botocore.client.EC2 object at 0x7fd98660add0>>

o mais longe que eu consegui é importar botocore no meu arquivo de teste e tentar:

mock.patch(Cleaner.botocore.client.EC2.describe_tags)

que falha com:

AttributeError: 'module' object has no attribute 'EC2'

Como faço para zombar desse método?

A limpeza se parece com:

import boto3
class cleaner(object):
    def __init__(self):
        self.ec2_client = boto3.client('ec2')

O objeto ec2_client é aquele que possui o método desribe_tags (). É um objeto botocore.client.EC2, mas nunca importo diretamente o botocore.