2017-02-09 32 views

Odpowiedz

2

ta nie może być wykonana przy użyciu jednego polecenia AWS CLI. Dlatego osiągnęliśmy to, używając skryptu, w którym najpierw pobieraliśmy wszystkie strumienie logów z grupy logów, a następnie usuwaliśmy je w pętli.

3

Oto skrypt, aby usunąć wszystkie dzienniki w grupie dziennika przy użyciu Pythona. Po prostu zmień logGroupName, aby pasowała do Twojej grupy logg.

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

Można to osiągnąć poprzez zastosowanie --query kierować wyniki describe-log-streams. Pozwala to na przeglądanie i usuwanie wyników.

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

Można użyć --query kierować wszystkich lub określonych grup lub strumieni.

Usuwanie strumienie z określonego miesiąca

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

Usuń wszystkie grupy dziennika - ostrzeżenie, usuwa wszystko!

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

Usuwanie konkretne grupy dziennika

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

Działa to, ale usuwa wszystkie log _groups_. OP pyta, jak usunąć log _streams_ w grupie. – brianz

+0

@Brianz dobry punkt, zaktualizowałem odpowiedź, aby poprawnie odpowiedzieć na pytanie – Stephen

2

Aby usunąć wszystkie strumienie dziennika związane z określonej grupy dziennika, uruchom następujące polecenie, zastępując NAME_OF_LOG_GROUP z twoja grupa:

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