我有一个很长的cloudwatch日志组列表,我需要删除....接近一百。由于您必须一次删除它们,所以我认为一个小的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,并且以下内容出错了...
追溯(最近一次通话最近):file_parsed = json.loads(f)中的文件“ CWLogCleaner.py”,第18行,文件“ /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/加载中的2.7 / lib / python2.7 / json / init .py“行339返回_default_decoder.decode文件” /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/ 2.7 / lib / python2.7 / json / decoder.py“,行364,在解码obj中,结束= self.raw_decode(s,idx = _w(s,0).end())
还是我完全以错误的方式做这件事?
TIA
除非您特别需要将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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句