boto3: эффективный сброс ресурсов - PullRequest
0 голосов
/ 22 января 2020

Есть ли способ для эффективного сброса инстанцированного ресурса boto3? Я пишу тесты для некоторого кода и издеваюсь над окружающей средой, используя мото. В каждом тестовом примере используется общий ресурс boto3, поэтому в настоящее время мне приходится разбирать любые макеты Например, в настоящее время, если я вызываю run_instances(), то впоследствии должен быть вызван метод terminate_instances().

Я попытался установить для объекта значение None, затем снова вызвал метод resource(), но безуспешно.

import boto3
from moto import mock_ec2

m = mock_ec2()
m.start()
aws_ec2_resource = boto3.resource('ec2', region_name='us-west-2')

print('Fresh ec2 resource')
# Get mocked vpc_id
for vpc in aws_ec2_resource.vpcs.all():
    vpc_id = vpc.id
    print(f'vpc_id: {vpc_id}')

print('Setting ec2 resource to None')
aws_ec2_resource = None

print('Instantiating new resource')
aws_ec2_resource = boto3.resource('ec2', region_name='us-west-2')

print('New ec2 resource')
# Get mocked vpc_id
for vpc in aws_ec2_resource.vpcs.all():
    vpc_id = vpc.id
    print(f'New vpc_id: {vpc_id}')

Вывод:

Fresh ec2 resource
vpc_id: vpc-186689a0
Setting ec2 resource to None
Instantiating new resource
New ec2 resource
New vpc_id: vpc-186689a0

Одним из способов может быть просто смоделировать новый VP C, например, в начале теста и использовать этот вновь созданный VP C. Тем не менее, по-прежнему любопытно сбросить ресурс.

...