Удаление элемента из ответа AWS CLI

ПРИМЕЧАНИЕ. На самом деле я пытаюсь сделать это на Python и в библиотеке Boto3, но я собираюсь использовать интерфейс командной строки AWS, чтобы объяснить, что я пытаюсь сделать.

Я делаю вызов list-object-versions в свою корзину в AWS...

aws s3api list-object-versions --bucket averyuniquebucketname --delimiter "/"

Ответ примерно следующий...

{
    "DeleteMarkers": [

       ...snip...

    ],
    "CommonPrefixes": [

       ...snip...

    ],
    "Versions": [

       ...snip...

    ]
}

ЧТО я хотел бы сказать AWS не возвращать никаких результатов с помощью DeleteMarkers.

Любые идеи относительно того, как я могу использовать --query и JMESPath для устранения DeleteMarkers, но сохранить CommonPrefixes & Versions в ответе?


person grbonk    schedule 14.12.2018    source источник
comment
Какова ваша реальная мотивация для устранения маркеров удаления из ответа? Я подозреваю, что это бессмысленное занятие, потому что S3 все еще собирается отправить их ... но хотел бы понять вашу основную мотивацию или, возможно, есть более серьезная проблема, для которой, по вашему мнению, это было бы решением.   -  person Michael - sqlbot    schedule 15.12.2018
comment
Вы можете использовать --query, чтобы указать, какие поля должны отображаться в качестве вывода. (S3 по-прежнему отправляет DeleteMarkers, но интерфейс командной строки исключает их из набора результатов.) Таким образом, если вы используете boto3, ваше приложение все равно получит DeleteMarkers. Но ваше приложение может просто игнорировать их.   -  person John Rotenstein    schedule 15.12.2018
comment
Когда я перебираю версии объектов, некоторые ответы включают только 1000 удаленных версий. Я надеялся, что найдется способ предотвратить отправку DeleteMarkers, что сэкономит время и пропускную способность.   -  person grbonk    schedule 15.12.2018


Ответы (1)


Как указывает Майкл - sqlbot, aws cli --query выполняется на стороне клиента, поэтому ничего не спасет для «удаления» DeleteMarkers. Тем не менее, вы можете использовать --query '{CommonPrefixes: CommonPrefixes, Versions: Versions} из CLI... но в Python/boto3 имеет смысл просто посмотреть на то, что вас интересует, или, если вы действительно заинтересованы, сделать Python del или создать новый словарь (там определенно нет причина использования jmespath).

person james.haggerty    schedule 15.12.2018