Пытается захватить файлы дельты (файлы, созданные после последней обработки), сидя на s3. Для этого с помощью boto3 filter iterator по запросу LastModified значение, а не возвращающее весь список файлов и фильтрацию на клиентском сайте.AWS boto3 page_iterator.search не может сравнивать datetime.datetime с str
Согласно http://jmespath.org/?, Приведенный ниже запрос действителен и фильтрует следующие json respose;
filtered_iterator = page_iterator.search(
"Contents[?LastModified>='datetime.datetime(2016, 12, 27, 8, 5, 37, tzinfo=tzutc())'].Key")
for key_data in filtered_iterator:
print(key_data)
Однако это не удается;
RuntimeError: xxxxxxx has failed: can't compare datetime.datetime to str
Образец paginator reponse;
{
"Contents": [{
"LastModified": "datetime.datetime(2016, 12, 28, 8, 5, 31, tzinfo=tzutc())",
"ETag": "1022dad2540da33c35aba123476a4622",
"StorageClass": "STANDARD",
"Key": "blah1/blah11/abc.json",
"Owner": {
"DisplayName": "App-AWS",
"ID": "bfc77ae78cf43fd1b19f24f99998cb86d6fd8220dbfce0ce6a98776253646656"
},
"Size": 623
}, {
"LastModified": "datetime.datetime(2016, 12, 28, 8, 5, 37, tzinfo=tzutc())",
"ETag": "1022dad2540da33c35abacd376a44444",
"StorageClass": "STANDARD",
"Key": "blah2/blah22/xyz.json",
"Owner": {
"DisplayName": "App-AWS",
"ID": "bfc77ae78cf43fd1b19f24f99998cb86d6fd8220dbfce0ce6a81234e632c5a8c"
},
"Size": 702
}
] }
Любая помощь высоко ценится
JMESPATH поддерживает datetime.datetime; Пожалуйста, возьмите ответ в моем первоначальном вопросе и используйте его на jmespath; Содержание [? LastModified> = 'datetime.datetime (2016, 12, 27, 8, 5, 37, tzinfo = tzutc())']. Ключ – East2West
@ East2West Синтаксис ответа - это JSON, и это не объект datetime , но строка datetime. Вот почему он показывает ошибку: 'не может сравнивать datetime.datetime с str' – mootmoot
filter_iterator = page_iterator.search ( " Содержание [? LastModified> = '"+ str (datetime.datetime (2016, 12, 27, 8, 5, 37)) + "']. Ключ") возвращает ту же ошибку .... – East2West