AWS - восстановление Нептуна из снимка с использованием SDK - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь проверить восстановление экземпляров Neptune из снимка с помощью python (boto3).Короче говоря, мы хотим ежедневно раскручивать и удалять экземпляр Dev с помощью автоматизации.

При восстановлении мое восстановление, похоже, создает кластер только без создания подключенного экземпляра.Я также попытался создать экземпляр, когда кластер запущен и добавлен в кластер, но это тоже не работает.(ref: client.create_db_instance)

Мой код выполняет следующие действия, получает самый последний снимок.Используйте эту переменную для создания кластера, чтобы самые последние данные были там.

import boto3

client = boto3.client('neptune')

response = client.describe_db_cluster_snapshots(
    DBClusterIdentifier='neptune',
    MaxRecords=100,
    IncludeShared=False,
    IncludePublic=False
)

snaps = response['DBClusterSnapshots']
snaps.sort(key=lambda c: c['SnapshotCreateTime'], reverse=True)

latest_snapshot = snaps[0]
snapshot_ID = latest_snapshot['DBClusterSnapshotIdentifier']

print("Latest snapshot: " + snapshot_ID)

db_response = client.restore_db_cluster_from_snapshot(
    AvailabilityZones=['us-east-1c'],
    DBClusterIdentifier='neptune-test',
    SnapshotIdentifier=snapshot_ID,
    Engine='neptune',
    Port=8182,
    VpcSecurityGroupIds=['sg-randomString'],
    DBSubnetGroupName='default-vpc-groupID'
)

time.sleep(60)

db_instance_response = client.create_db_instance(
    DBName='neptune',
    DBInstanceIdentifier='brillium-neptune',
    DBInstanceClass='db.r4.large',
    Engine='neptune',
    DBSecurityGroups=[
        'sg-string',
    ],
    AvailabilityZone='us-east-1c',
    DBSubnetGroupName='default-vpc-string',
    BackupRetentionPeriod=7,
    Port=8182,
    MultiAZ=False,
    AutoMinorVersionUpgrade=True,
    PubliclyAccessible=False,
    DBClusterIdentifier='neptune-test',
    StorageEncrypted=True
)

Документация не очень помогает.Это очень хорошо для обеспечения переменных, необходимых для базового создания, но не фактического экземпляра.Если я пытаюсь создать экземпляр с тем же именем кластера, он либо выдает ошибку, либо создает новый кластер с тем же именем, к которому добавляется «-1».

1 Ответ

0 голосов
/ 18 октября 2018

Если вы хотите программно выполнить восстановление из снимка, вам необходимо:

  1. Создать снимок кластера, используя create-db-cluster-snapshot
  2. Восстановить кластер из снимка, используя restore-db-cluster-from-snapshot
  3. Создайте экземпляр в новом кластере, используя create-db-instance

Вы упомянули, что в конце вы сделали вызов create-db-instance, но у вашего примера фрагмента его нет.Если этот вызов завершился успешно, вы должны увидеть экземпляр, предоставленный внутри этого кластера.

Когда вы выполняете восстановление из Snapshot с помощью консоли Neptune, он выполняет шаги № 2 и № 3 для вас.

Похоже, вы сделали следующее:

  1. Создайте снимок с помощью CLI
  2. Создайте кластер с помощью CLI
  3. Создайте экземпляр вкластер через консоль

Сегодня мы рекомендуем полностью восстановить снимок через консоль или полностью с помощью интерфейса командной строки.

...