Я хотел, чтобы твиттер freeCodeCamp Toronto твитировал цитаты, поэтому я создал для этого бесплатного бота.

1656664216 ya hotel chtoby tvitter freecodecamp toronto tvitiroval czitaty poetomu ya

Если вы прочтете «О времени», то поймете, что я очень сторонник тратить время на создание вещей, которые сэкономят время в будущем. С этой целью я создал простого бота Twitter в Go, который время от времени публиковал бы ссылки на мои статьи и поддерживал мой аккаунт интересным, даже когда я слишком занят, чтобы им пользоваться. Твиты помогают привлечь трафик на мои сайты, и мне не нужно пошевелить и пальцем.

Я запускал бота на экземпляре Amazon EC2 около месяца. Раньше я использовал AWS довольно дешево (ниже, чем цена кофе в большинстве стран Северной Америки), поэтому я был удивлен, когда маленький экземпляр, которым я пользовался, получил счет на 90% больше месяца назад. Чтобы было понятно, я не думаю, что AWS дорог, но все же… я дешев. Мне нужен бот Twitter, и я хочу его подешевле.

Я намеревался исследовать AWS Lamda, и решил, что это хорошая возможность. В отличие от экземпляра EC2, который постоянно работает (и взимает плату за это), Lambda взимает плату за запрос и в соответствии с продолжительностью времени, которое требуется для выполнения вашей функции. Также есть бесплатный уровень, и первый миллион запросов, а также определенное время вычисления бесплатны.

В грубом переводе на использование бота Twitter, который публикует для вас сообщения, скажем, дважды в день, ваши ежемесячные расходы на использование Lambda составят общую сумму… несу одну… ничего. Я использую свою функцию Lambda уже пару недель совершенно бесплатно.

Когда недавно пора для меня управлять Twitter @freeCodeCampTO, я решил применить подобную стратегию. Я также воспользовался этой возможностью, чтобы задокументировать процесс для вас, дорогой читатель.

Итак, если вы используете постоянно запущенный экземпляр для задания, которое может обслуживаться заданием cron, это статья для вас. Я расскажу, как написать вашу функцию для Lambda и как настроить ее на автоматический запуск. И, как сладкий маленький бонус, я добавлю удобный сценарий bash, который обновляет вашу функцию из командной строки всякий раз, когда вам нужно внести изменения. Давайте сделаем это!

Подходит ли вам Lambda?

Когда я писал код для своего бота Twitter в Go, я намеревался запустить его на экземпляре AWS, и я многое позаимствовал из великолепного эпизода Франческа Just for Func. Через некоторое время я сменил его, чтобы случайно выбирать статью из моих RSS-каналов и публиковать ссылку в Twitter дважды в день. Я хотел сделать что-то вроде бота @freeCodeCampTO, чтобы он каждое утро публиковал вдохновляющую цитату о программировании.

Это хороший вариант использования Lambda, поскольку:

  • Программа должна выполняться один раз
  • Он работает по регулярному расписанию, используя время как триггер
  • Нет необходимости работать постоянно

Важно помнить, что Lambda запускает функцию один раз в ответ на событие, которое вы определяете. Самым распространенным триггером является простое выражение cron, но много других триггерных событий, которые можно подключить. Вы можете получить обзор здесь.

Напишите лямбда-функцию

Я нашел, что это очень просто сделать в Go. Сначала возьмите библиотеку aws-lambda-go:

go get github.com/aws/aws-lambda-go/lambda

Тогда сделайте это своим func main():

func main() { 
       lambda.Start(tweetFeed) 
}

где tweetFeed это название функции, заставляющей все происходить. Хотя я не буду писать полный текст бота Twitter, вы можете просмотреть мой код на GitHub.

Настройка AWS Lambda

Я предполагаю, что у вас уже есть аккаунт AWS. Если нет, прежде всего здесь: https://aws.amazon.com/free

1. Создайте свою функцию

Найдите AWS Lambda в списке услуг и найдите эту блестящую кнопку:

qIm1TxAXfJKEGAFbnbqES24MR65doEaTekrW

Мы создадим функцию с нуля. Назовите свою функцию, а затем под Время выполнения выберите «Go 1.x».

под Имя роли напишите любое имя. Это обязательное поле, но нерелевантное для этого случая использование.

Нажмите Создать функцию.

Q05OinPHTS5NY-XOFLXE5sGaSsU-qESrDVWy

2. Настройте свою функцию

Вы увидите экран для настройки новой функции. под обработчик введите название программы Go.

B9QTTbx0JTqtsumeH0Jf387oW1PLpMe7U7Fu

Если прокрутить вниз, вы увидите место для ввода переменных среды. Это отличное место для ввода токенов и секретов Twitter API, используя имена переменных, которые ожидает ваше приложение. Функция AWS Lambda создаст для вас среду с помощью переменных, которые вы предоставляете здесь.

6g09YtNJPhHQYNwS1flNHOg4TgjXY0AwFYB3

Для этого варианта использования дополнительные настройки не требуются. Нажмите сохранить в верхней части страницы.

3. Загрузите код

Вы можете загрузить свой код функции в качестве zip-файла на экране конфигурации. Поскольку мы используем Go, вы захотите это сделать go build сначала заархивируйте полученный исполняемый файл перед загрузкой в ​​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 install awscli и поблагодарите меня позже. Найдите инструкции по настройке и настройке через несколько минут здесь Быстрая настройка.

4. Проверьте свою функцию

Хочешь увидеть, как это идет? Конечно! Щелкните «Настроить тестовые события» в раскрывающемся меню вверху.

JWXu1kePtQwT0sMHRSuGblbMqTnn5rFMigV2

Поскольку для этой функции вы будете использовать триггер на основе времени, вам не нужно вводить код для определения тестовых событий во всплывающем окне. Просто напишите любое имя под ним Название события и очистите JSON в поле ниже. Затем нажмите Создать.

fLckVqobjQUiH32AMTkhbaMdyQeiyu64KVFU

Нажмите Тест в верхней части страницы, и если все работает правильно, вы должны увидеть…

tqJRKThljxHyeBe0EUULpDbIUz6NFKi5Dk9Z

5. Настройте события CloudWatch

Чтобы запустить нашу функцию так же, как задача cron – как регулярное запланированное событие на основе времени – мы используем CloudWatch. Нажмите События CloudWatch в Дизайнер боковая панель.

RT2ZUJs1FniR6coBW4HBiM1zlvtfDDvyBt2w

под Настроить триггеры, вы создадите новое правило. Выберите для своего правила описание без пробелов и пунктуации и убедитесь Выражение расписания выбран. Затем введите время, в течение которого ваша программа должна работать как a выражение скоростиили выражение cron.

Выражение cron выглядит так: cron(0 12 * * ? *)

Пункты в скобках обозначают в порядке: минуты, часы, день луны, месяц, день недели и год. На английском языке написано: Run at noon (UTC) каждый день.

Чтобы узнать больше о том, как написать свои выражения cron, прочтите это.

Нажмите здесь, чтобы узнать, какое время находится в UTC.

Если вы хотите, чтобы ваше приложение запускалось дважды в день, скажем, в 10:00 и снова в 15:00, вам нужно установить два отдельных триггера событий CloudWatch и правила выражения cron.

Нажмите добавить.

h5qitsKU9RfEayGeKITs32sWemUvD2KYMioV

Смотрите, как оно идет

Это все, что вам нужно, чтобы ваша функция Lambda заработала! Теперь вы можете сидеть сложа руки, расслабиться и совершать более важные дела, чем делиться своими RSS-ссылками в Twitter.

Добавить комментарий

Ваш адрес email не будет опубликован.