2016-10-25 14 views
0

は、私が試したものです:AWS RDS:boto3とjmespathで最新のスナップショットを取得する方法は?ここ

#!/usr/bin/env python3 
import boto3 
import jmespath 
from datetime import datetime, timedelta 

now = datetime.utcnow() 
yesterday = now - timedelta(days=1) 

boto3.setup_default_session(profile_name='profilename') 
rds_client = boto3.client('rds') 

response = rds_client.describe_db_snapshots(DBInstanceIdentifier='instanseid') 

snaplist=jmespath.search("DBSnapshots[?SnapshotCreateTime >`2016-10-24 06:11:30`].[DBSnapshotIdentifier]", response) 

print(snaplist) 

私は何を得ることである:

TypeError: unorderable types: datetime.datetime() < str() 

私は日付(スクリプトで昨日)を作成し、検索をjmepathするためにそれを渡してみましたが、私は把握できませんでしたその日付オブジェクトを検索に渡す方法。 "+"はdatetimeオブジェクトでは機能しません。str()でstingに変換すると、上記のエラーに戻ります。

答えて

1

まず、SnapShotCreateTimeためdescribe_db_snapshot応答は、あなたが文字列で日時を比較しようとしているDateTimeオブジェクト

'SnapshotCreateTime': datetime(2015, 1, 1) 

です。それを修正するためにあなたがJMESpathを実装AWS CLIを使用して、同様のものを照会することができるはずです、あなたは、日時に文字列を変換する必要があるか、その逆

search_date = datetime.strptime('2016-10-24 06:11:30', '%Y-%m-%d %H:%M:%s' 
snaplist=jmespath.search(
    "DBSnapshots[?SnapshotCreateTime > search_date].[DBSnapshotIdentifier]", 
    response) 

、しかしAWS CLIはすでに文字列変換の世話をして。日付の値はbackticksに含まれている必要があります。

もっと読み:Use filter "launch-time" to find all instances newer than X date

aws rds describe-db-snapshots --query 'DBSnapshots[?SnapshotCreateTime >`2016-10-24 06:11:30`].[DBSnapshotIdentifier]' 
関連する問題