Прежде чем мы начнем создавать полностью автоматизированный конвейер непрерывной доставки, в этой части вы узнаете, как строить, упаковать и развернуть приложение без сервера, используя AWS SAM CLI.
Несмотря на то, что эта серия семинаров посвящена автоматизации развертываний, эта часть очень важна для изучения основания, как упаковать и развернуть приложение без сервера.
Изучение того, как выполнять ручное развертывание, также полезно для разработчиков, которые хотят создать свой собственный личный стек и часто развернуть его для проверки изменений, прежде чем отправлять их в хранилище управления источником.
Поговорим об артефактах
Артефакты относятся к выводу вашего процесса сборки в контексте CI/CD. Артефакты, как правило, в форме файла Zip/TAR, JAR или двоичного файла. Затем вы принимаете эти артефакты и разверните их в разных средах (то есть Dev, Test, Prod).
Для без серверных проектов артефакты должны быть загружены в ковш S3 для службы Lambda, чтобы забрать их. SAM CLI заботится о управлении этим процессом загрузки артефактов на S3 и ссылке на них во время развертывания.
Zip -файл
Первый артефакт, который генерируется в проекте без сервера, — это ваша кодовая база, которая сжимается в файле ZIP и автоматически загружается в ковш S3 CLI на этапе пакета
Упакованный шаблон
Второй артефакт, который Сэм CLI генерирует во время фазы упаковки, является упакованным шаблоном. Который в основном является копией шаблона вашего проекта. YAML, за исключением того, что он ссылается на местоположение файла ZIP (первый артефакт) в ведре S3.
На следующем изображении показан пример упакованного шаблона.
Обратите внимание, как Codeuri ссылается на zip -файл на ведре S3, а не на локальный каталог. Вот как AWS Lambda может вытащить ваш код во время развертывания.
Создайте приложение
Чтобы создать проект SAM, мы собираемся использовать команду SAM Build. Эта команда итерация проходит через функции в вашем приложении, ищет файл Manifest (например, redtion.txt или package.json), который содержит зависимости, и автоматически создает артефакты развертывания.
Из корня папки Sam-App запустите следующую команду в терминале:
cd ~/environment/sam-app sam build
Когда сборка успешно завершается, вы должны увидеть новый каталог, созданный в корне проекта, названного .AWS-SAM. Это скрытая папка.
Изучите папку сборки
Найдите минутку, чтобы исследовать содержание папки сборки.
Обратите внимание, что модульные тесты автоматически исключены из него. Это потому, что они указаны в файле Sam-App/Hello-World/.npmignore.
Развернуть приложение
Команда SAM развертывает ваше приложение, запустив стек CloudFormation. Эта команда имеет управляемый интерактивный режим, который вы включаете, указав параметр –guided. Рекомендуется в первый раз развернуть с руководством с гидом, поскольку он захватит конфигурацию для будущих развертываний.
Запустите следующую команду на том же уровне каталога, где находится шаблон.
sam deploy --guided
Он попросит определенные входные параметры, например, так:
Подтвердите развертывание
В какой -то момент Сэм попросит подтверждения развертывания.
Это возможно, потому что сначала он создает облачную информацию об изменениях, а затем просит подтвердить его выполнить.
Это похоже на развертывание сухого пробега и является наилучшей практикой при выполнении развертывания с помощью CloudFormation. Введите Y, чтобы подтвердить.
Эта команда может занять несколько минут, чтобы закончить, потому что она создает ресурсы (функция Lambda, API Gateway и IAM Roles) на аккаунте AWS. Когда он успешно завершится, вы должны увидеть выход, аналогичный следующему:
Что сейчас произошло?
Руководство развертывает для вас мало вещей. Давайте быстро рассмотрим то, что произошло под капотом во время развертывания с гидом, чтобы лучше понять этот процесс.
1) Ваша кодовая база упакована в zip -файл. 2) Сэм создает ведро S3 в вашей учетной записи, если его еще не существует.
3) zip -файл загружается в ведро S3. 4) SAM создает упакованный шаблон, который ссылается на местоположение файла ZIP на S3.
5) Этот шаблон также загружается в ведро S3. 6) SAM начинает развертывание с помощью CloudFormation Manize Det.
В первый раз, когда вы выполняете развертывание с гидом, новый файл samconfig.toml создается в корне вашего проекта с указанными параметрами развертывания, это так, что в следующий раз, когда вы выполняете развертывание SAM, он использует те же параметры, не имея вас. Введите их снова.
Если вы хотите узнать больше о развертываниях с гидом и файлом samconfig.toml, вот хороший пост в блоге:
https://aws.amazon.com/blogs/compute/a-simpler-deployment-experience-with-aws-sam-cli Анкет
Проверьте развертывание
Теперь, когда ваше приложение без сервера развернуто в учетной записи AWS, давайте проверим, работает ли оно работает как ожидалось.
Перейдите к консоли AWS CloudFormation, убедитесь, что вы находитесь в том же регионе, над которым вы работали до сих пор. Вы должны увидеть новый стек Sam-App в статусе create_complete.
Нажмите на стек Sam-App, а затем перейдите на вкладку «Выходные». На этой вкладке вы увидите URL API Gateway, функцию Lambda ARN и роль IAM ARN для функции. Чтобы проверить наше приложение, скопируйте URL конечной точки API Gateway и вставьте его в новое окно браузера.
Когда вы перемещаетесь в этот URL в браузере, API Gateway вызывает функцию Hello World Lambda. Если все работает, вы увидите лямбда -ответ:
Поздравляю!
Вы успешно развернули без серверного приложения! Давайте автоматизируем развертывание сейчас!
Оригинал: «https://dev.to/aws-builders/deploying-ci-cd-for-nodejs-serverless-applications-workshop-part-iii-56bm»