Skip to content

Instantly share code, notes, and snippets.

@ikait
Created December 3, 2016 05:13
Show Gist options
  • Save ikait/df31a5fe50775bb0401b1ecd32893a60 to your computer and use it in GitHub Desktop.
Save ikait/df31a5fe50775bb0401b1ecd32893a60 to your computer and use it in GitHub Desktop.
Cleanup logs Lambda output on CloudWatch
#!/bin/bash
remove_log_streams() {
LOG_GROUP_NAME=("$1")
LOG_STREAMS=("$2")
PROFILE=("$3")
for LOG_STREAM in ${LOG_STREAMS[@]}; do
LOG_STREAM=${LOG_STREAM//\"/} # remove double quotes which are added by jq
echo "Delete $LOG_GROUP_NAME: $LOG_STREAM"
aws logs \
--profile "${PROFILE}" delete-log-stream \
--log-group-name "${LOG_GROUP_NAME}" \
--log-stream-name "${LOG_STREAM}"
done
}
get_log_streams() {
LOG_GROUP_NAME=("$1")
DATE=("$2")
PROFILE=("$3")
echo `aws logs \
--profile "${PROFILE}" describe-log-streams \
--log-group-name "${LOG_GROUP_NAME}" \
--log-stream-name-prefix "${DATE}" --page-size 50 \
| jq ".logStreams | .[] | .logStreamName"`
}
remove_log_streams_by_date() {
LOG_GROUP_NAME=("$1")
DATE=("$2")
PROFILE=("$3")
LOG_STREAMS=`get_log_streams $LOG_GROUP_NAME $DATE $PROFILE`
remove_log_streams "$LOG_GROUP_NAME" "$(echo ${LOG_STREAMS[@]})" "$PROFILE"
}
echo "Start deleting log streams at $2 on $1 ($3)"
remove_log_streams_by_date "$1" "$2" "$3"
#!/bin/bash
#====================================================================#
# #
# _ ______ ______ _____ _______ ______ ______ #
# | | | | | | | | \ \ | | | | / | | \ | | | \ #
# _ | | | |__| | | | | | | | | | | | | | | |__| | #
# |_|__|_| |_| |_| |_| |_| _|_|_ |_| \_|__|_/ |_| \_\ #
# #
# #
#====================================================================#
#
# 1. Settings
#
LOG_GROUP_NAME="/aws/lambda/XXXXXXXXXXXXXXXXXX"
PROFILE="default"
START_DATE=2016/01/11
END_DATE=2016/01/20
PARALLELISM=2
#
# 2. Start janitor!
#
# ./janitor.sh
#
#====================================================================#
get_dates_array() {
_DATES=()
_START_DATE=("$1")
_END_DATE=("$2")
_CURRENT_DATE=$_START_DATE
while [ 1 ] ; do
_DATES+=($_CURRENT_DATE)
if [ $_CURRENT_DATE = $_END_DATE ] ; then
break
fi
_CURRENT_DATE=`date -j -f %Y/%m/%d -v+1d "$_CURRENT_DATE" "+%Y/%m/%d"`
done
echo ${_DATES[@]}
}
get_dates_array $START_DATE $END_DATE | \
xargs -n1 -P${PARALLELISM} -I{} ./remove.sh ${LOG_GROUP_NAME} {} ${PROFILE}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment