如何使用API​​在AWS中获取卷的最新快照

时间:2019-03-07 14:00:55

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

我只需要特定卷的最新快照。

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

        <variable
            name="viewModel"
            type="net.fonix232.app.viewmodel.SplashLandingViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="?android:attr/windowBackground"
        android:fitsSystemWindows="true">

        [... splash landing content ...]

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

怎么办?

1 个答案:

答案 0 :(得分:1)

看起来describe_snapshots方法首先返回最新的方法,但您实际上不应该依靠它。

我认为您可以放心地依靠StartTime字段,为返回的所有快照寻找最大值。

  

快照异步发生;时间点快照会立即创建

因为“最大”的StartTime将是最新的快照

我编写了这段代码,以打印具有最新快照开始时间的snapshot_id。我的python-fu不是最好的,但是可以用。

import boto3
import datetime
import pytz

utc = pytz.UTC
starttime=datetime.datetime(1,1,1,tzinfo=utc)
snap_id = ""
volume_id = "<put your volume id here or write something more elegant to pass it in>"

region = 'us-east-1'
session = boto3.Session(profile_name='default')

ec2 = session.client('ec2', region_name=region)

response = ec2.describe_snapshots(Filters=[{"Name":"volume-id","Values":[volume_id]}])

# print(response['Snapshots'])
for snap in response['Snapshots']:
    if snap['StartTime'] > starttime:
        snap_id = snap['SnapshotId']
        starttime= snap['StartTime']

print(snap_id)

参考文献