2

これが私が試したものです:

#!/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()で文字列に変換すると、上記のエラーに戻ります。

4

1 に答える 1

3

まず、SnapShotCreateTimeのdescribe_db_snapshot応答は日時オブジェクトです。

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

したがって、日時と文字列を比較しようとしています。これを修正するには、文字列を日時に、またはその逆に変換する必要があります。

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)

JMESpath を実装する AWS CLI を使用して同様のものをクエリできるはずですが、AWS CLI はすでに文字列変換を処理しています。また、日付の値は `backticks` に含める必要があります。

詳細 :フィルター「起動時間」を使用して、X 日付より新しいすべてのインスタンスを検索します

aws rds describe-db-snapshots --query 'DBSnapshots[?SnapshotCreateTime >`2016-10-24 06:11:30`].[DBSnapshotIdentifier]'
于 2016-10-25T08:18:50.463 に答える