Я хочу создать временный клон моего кластера Aurora MySQL для ежедневного запуска ETL (чтобы убедиться, что он не влияет на другие службы), а затем завершить его после завершения ETL.
import boto3
client = boto3.client('rds')
old_cluster_identifier = 'test-etl'
new_cluster_identifier = 'test-etl-clone'
response = client.restore_db_cluster_to_point_in_time(
DBClusterIdentifier=new_cluster_identifier,
RestoreType='copy-on-write',
SourceDBClusterIdentifier=old_cluster_identifier,
UseLatestRestorableTime=True,
Port=3306,
DBSubnetGroupName='test-etl',
VpcSecurityGroupIds=[
'sg-xxxx',
],
Tags=[],
EnableIAMDatabaseAuthentication=False,
BacktrackWindow=0,
DeletionProtection=False,
CopyTagsToSnapshot=False
)
reader_endpoint = response['DBCluster']['ReaderEndpoint']
response2 = client.create_db_instance(
DBInstanceClass='db.t2.medium',
Engine='aurora',
DBClusterIdentifier=new_cluster_identifier,
DBInstanceIdentifier=new_cluster_identifier + '-instance-1',
)
print(response2)
Этот код хорошо работает для меня, но затем, когда я хочу удалить кластер клонов из консоли, я просто нажимаю на имя экземпляра / Actions / Delete, и это одновременно удаляет и экземпляр, и кластер.
Я попытался найти эквивалент в AWS SDK, но если я запускаю функцию delete_db_instance (), он только удаляет экземпляр и сохраняет кластер со статусом «доступно», поэтому я должен сделать: - delete_db_instance (' test-etl-clone-instance-1 ') - подождать, пока он будет удален - delete_db_cluster (' test-etl-clone ')
Есть ли способ удалить оба одновременно одновременно?
Или я могу просто всегда иметь клонированный кластер без запущенного экземпляра и просто создавать / удалять новый экземпляр каждый день? Я не уверен, что будут дополнительные расходы, если у меня просто будет кластер без какого-либо экземпляра и будут ли данные актуальны или нет при создании нового экземпляра на следующий день.
Спасибо