CI/CD для приложений Nodejs (5 серия деталей)
В этом серии семинаров мы строим CI/CD для Nodejs Servelless Applications.
Чтобы завершить эту семинар, вам понадобится доступ к учетной записи AWS. Ваш доступ должен иметь достаточные разрешения для создания ресурсов в IAM, CloudFormation, Gateway API, CodeCommit, CodePipipeline, CodeBuild, CodeDeyploy и S3.
Если у вас сейчас нет учетной записи AWS, вы можете создать один здесь.
Если вы предпочитаете запустить семинар с локального компьютера без использования Cloud9, убедитесь, что вы устанавливаете следующие инструменты, которые доступны для Linux, MacOS и Windows.
Предварительные условия
Docker Desktop — требуется для моделирования лямбда-время выполнения локально.
SAM CLI V0.31.0 + — для запуска функций локально и пакет/развертывание приложений SAM.
AWS CLI — для создания ресурсов в вашей учетной записи AWS.
Git Client — для взаимодействия с репозиторий CodeCommit, нажав изменения кода.
Nodejs и NPM — Применение приложения, которое вы создадите, является NodeJS.
Создать новое приложение SAM
Модель приложения AWS Serverless (AWS SAM) — это каркас с открытым исходным кодом, что разработчики используют для создания серверу сервесовых приложений на AWS.
Приложение без сердца — это сочетание функций Lambda, источников событий и других ресурсов, которые работают вместе для выполнения задач. Но приложение без сервеса — это больше, чем просто функция Lambda — она может включать в себя дополнительные ресурсы, такие как API, базы данных и сопоставления источников событий.
В этой первой части серии семинаров вы узнаете, как быстро лечить приложение SAM и понять, как он структурирован.
Инициализировать проект
AWS SAM предоставляет вам инструмент командной строки, AWS Sam CLI, что позволяет вам создавать и управлять серверусными приложениями. Это особенно облегчает леса нового проекта, поскольку он создает начальный скелет призма Hello World Application, поэтому вы можете использовать его как базовый уровень и продолжать строить ваш проект оттуда.
Запустите следующую команду, чтобы подкрепить новый проект:
sam init
Подскажет параметры конфигурации проекта:
Тип 1, чтобы выбрать AWS Быстрый запуск шаблона
Тип 1, чтобы выбрать ZIP в качестве типа пакета
Выберите Nodejs12.x для выполнения
Оставьте SAM-приложение по умолчанию для имени проекта
Тип 1, чтобы выбрать пример Hello World
Проект должен быть инициализирован
Архитектура проекта
Простое проект Hello World Sam, который вы только что создали следующую архитектуру при развернутии. Он имеет одну функцию лямбда, шлюз API, который предоставляет ресурс A/Hello и вызывает функцию лямбда при вызове с http Get. Функция лямбда предполагает роль IAM, которая может иметь разрешения для взаимодействия с другими ресурсами AWS, например, в базе данных.
Теперь рассмотрим шаблон Сэма.
Продолжай и откройте файл Sam-App/Template.yaml.
Он должен иметь структуру, как следующее.
Вы можете заметить, что синтаксис выглядит точно так же, как AWS CloudFormation, это связано с тем, что шаблоны SAM являются расширением шаблонов облаков. То есть любой ресурс, который вы можете объявить в облачности, вы также можете объявить в шаблоне Сэма. Давайте посмотрим на компоненты шаблона.
Преобразование
Обратите внимание на линию преобразования шаблона, он говорит о облачности, что этот шаблон придерживается спецификации модели приложений с открытым исходным кодом AWS.
Глобали
Этот раздел определяет свойства, общие для всех ваших функций без сервеса и API. В этом случае он указывает, что все функции в этом проекте будут иметь тайм-аут по умолчанию 3 секунды.
Hello World Function
В следующем разделе создается функция лямбда с ролью исполнения IAM. Он также указывает, что код для этой функции Lambda расположен под папкой, названной Hello-World, и что ее enterpoint — это функция, названная лямбандлер в файле с именем app.js.js.
Обратите внимание, что роль IAM не указана явно, это потому, что SAM по умолчанию создаст новый. Вы можете переопределить это поведение и передавать свою собственную роль, указав параметр роли. Для получения полного списка параметров вы можете указать для функции Lambda, проверьте Сэм Ссылка.
Событие триггеры
Этот раздел является частью определения функции, и он указывает различные события, которые запускают функцию лямбда. В этом случае мы указываем событие, чтобы быть шлюзом API с конечной точкой на/hello, который будет прослушивать метод http.
Выходы
Раздел выходов является необязательным, и он объявляет выходные значения, которые вы сможете импортировать в другие стопки облака (для создания ссылок на перекрестные стеки) или просто просматривать их на консоли CloudFation. В этом случае мы выполняем URL конечной точки шлюза API, функция лямбда ARN и роль IAM ARN доступна в качестве выводов, чтобы их легче найти.
Исследуйте код лямбда
Давайте посмотрим на код Hello World Lambda функции. Откройте файл App.js под папкой Hello-World. Обратите внимание, что ваша функция может иметь дополнительные прокомментированные код, эти строки были удалены из следующего примера для ясности:
#### Обработчик лямбда Обработчик — это метод в вашей функции лямбда, которые обрабатывают события. Когда вы вызываете функцию, время выполнения запускает метод обработчика. Когда обработчик выходит или возвращает ответ, он становится доступным для обработки другого события. В этом случае обработчик лямбда — это функция лямбдагандлера, как указано в Sam Template.yaml.
Объект события
Первый аргумент, переданный функции обработчика, является объектом события, который содержит информацию от Invoker. В этом случае invoker — это шлюз API, который передает информацию о запросе HTTP в качестве строки формата JSON, а время выполнения лямбда преобразует его на объект.
Объект контекста
Второй аргумент — это объект контекста, который содержит информацию о среде вызова, функции и выполнения. Вы можете получить информацию, такую как имя журнала CloudWatch Log или оставшееся время выполнения для функции.
Обработчик обработчика
Gateway API ожидает обработчик для возврата объекта ответа, который содержит statusCode и body, но он также может содержать дополнительные заголовки.
CI/CD для приложений Nodejs (5 серия деталей)
Оригинал: «https://dev.to/aws-builders/deploying-ci-cd-for-nodejs-serverless-applications-workshop-4ia6»