ОК, я не уверен на 100%, почему, но добавление декоратора sts, кажется, исправило это
@mock_sts
def test_publish(sns):
resp = sns.create_topic(Name="sdfsdfsdfsd")
Я понял это из этой статьи, но мне все еще неясно, как это работает: https://www.serverlessops.io/blog/aws-lambda-serverless-development-workflow-part2-testing-debugging
Это из-за того, что boto должен использовать sts, поэтому мне тоже нужно это смоделировать? я использую файл учетных данных с профилями для доступа к aws с ноутбука
РЕДАКТИРОВАТЬ: Вы также ДОЛЖНЫ использовать yield для возврата клиента. Использование return здесь дало мне ошибку sts. Мне бы тоже хотелось это лучше понять. Я предполагаю, что мне нужно использовать yield, потому что это генератор?
@pytest.fixture
def sns(aws_credentials):
with mock_sns():
# using return here causes below error
return boto3.resource("sns", region_name="us-east-1")
Ошибка, когда не используется yield
botocore.exceptions.ClientError: An error occurred (InvalidClientTokenId) when calling the CreateTopic operation: The security token included in the request is invalid