以下是一个使用AWS SDK for Python(Boto3)来过滤和导出AWS日志的示例代码:
import boto3
# 创建一个CloudWatch Logs client
logs_client = boto3.client('logs')
def filter_and_export_logs(log_group_name, filter_pattern, start_time, end_time, export_destination):
# 创建一个导出任务
response = logs_client.create_export_task(
taskName='my-export-task',
logGroupName=log_group_name,
fromTime=start_time,
to= end_time,
destination=export_destination,
destinationPrefix='exported-logs/'
)
# 获取导出任务的ID
export_task_id = response['taskId']
# 等待导出任务完成
while True:
response = logs_client.describe_export_tasks(
taskId=export_task_id
)
status = response['exportTasks'][0]['status']['code']
if status == 'COMPLETED':
print('导出任务已完成')
break
elif status == 'CANCELLED' or status == 'FAILED':
print('导出任务失败或被取消')
break
else:
print('导出任务正在执行...')
continue
# 使用示例
log_group_name = 'my-log-group'
filter_pattern = '[timestamp, requestId, message]'
start_time = 1577836800000 # 开始时间的时间戳,例如:2020年1月1日
end_time = 1609459199000 # 结束时间的时间戳,例如:2020年12月31日
export_destination = 's3-bucket-name' # 导出到S3存储桶,替换成实际的存储桶名称
filter_and_export_logs(log_group_name, filter_pattern, start_time, end_time, export_destination)
请确保已安装boto3
库,并且已配置AWS凭证。此示例代码假设您已创建了一个CloudWatch Logs日志组,并且您有权限访问该日志组。
这个代码示例会创建一个导出任务,将指定日志组中满足过滤模式的日志导出到指定的S3存储桶中。您可以根据需要修改log_group_name
、filter_pattern
、start_time
、end_time
和export_destination
变量的值来适应您的实际需求。