使用Boto3 delete_log_group批量删除Cloudwatch日志组

2024-09-28 22:44:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很长的cloudwatch日志组列表,我需要删除……大约有100个。因为你必须一次删除一个,所以我认为一个小python脚本可以帮助我,但现在我卡住了。在

这是我目前为止的剧本。。。在

import boto3
from botocore.exceptions import ClientError
import json

#Connect to AWS using default AWS credentials in awscli config
cwlogs = boto3.client('logs')

loglist = cwlogs.describe_log_groups(
    logGroupNamePrefix='/aws/lambda/staging-east1-'
)

#writes json output to file...
with open('loglist.json', 'w') as outfile:
    json.dump(loglist, outfile, ensure_ascii=False, indent=4, 
sort_keys=True)

#Opens file and searches through to find given loggroup name
with open("loglist.json") as f:
    file_parsed = json.load(f)

for i in file_parsed['logGroups']:
    print i['logGroupName']


#   cwlogs.delete_log_group(
#       logGroupName='string'   <---here is where im stuck
#   )

如何获取I中的“logGroupName”值并将其转换为delete_log_group命令可以使用的字符串,并迭代删除我需要删除的所有日志组? 我试着用json.loads错误的结果是。。。在

回溯(最近一次呼叫): “文件”CWLogCleaner.py“,第18行,英寸 已分析的文件=json.loads(六) 文件“/usr/local/celal/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py”,第339行,加载 返回默认值_解码器.解码(秒) 文件“/usr/local/celal/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/解码器.py“,第364行,解码中 目标,结束=self.raw_解码(s,idx=_w(s,0).end())

还是我完全错了?在

TIA


Tags: 文件toinpyimportawslogjson
2条回答

除非您特别需要将JSON响应保存到磁盘以用于其他目的,否则您可以简单地使用以下代码的一些变体:

import boto3

#                                
# Delete all CloudWatch log streams.
#                                
def delete_log_streams():
    next_token = None
    logs = boto3.client('logs')
    log_groups = logs.describe_log_groups()

    for log_group in log_groups['logGroups']:
        log_group_name = log_group['logGroupName']
        print("Delete log group:", log_group_name)

        while True:
            if next_token:
                log_streams = logs.describe_log_streams(logGroupName=log_group_name,
                                                        nextToken=next_token)
            else:
                log_streams = logs.describe_log_streams(logGroupName=log_group_name)

            next_token = log_streams.get('nextToken', None)

            for stream in log_streams['logStreams']:
                log_stream_name = stream['logStreamName']
                print("Delete log stream:", log_stream_name)
                # delete_log_stream(log_group_name, log_stream_name, logs)

            if not next_token or len(log_streams['logStreams']) == 0:
                break

这就是我为我工作的东西。我确定这是哈奇,我不是开发人员,但它为我工作。。。在

cwlogs = boto3.client('logs')

loglist = cwlogs.describe_log_groups(
    logGroupNamePrefix='ENTER NAME OF YOUR LOG GROUP HERE'
)

#writes json output to file...
with open('loglist.json', 'w') as outfile:
    json.dump(loglist, outfile, ensure_ascii=False, indent=4, 
sort_keys=True)

#Opens file and searches through to find given loggroup name
with open("loglist.json") as f:
    file_parsed = json.load(f)

for i in file_parsed['logGroups']:
    print i['logGroupName']

for i in file_parsed['logGroups']:
    cwlogs.delete_log_group(
        logGroupName=(i['logGroupName'])
    )

相关问题 更多 >