2017-02-09 12 views
5

का उपयोग कर लॉग समूह की सभी लॉग स्ट्रीम हटाएं CLI कमांड का उपयोग कर लॉग समूह से लॉग स्ट्रीम को हटाने के लिए, व्यक्तिगत लॉग स्ट्रीम नाम आवश्यक हैं। क्या एक कमांड का उपयोग कर लॉग समूह से संबंधित सभी लॉग स्ट्रीम को हटाने का कोई तरीका है?aws cli

उत्तर

1

--log-समूह-नाम एडब्ल्यूएस CLI में वैकल्पिक नहीं है, आप --log-समूह-नाम मूल्य के लिए एक * का उपयोग कर (परीक्षण परिवेश में) की कोशिश कर सकते

एडब्ल्यूएस लॉग को हटा दिया-लॉग-समूह - -log-समूह से नामकरण मेरी-लॉग

संदर्भ यूआरएल: http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html

+0

मैं सीएलआई का उपयोग कर लॉग-समूह के तहत सभी लॉग स्ट्रीम को हटाना चाहता हूं। लॉग समूह नहीं – akhila

2

यह एक एकल एडब्ल्यूएस CLI कमांड का उपयोग नहीं किया जा सकता है। इसलिए हमने इसे एक स्क्रिप्ट का उपयोग करके हासिल किया जहां हमने पहले लॉग समूह की सभी लॉग स्ट्रीम पुनर्प्राप्त की और फिर उन्हें लूप में हटा दिया।

3

पाइथन का उपयोग कर लॉग समूह में सभी लॉग हटाने के लिए स्क्रिप्ट है। अपने लॉग समूह से मेल खाने के लिए बस लॉग समूह नाम बदलें।

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