Я создал немного кода Ruby, который, кажется, удовлетворяет анализатору URL-адресов CloudWatch. Я не уверен, почему вы должны дважды убежать от некоторых вещей, а затем заменить %
на $
в других. Я предполагаю, что есть какая-то причина, но я не мог придумать хороший способ сделать это, поэтому я просто грубо заставляю это. Если у вас есть что-то лучше, или вы знаете, почему они это делают, пожалуйста, добавьте комментарий.
ПРИМЕЧАНИЕ: filter
, который я тестировал, является своего рода basi c, и я не уверен, что может потребоваться изменить если вам это действительно нравится.
# Basic URL that is the same across all requests
url = 'https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/'
# CloudWatch log group
log_group = '/aws/my/log/group'
# Either specify the instance you want to search or leave it out to search all instances
instance = '/log-events/i-xxxxxxxxxxxx'
OR
instance = '/log-events'
# The filter to apply.
filter = '[incoming_ip, user_name, user_ip , timestamp, request, status_code = 5*, bytes, url, user_agent]'
# Start time. There might be an End time as well but my queries haven't used
# that yet so I'm not sure how it's formatted. It should be pretty similar
# though.
hours = 48
start = "&start=-#{hours*60*60*1000}"
# This will get you the final URL
final = url + CGI.escape(CGI.escape(log_group)) + instance + '$3FfilterPattern$3D' + CGI.escape(CGI.escape(filter)).gsub('%','$') + CGI.escape(start).gsub('%','$')