Я пытаюсь преобразовать Ansible скрипт в Python AWS лямбда-функцию. В моем сценарии Python я использую библиотеку jmespath
для фильтрации по дате, которая задается в виде строки в формате ISO 8601.
Мой фильтр работает в моем Ansible сценария, а также с помощью инструмента веб-сайта JMESPath . Я не могу понять, почему моя Python версия не работает; Ansible написано Python, поэтому я ожидал, что оно будет работать так же.
Это работает в Ansible:
- name: parse groups
debug:
msg: "{{ results_gitlabGroupsProjects | to_json | from_json | json_query(projects_query) }}"
vars:
projects_query: "json[?last_activity_at > `{{gitlab_date}}`].{name: name, id: id, last_activity_at: last_activity_at }"
register: gitlabGroupsProjects2
Когда я пытаюсь сделать то же самое в Python, я получаю пустой список, []
:
compareTime="2020-01-15T17:55:3S.390Z"
plist2 = jmespath.search('[?last_activity_at > `str(compareTime)`]', project_data )
with open('plist2.json', 'w') as json_file:
json.dump(plist2, json_file)
Пример JSON данных:
[
{
"name": "test",
"id": 16340975,
"last_activity_at": "2020-01-15T20:12:49.775Z"
},
{
"name": "test1",
"id": 11111111,
"last_activity_at": "2020-01-15T15:57:29.670Z"
},
{
"name": "test2",
"id": 222222,
"last_activity_at": "2020-01-15T23:08:22.313Z"
},
{
"name": "test3",
"id": 133333,
"last_activity_at": "2020-01-15T22:28:42.628Z"
},
{
"name": "test4",
"id": 444444,
"last_activity_at": "2020-01-14T02:20:47.496Z"
},
{
"name": "test5",
"id": 555555,
"last_activity_at": "2020-01-13T04:54:18.353Z"
},
{
"name": "test6",
"id": 66666666,
"last_activity_at": "2020-01-12T07:12:05.858Z"
},
{
"name": "test7",
"id": 7777777,
"last_activity_at": "2020-01-10T20:52:32.269Z"
}
]
Используя Ansible, и на веб-сайте JMESPath я получаю это вывод:
[
{
"name": "test",
"id": 16340975,
"last_activity_at": "2020-01-15T20:12:49.775Z"
},
{
"name": "test2",
"id": 222222,
"last_activity_at": "2020-01-15T23:08:22.313Z"
},
{
"name": "test3",
"id": 133333,
"last_activity_at": "2020-01-15T22:28:42.628Z"
}
]