Пример получения данных из AWS Cloudwatch используя Google Script

    Cloudwatch Log это сервис AWS в который приложения или Bash скрипты могут отправлять данные в виде строк или JSON, потом их можно найти или построить различные графики средствами того же AWS.

    Как то раз у меня возникло желание получить данные из AWS Cloudwatch Log, обработать их особым образом и красиво представить в виде графика. Google Spreadsheet хорошо справляется с визуализацией данных, и ранее для подобных задач я загружал в него данные используя Ruby. Но тот же ruby скрипт нужно где-то хостить и периодически запускать, а все что он будет делать это запрашивать данные из одного API (AWS) и ложить их в другой (Spreadsheet). Хорошо бы, если бы Spreadsheet сам мог бы запрашивать данные, и оказывается он может, используя Google Script. Удивительно, сколько всего на самом деле умеют гугл доки.

    Google Script позволяет не только создавать пользовательские функции и макросы используя JavaScript, но и обращаться к внешнему API.
    У AWS есть SDK под JavaScript, так что я не ожидал никаких сложностей, но не тут то было. Оказалось, что этот SDK будучи импортированным в проект GS не может найти объект «window» и не работает.

    Пришлось почитать API доки и самому реализовать вычисления сигнатуры для запроса. В этом нет ничего технически сложного, просто склеивание строк и вычисление хеша. Поэтому я не вдаюсь в подробности, а просто представляю свое решение на случае если кто-то столкнётся с подобной задачей.


    код выложен на GitHub

    Что бы проверить его работу можете:
    • сделать копию документа
    • открыть «Инструменты» -> «Редактор скриптов»
    • в «Файл»->«Свойства проекта»->«Свойства скрипта» добавить строки «access_key_id» и «secret_access_key» и указать в них значения своих API ключей
    • Потом открыть файл «Код.gs» и запустить функцию «dataFromCloudWatch»
    • Результаты будут видны в «Вид»->«Отчет о выполнении». Это для простоты. В реальной задаче ответ легко распарсить и вставить значения в соответствующие ячейки электронной таблицы.


    Код использует запрос GetMetricStatistics но при необходимости вы можете запросить любой другой метод, алгоритм подписи останется без изменений.

    Update: Совсем забыл упомянуть, что можно настроить периодический запуск этой функции через «Ресурсы»->«Триггеры текущего проекта».

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое