Привет, друзья-разработчики! Каким-то образом мне удалось развернуть настоящее работающее приложение. Но будьте осторожны - я не один из вас.

Я писатель, который честно пишет твиты и сообщения в блогах, зарабатывая на жизнь.

Мой опыт работы с командной строкой ограничен курсом Codecademy, который я прошел до того, как был выпущен iPhone 5. Я знаю, как набрать ls, чтобы увидеть содержимое папки без визуального оформления. Тл; доктор Я крутой хакер.

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

Потому что, как я обнаружил, AWS Lambda и Serverless Framework делают действительно несложным развертывание приложения.

Вот как вы тоже можете написать и развернуть бессерверное приложение практически без опыта программирования.

Хорошо, но вроде ... зачем ты это сделал?

Так рада, что вы спросили! Потому что, смотрите, автоматизация - это сила.

Как и у вас, у меня есть дела - слишком много дел - и недостаточно ресурсов для их выполнения.

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

Пользовательские приложения дают мне это. Я мог бы создать команду роботов-миньонов.

Создание приложения

На весь этот проект у меня ушло около часа.

Вот что мы собираемся сделать:

  • Установите бессерверную платформу
  • Создать учетную запись AWS
  • Настройте разрешения AWS (роли IAM) для моего бессерверного пользователя
  • Найдите на npm какой-нибудь свободно доступный код, который достаточно близок к тому, что я хочу
  • Укради это
  • Настроить это
  • Разверните его до Lambda с помощью Serverless Framework

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

Самое замечательное в Serverless Framework то, что AWS сложно понять. Framework заботится обо всех деталях за кулисами и, честно говоря, делает практически невозможным испортить ситуацию.

Показательный пример: я. Я не напортачил.

Эта штука пуленепробиваемая.

Установите бессерверную платформу

Если у вас еще нет Homebrew (а у меня не было), вам нужно сначала установить его. Homebrew позволяет легко установить на вашу машину всевозможные программы для разработчиков.

Откройте свой терминал и вставьте фрагмент с домашней страницы Homebrew:

/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Подождите вечность (или 5 минут), пока он завершится, а затем установите Node; Framework требует, чтобы это выполнялось:

brew install node

Затем вставьте фрагмент с домашней страницы Serverless.com:

npm install serverless -g

Поздравляю! Вы дошли до этого, используя только копирование и вставку.

Создать учетную запись AWS

Перейдите на aws.amazon.com и нажмите одну из пятнадцати полезных кнопок, которые позволяют вам создать новую учетную запись. Я выбрал ту, что в правом верхнем углу:

Они заставят вас ответить на множество вопросов. Прости за это. Все это скоро закончится.

Когда они попросят у вас кредитную карту, вы должны будете дать им ее. Они не взимают с вас никаких денег заранее, но хранят это в файле на всякий случай, если им когда-нибудь понадобится.

Хорошо, я соврал насчет того, что «скоро закончится». Теперь они захотят подтвердить вашу личность, попросив робота позвонить вам по телефону (смеется). Просто успокойте их, на этот раз мы серьезно почти закончили.

Когда телефон зазвонит, введите 4-значный PIN-код на экране. Я посмотрел на таймер на телефоне; это был 20-секундный звонок.

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

Здесь я не являюсь настоящей компанией и выбираю вариант «Базовый», потому что он бесплатный:

Теперь нажмите «Запустить консоль» и снова войдите в систему.

В общем, этот этап занимает 5–10 минут, в зависимости от того, запомнили ли вы (скромное хвастовство) номер своей кредитной карты, потому что вы являетесь активным покупателем в Интернете.

Настроить пользователя IAM

Это необходимо для Serverless Framework, чтобы выполнять всю сложную настройку Lambda от вашего имени.

Для меня это отличная сделка! Давай сделаем это.

Стоит отметить, что я использовал это невероятно полезное пошаговое руководство, чтобы направлять меня на протяжении всего процесса установки. Тебе это тоже может понравиться.

Теперь, когда вы запустили консоль AWS, введите «iam» в удобное поле поиска:

Почему да, мы хотели бы управлять «Доступом пользователей» и «Ключами шифрования». Щелкните dat.

Как только вы войдете в IAM, перейдите в «Пользователи» в левом меню:

А затем вверху «Добавить пользователя»:

Теперь нам нужно настроить этого нового пользователя.

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

Создайте любое имя пользователя и установите флажок рядом с «Программный доступ»:

Нажмите «Присоединить существующие политики напрямую», а затем установите флажок «Доступ администратора»:

Стоит отметить, что, согласно этому сообщению в блоге Serverless.com об IAM, выбор пути AdministratorAccess является быстрым, но рискованным методом YOLO. Я все равно сделаю это, потому что я не разработчик и поэтому не понимаю, какой хаос я могу нанести.

Пожалуйста, не взламывайте меня.

Если вы хотите быть особенно внимательными, следуйте их рекомендациям по медленному, но безопасному подходу.

Идите вперед и нажмите «Далее», а затем «Создать пользователя».

Вы попадете на такой экран. Не закрывайте это окно, оно нам скоро понадобится:

Установить AWS CLI

Это позволит нам (1) работать с AWS, не протыкая их устрашающий интерфейс слишком большим количеством значков; (2) бездумно копировать / вставлять в терминал то, что, по мнению экспертов в Интернете, будет делать то, что мы хотим.

Чтобы начать эту вечеринку по копированию / вставке, введите brew install awscli в свой терминал, чтобы Homebrew установил для вас AWS CLI.

После этого введите aws configure.

Теперь вам понадобится это пользовательское окно IAM, которое вы точно не закрывали! Скопируйте «Идентификатор ключа доступа» и «Секретный ключ доступа» из этого окна и вставьте их в терминал по запросу.

Остальное я оставляю пустым, потому что (как мы уже говорили) YOLO:

AWS Access Key ID [None]: PLZ-PUT-UR-ACCESS-KEY-HERE
AWS Secret Access Key [None]: PLZ-PUT-UR-SECRET-ACCESS-KEY-HERE
Default region name [None]: 
Default output format [None]:

Серфинг NPM для предварительно написанного кода

Поскольку я хипстер с ироничным чувством юмора, я решил сделать свое первое бессерверное приложение бессерверным генератором Ipsum.

Это похоже на Lorem Ipsum, но со случайными модными словечками «бессерверное движение». Возьми. Это бессерверное бессерверное приложение. 😁

Я перешел на npmjs.com, волшебный веб-сайт, на котором люди с гораздо большим сердцем, чем мое, публикуют свой код NodeJS, чтобы другие люди могли его использовать. …бесплатно. Я до сих пор не могу поверить, что это действительно существует.

Я набрал «lorem ipsum» в поле поиска и оценил свои варианты.

Я выбрал тот, который назывался просто lorem-ipsum, потому что как профессиональный писатель мне нравится минимализм с выбором слов. (Спасибо knicklabs!)

Давай поймем это.

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

Использование Serverless Framework для создания нового проекта

Помните, когда мы делали npm install serverless -g? Это установило Serverless Framework, который мы сейчас будем использовать!

Во-первых, давайте создадим папку, в которой будут храниться все наши многочисленные будущие бессерверные проекты. Я назову свою папку «Код», потому что она рифмуется с Node, а я поэт.

Вот где мои крутые хакерские навыки Codecademy становятся актуальными. В терминале введите ls, чтобы увидеть имена всех папок. (На самом деле я не думаю, что есть причина, по которой вам нужно это делать, но также нет причин и не делать этого, так что с таким же успехом можно разогреться.)

Прямо сейчас вы должны смотреть на список всех папок на своем рабочем столе чистым моноширинным шрифтом. Волшебный.

Теперь введите mkdir Code - он же, «создайте каталог (папку) под названием« Код »». Затем cd Code, чтобы перейти туда.

Внутри этой новой папки «Код» я собираюсь создать свое самое первое бессерверное приложение. Смотри, как я иду:

serverless create --template aws-nodejs --path serverless-ipsum

Часть--template aws-nodejs сообщает Serverless, что мы используем AWS и NodeJS. Они будут использовать эту информацию для выполнения волшебных трюков по настройке / настройке от нашего имени.

Часть --path serverless-ipsum сообщает Serverless, что наш новый проект называется «serverless-ipsum». Поэтому вам следует заменить serverless-ipsum на любое имя вашего проекта.

Когда вы нажимаете «ввод», Serverless создаст новую папку с именем «serverless-ipsum». Все ваши приложения будут там жить.

Мы только что положили начало разработке приложения. Теперь давайте дадим ему код для запуска.

Установка пакета lorem ipsum из NPM

Перейдите в тот каталог serverless-ipsum, который мы только что создали, набрав cd serverless-ipsum в вашем терминале.

Затем введите npm install lorem-ipsum, чтобы установить пакет lorem ipsum из NPM.

Теперь в папке нашего приложения есть код! По сути, это уже приложение! Вроде, как бы, что-то вроде.

Настройка этого кода NPM

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

В любом случае вот как должен выглядеть ваш handler.js файл прямо сейчас:

Откройте его и замените все наверху следующим:

'use strict';
const ipsum = require("lorem-ipsum")
module.exports.hello = (event, context, callback) => {
  const response = {
    statusCode: 200,
    body: ipsum(),
  };
callback(null, response);
};

Таким образом, ваш handler.js файл теперь выглядит так:

Здесь мы приказали нашему маленькому обработчику функций запустить этот lorem-ipsum пакет, который мы загрузили, и распечатать для нас результат.

Сначала мы потребовали, чтобы пакет был вверху с const ipsum = require("lorem-ipsum"), а затем попросили body распечатать сгенерированную ipsum с body: ipsum(). Все остальное осталось прежним.

Тестирование локально в терминале

Ребята. Мы создали бессерверный проект в Framework. Мы загрузили предварительно написанный код, который генерирует lorem ipsum.

Мы можем сказать Serverless запустить это. Сейчас. В наших терминалах.

Момент истины. Тип: serverless invoke local --function hello

Ждать его…

{
“statusCode”: 200,
“body”: “Amet cillum est dolor eiusmod elit eiusmod nulla eu do.”
}

О мой Бог.

Настройка этого встроенного генератора lorem ipsum

Латынь - это здорово, но бессерверная тарабарщина лучше. В конце концов, мы создаем бессерверный генератор Ipsum.

Вернитесь в Atom, где ваш проект «serverless-ipsum», вероятно, все еще открыт. Он содержит несколько файлов, и мы собираемся сделать его еще одним.

Нажмите cmd/ctrl + n, чтобы создать новый файл, и назовите его dictionary.js. Создайте массив и заполните его модными словечками, такими как Лямбда и serverdeath:

Для тех из вас, кто находится исключительно в поезде копирования / вставки, вот вам:

module.exports = [
'auto-scaling',
'zero-maintenance',
'pay-per-execution',
'serverdeath',
'function',
'event',
'handler',
'cloud',
'NoOps',
'Lambda',
'microservices',
'monitoring',
]

Затем сохраните файл с cmd/ctrl + s.

Мы также должны вернуться в наш handler.js файл и указать ему использовать только что созданный файл словаря.

Итак, нажмите handler.js и приклейте это вверху:

const dictionary = require("./dictionary")

Теперь снова войдите в body вашей функции и скажите ей, чтобы она вытащила все свои слова из словаря, который вы только что создали, то есть:

module.exports.hello = (event, context, callback) => {
  const response = {
    statusCode: 200,
    body: ipsum({
      words: dictionary,
    }),
  };

Ваш handler.js файл теперь должен выглядеть так:

Давайте попробуем снова локально и посмотрим, будет ли на выходе Serverless Ipsum вместо Lorem Ipsum. Вернитесь в терминал и повторно введите ту команду --function, которая использовалась ранее:

serverless invoke local --function hello

Ждать его…

{
“statusCode”: 200,
“body”: “Multi-cloud openWhisk google cloud functions lambda source services signature function monitoring zero-maintenance monitoring multi-cloud azure.”
}

Это буквально самое красивое, что я когда-либо видел.

Давай выложим это в Интернет

Да, да, хорошо, значит, он работает на вашем личном ноутбуке. Но настоящие разработчики получили доступ к своим материалам в Chrome.

Это требует еще одного крошечного шага.

Настройка этого serverless.yml

Бессерверный YAML (serverless.yml) - это файл конфигурации, который Serverless использует для управления функциями (также известными как фрагменты кода), которые вы развертываете в Lambda. Нам нужно сказать ему, чтобы сделать для нас небольшой веб-сайт.

Вот как сейчас выглядит наш serverless-ipsum YAML файл (все комментарии свернуты для краткости):

Мы собираемся изменить пару вещей в разделе functions.

Это «привет» по умолчанию. Мы собираемся заменить его на «ipsum», потому что я довольно разумно решил, что хочу запустить Serverless Ipsum с помощью команды ipsum. (Примечание: это означает, что с этого момента вы будете запускать --function ipsum вместо --function hello.)

Затем мы сообщим обработчику функции, что при запуске ipsum мы действительно хотим, чтобы он отправлял бессерверный Ipsum по общедоступному URL-адресу через HTTP-запрос.

Бла-бла-бла, просто перейдите к строке 57 в своем редакторе и замените все это на это:

functions:
  ipsum:
    handler: handler.ipsum
    events:
      - http:
          method: get
          path: /

И теперь ваш serverless.yml должен выглядеть так!

Вернитесь в свой handler.js файл и замените module.exports.hello на module.exports.ipsum. Это потому, что мы изменили имя нашей функции с «hello» на «ipsum».

Итак, теперь ваш handler.js файл выглядит так:

Развернуть развернуть развернуть!

Пора. Мы готовы запустить эту штуку по-настоящему.

Садись в этот терминал.

Введите serverless deploy.

Задержи дыхание.

А также -

(!!!)

БУМ.

Возьмите этот URL рядом с `GET`: https://791qej6263.execute-api.us-east-1.amazonaws.com/dev/

Скопируйте / вставьте его в свой браузер и посмотрите:

Наше приложение. Жив. В Интернете!

То, что мне еще нужно сделать

Хорошо, давай будем настоящими. Пользовательский интерфейс не очень приятный. Я планирую получить для этого домен и дать ему какой-то простой интерфейс, чтобы он выглядел, по крайней мере, правдоподобно профессионально.

Еще один день, друзья. В другой день.

В сумме

Я писатель. Я не умею писать код. Но я сделал бессерверное приложение и выложил его в Интернет на всеобщее обозрение.

Бессерверная версия: это может сделать каждый .

AWS: все-таки не так страшно .

Надеюсь, вы все используете это, чтобы сделать что-нибудь крутое.