Как отфильтровать с помощью интерфейса командной строки aws для сопоставления ec2, начатых в диапазоне дат, для строкового значения, которое содержит дату типа StateTransitionReason? - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь создать скрипт монитора, который будет искать старые блоки ec2, запущенные, не запущенные, старше 7 дней, и они останутся в остановленном состоянии, а затем удалить их. Для этого мне нужно идентифицировать эти неиспользованные коробки. Значение LaunchTime является параметром даты, но я пытаюсь использовать параметр StateTransitionReason, и он содержит дату.

Это работает и показывает полный список:

aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped'  'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[*].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}' 

Но еслиЯ пытаюсь это, ничего мне не показывает:

aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped'  'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[?StateTransitionReason<="User initiated (2019-10-10 05:00:00 GMT)"].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}' 

StateTransitionReason - строковый параметр, но он содержит дату, есть ли способ отфильтровать более ранние даты, чем конкретные?

Я попытался проверить документацию AWS, но это не объясняет этого.

1 Ответ

0 голосов
/ 14 октября 2019

Это может показаться глупым, но причина в том, что вы используете "вместо" внутри запроса. Попробуйте сделать:

aws ec2 describe-instances --filters 'Name=instance-state-name,Values=stopped'  'Name=tag:App_Name,Values=MYAPPS' 'Name=tag:Name,Values=development-*' --query 'Reservations[*].Instances[?StateTransitionReason<=`User initiated (2019-10-10 05:00:00 GMT)`].{Instance:InstanceId,StateTransitionReason:StateTransitionReason,Name:Tags[?Key==`Owner`]|[0].Value}'

Это сработало, когда я его проверил.

...