AWS-使用SDK从快照还原Neptune

时间:2018-10-18 15:51:38

标签: python-3.x amazon-web-services boto3 amazon-neptune

我正在尝试使用python(boto3)测试从快照还原Neptune实例。简而言之,我们希望每天使用自动化启动和删除Dev实例。

还原时,我的还原似乎仅创建群集而没有创建附加实例。集群启动并添加到集群后,我还尝试创建一个实例,但这也不起作用。 (参考: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 :(得分:0)

如果要以编程方式从快照还原,则需要:

  1. 使用create-db-cluster-snapshot
  2. 创建集群快照
  3. 使用restore-db-cluster-from-snapshot从快照中恢复群集
  4. 使用create-db-instance在新集群中创建实例

您提到您确实在最后进行了create-db-instance调用,但是示例片段中没有。如果该调用确实成功,那么您应该看到在该群集内配置的实例。

使用Neptune控制台从快照还原时,它将为您执行第2步和第3步。

似乎您已执行以下操作:

  1. 通过CLI创建快照
  2. 通过CLI创建集群
  3. 通过控制台在集群中创建实例

今天,我们建议完全通过控制台或完全使用CLI还原快照。