Если вы читаете о времени, вы будете знать, что я большой сторонник, который сейчас проведу время на создание вещей, которые экономят время в будущем. С этой целью я построил простого бота в твиттере, который иногда публиковал ссылки на мои статьи и сохранил бы свою учетную запись интересной, даже когда я слишком занят, чтобы использовать его. Твитты помогают двигать трафик на мои сайты, и мне не нужно поднимать палец.
Я управлял ботом на экземпляре Amazon EC2 в течение месяца. Мое использование AWS исторически было довольно недорогим (меньше, чем цена кофе в большинстве Америки), поэтому я был удивлен, когда маленький экземпляр, который я использовал, увеличил счет на 90% больше, чем месяц назад. Я не думаю, что AWS стоит дорого, чтобы быть ясным, но все же … Я дешев. Я хочу своего бота в Твиттере, и я хочу его меньше.
Я хотел исследовать AWS Lambda, и подумал, что это хорошая возможность. В отличие от экземпляра EC2, который постоянно работает (и заряжает вас за это), Lambda заряжает вас по запросу и в зависимости от продолжительности времени, которую ваша функция выполняет для работы. Также есть бесплатный уровень, и первые 1 миллион запросов, плюс определенное количество вычислительного времени, бесплатны. Примерно переведен на запуск бота в Твиттере, который публикует для вас, скажем, два раза в день, ваша ежемесячная стоимость использования Lambda будет полной … несет один … ничего. Я выполняю свою функцию Lambda уже пару недель, совершенно бесплатно.
Когда недавно я пришел ко мне, чтобы принять правления @freecodecampto Twitter, я решил использовать аналогичную стратегию, а также использовать эту возможность, чтобы документировать процесс для вас, дорогой читатель.
Так что, если вы в настоящее время используете полный рабочий экземпляр для выполнения задачи, который может быть выполнен с работой Cron, это статья для вас. Я расскажу, как написать вашу функцию для Lambda, как ее настроить для автоматического запуска, и в качестве милого маленького бонуса, удобный скрипт Bash, который обновляет вашу функцию из командной строки, когда вам нужно внести изменения. Давай сделаем это!
Когда я написал код для своего Twitter Bot в Go, я намеревался, чтобы он запустил его на экземпляр AWS и заимствовал в значительной степени у Francesc’s Awesome просто для фан -эпизода Анкет Некоторое время спустя я изменил его, чтобы случайным образом выбрать статью из моих RSS -каналов и чирикать ссылку два раза в день. Я хотел сделать что -то подобное для бота @freecodecampto, и я твитнул вдохновляющую цитату о программировании каждое утро.
Это хороший вариант использования для Lambda, потому что:
- Программа должна выполняться один раз
- Он работает по регулярному расписанию, используя время в качестве триггера
- Это не нужно постоянно работать
Важно помнить, что Lambda выполняет функцию один раз в ответ на событие, которое вы определяете. Наиболее широко применимым триггером является простое выражение Cron, но есть много других спусковых событий, которые вы можете подключить. Вы можете получить обзор Здесь Анкет
Я обнаружил, что это действительно просто сделать в ходе. Во -первых, возьмите AWS-Lambda-Go библиотека:
go get github.com/aws/aws-lambda-go/lambda
Тогда сделай это своим func main ()
:
func main() { lambda.Start(tweetFeed) }
Где TweetFeed
это название функции, которая заставляет все происходить. Хотя я не буду писать весь Twitter Bot здесь, вы можете просмотреть мой код на GitHub Анкет
Я предполагаю, что у вас уже есть аккаунт AWS. Если нет, то первое сначала здесь: https://aws.amazon.com/free
1. Создайте свою функцию
Найдите AWS Lambda в списке услуг, затем ищите эту блестящую кнопку:
Мы собираемся авторизировать функцию с нуля. Назовите свою функцию, затем под Время выполнения Выберите «Go 1.x».
Под Название роли Напишите любое имя, которое вам нравится. Это необходимое поле, но не имеет значения для этого варианта использования.
Нажмите Создать функцию.
2. Настройте свою функцию
Вы увидите экран для настройки вашей новой функции. Под Обработчик Введите имя своей программы GO.
Если вы прокрутите вниз, вы увидите место, чтобы войти в переменные среды. Это отличное место для ввода токенов и секретов API Twitter, используя имена переменных, которые ожидает ваша программа. Функция AWS Lambda создаст вам среду, используя переменные, которые вы предоставляете здесь.
Для этого варианта использования не требуется дальнейших настроек. Нажмите Сохранить в верхней части страницы.
3. Загрузите свой код
Вы можете загрузить свой функциональный код в виде zip -файла на экране конфигурации. Поскольку мы используем GO, вы захотите иди строить
сначала, затем застегивайте полученный исполняемый файл, прежде чем загрузить его в Lambda.
… Конечно, я не собираюсь делать это вручную каждый раз, когда хочу настроить свою функцию. Вот что awscli
И этот сценарий Bash для!
update.sh
go build && \ zip fcc-tweet.zip fcc-tweet && \ rm fcc-tweet && \ aws lambda update-function-code --function-name fcc-tweet --zip-file fileb://fcc-tweet.zip && \ rm fcc-tweet.zip
Теперь всякий раз, когда я вношу настройку, я просто бегаю Bash Update.sh
Анкет
Если вы еще не используете Интерфейс командной строки AWS , сделать PIP установить awscli
И спасибо мне позже. Найдите инструкции для настройки и настройки за несколько минут Здесь под Быстрая конфигурация Анкет
4. Проверьте свою функцию
Хочешь увидеть? Конечно, вы делаете! Нажмите «Настроить события тестирования» в раскрывающемся спине в верхней части.
Поскольку вы используете триггер на основе времени для этой функции, вам не нужно вводить какой-либо код для определения событий тестирования во всплывающем окне. Просто напишите любое имя под Имя события и опустошить JSON в поле ниже. Затем нажмите Создать Анкет
Нажмите Тест В верхней части страницы, и если все работает правильно, вы должны увидеть …
5. Настройка событий CloudWatch
Чтобы выполнить нашу функцию, так как мы будем работать с Cron — как регулярно запланированное событие, основанное на времени — мы будем использовать CloudWatch. Нажмите События CloudWatch в Дизайнер боковая панель.
Под Настройте триггеры , вы создадите новое правило. Выберите описательное имя для вашего правила без пробелов и пунктуации и убедитесь Расписание выражения выбран. Затем введите время, которое вы хотите, чтобы ваша программа работала как скорость выражения , или выражение Cron.
Выражение Cron выглядит следующим образом: Крон (0 12 * *? *)
* | 12 | * | 0 | Беги в полдень (UTC) каждый день | ? | * |
Для получения дополнительной информации о том, как написать свои выражения Cron, прочитайте это.
Чтобы узнать, что такое текущее время в UTC, нажмите здесь.
Если вы хотите, чтобы ваша программа работала два раза в день, скажем, один раз в 10:00 и снова в 15:00, вам нужно будет установить два отдельных триггера CloudWatch и правила выражения Cron.
Нажмите Добавить Анкет
Это все, что вам нужно, чтобы ваша лямбда функционировала и работала! Теперь вы можете сидеть сложа руки, расслабиться и делать более важные вещи, чем поделиться своими ссылками на RSS в Твиттере.
Оригинал: «https://dev.to/victoria/running-a-free-twitter-bot-on-aws-lambda—2pik»