Для лямбды лучшая практика - инициализировать зависимости вне обработчика.
Я создаю простую функцию Python, которая работает как чертежи:
import boto3
s3 = boto3.client('ssm')
def lambda_handler(event, context):
# some code here
И тест
from lambda_function import handler # Option 1
import lambda_function # Option 2
class TestHandler(unittest.TestCase):
@patch('lambda_function.handler.boto3.client')
def test(self, boto3_mock):
# ...
Кажется, я не могу правильно настроить макеттак что вызов boto.client
не приводит к ошибке при You must specify a region.
При Option 1
он вызывает ошибку при вызове импорта, а при Option 2
это происходит при patch
setup
Я не могу использовать ~/.aws/config
, потому что он будет использоваться на КИ, который не может этого иметь.Я также не хочу изменять вызов boto.client
, чтобы включить регион по умолчанию.
Есть что-то, чего мне не хватает?