2017-02-09 1 views
5

Чтобы удалить поток журнала из группы журналов с помощью команды CLI, необходимы имена отдельных журналов. Есть ли способ удалить все лог-потоки, принадлежащие группе журналов, используя одну команду?удалить все лог-потоки в группе журналов с помощью aws cli

ответ

1

--log-имя-группа не является факультативным в AWS кли, вы можете попробовать использовать * для ценностно-группы имя --log (в тестовой среде)

AWS журналов удалить лог-группы - -log-группы называют мои бревна

ссылки URL: http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html

+0

Я хотел бы удалить все лог-потоки под лог-группой с помощью CLI. Не группа журнала – akhila

2

Это не может быть сделано с помощью одного AWS командной строки. Следовательно, мы достигли этого, используя скрипт, в котором мы сначала загрузили все лог-потоки группы журналов, а затем удалили их в цикле.

3

Вот скрипт для удаления всех журналов в группе журналов с использованием python. Просто измените имя logGroupName, чтобы он соответствовал вашей лог-группе.

import boto3 

client = boto3.client('logs') 

response = client.describe_log_streams(
    logGroupName='/aws/batch/job' 
) 


def delete_stream(stream): 
    delete_response = client.delete_log_stream(
     logGroupName='/aws/batch/job', 
     logStreamName=stream['logStreamName'] 
    ) 

    print(delete_response) 


results = map(lambda x: delete_stream(x), response['logStreams']) 
3

Вы можете достичь этого путем использования --query целевых результатов describe-log-streams. Это позволяет вам прокручивать и удалять результаты.

aws logs describe-log-streams --log-group-name $LOG_GROUP_NAME --query 'logStreams[*].logStreamName' --output table | awk '{print $2}' | grep -v ^$ | while read x; do aws logs delete-log-stream --log-group-name $LOG_GROUP_NAME --log-stream-name $x; done

Вы можете использовать --query таргетинг на все или определенные группы или потоки.

Удаление потоков из определенного месяца

aws logs describe-log-streams --log-group-name $LOG_GROUP --query 'logStreams[?starts_with(logStreamName,`2017/07`)].logStreamName' --output table | awk '{print $2}' | grep -v ^$ | while read x; do aws logs delete-log-stream --log-group-name $LOG_GROUP --log-stream-name $x; done

Удаление всех групп журналов - Предупреждение, она удаляет ВСЕ!

aws logs describe-log-groups --query 'logGroups[*].logGroupName' --output table | awk '{print $2}' | grep -v ^$ | while read x; do aws logs delete-log-group --log-group-name $x; done

Очистка конкретных журнальные группы

aws logs describe-log-groups --query 'logGroups[?starts_with(logGroupName,`$LOG_GROUP_NAME`)].logGroupName' --output table | awk '{print $2}' | grep -v ^$ | while read x; do aws logs delete-log-group --log-group-name $x; done

Credit

+0

Это работает, но удаляет все журналы _groups_. ОП спрашивает, как удалить журнал _streams_ внутри группы. – brianz

+0

@brianz хорошая точка, я обновил ответ, чтобы правильно ответить на заданный вопрос – Stephen

2

Чтобы удалить все потоки журнала, связанные с конкретной группой журналов, выполнить следующую команду, заменив NAME_OF_LOG_GROUP с ваша группа:

aws logs describe-log-streams --log-group-name NAME_OF_LOG_GROUP --output text | awk '{print $7}' | while read x; 
do aws logs delete-log-stream --log-group-name NAME_OF_LOG_GROUP --log-stream-name $x 
done 
Смежные вопросы