Мой предпочтительный способ сделать что-то вроде этого - передать клиента в качестве параметра функции, которая будет его использовать. Что-то вроде
import boto3
def function(param1, param2, client=None):
if client is None:
client = boto3.client('elb') # use default client
return client.do_stuff(param1, param2)
def function2(param3, param4, client=None):
if client is None:
client = boto3.client('elb') # use default client
return client.do_different_stuff(param3, param4)
Тогда вы можете назвать это как:
import boto3
client = boto3.client('elb')
stuff = function("a", "b", client=client)
different_stuff = function2("c", "d", client=client)
Это улучшение по сравнению с созданием его экземпляра внутри функции, потому что вы можете использовать один клиент для нескольких операций, но вам не нужно гарантировать, что клиент существует в читаемой области для всех этих функций - вы просто передаете его в качестве параметра.