ebcli/lib/cloudwatch.py (49 lines of code) (raw):
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You
# may not use this file except in compliance with the License. A copy of
# the License is located at
#
# http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.
from ebcli.lib import aws
from ebcli.objects.log_stream import LogStream
def _make_api_call(operation_name, **operation_options):
return aws.make_api_call('logs', operation_name, **operation_options)
def get_all_stream_names(log_group_name, log_stream_name_prefix=None):
"""
Return all stream names under the log group.
param: log_group_name: str
"""
streams = describe_log_streams(
log_group_name=log_group_name,
log_stream_name_prefix=log_stream_name_prefix,
)
streams = streams or {}
return [
log_stream.name
for log_stream
in LogStream.log_stream_objects_from_json(streams.get('logStreams', []))
]
def get_log_events(log_group_name, log_stream_name, next_token=None,
start_from_head=False, start_time=None, end_time=None,
limit=None):
params = dict(logGroupName=log_group_name, logStreamName=log_stream_name)
if next_token is not None:
params['nextToken'] = next_token
if start_from_head is not None:
params['startFromHead'] = start_from_head
if start_time is not None:
params['startTime'] = start_time
if end_time is not None:
params['endTime'] = end_time
if limit is not None:
params['limit'] = limit
return _make_api_call('get_log_events', **params)
def describe_log_streams(
limit=None,
log_group_name=None,
log_stream_name_prefix=None,
next_token=None
):
params = dict()
if log_group_name:
params['logGroupName'] = log_group_name
if log_stream_name_prefix:
params['logStreamNamePrefix'] = log_stream_name_prefix
if next_token:
params['nextToken'] = next_token
if limit:
params['limit'] = limit
return _make_api_call('describe_log_streams', **params)
def log_group_exists(log_group_name):
response = _make_api_call('describe_log_groups', logGroupNamePrefix=log_group_name)
return len(response['logGroups']) > 0