Каков наилучший способ развертывания нескольких лямбда-функций из одного репозитория github на AWS? - PullRequest
1 голос
/ 14 марта 2019

У меня есть один репозиторий, в котором хранятся мои лямбда-функции на github.Я хотел бы иметь возможность развертывать новые версии всякий раз, когда новая логика проталкивается к мастеру.

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

Спасибо

Ответы [ 3 ]

1 голос
/ 14 марта 2019

Я знаю, что это не совсем то, о чем вы просили, но я использую Serverless Framework (https://serverless.com) для развертывания, и мне это нравится. Я не выполняю развертывания, когда нажимаю на репо. Вместо этого я нажмите на мое хранилище после того, как я развернул. Мне нравится этот поток, потому что развертывание может завершиться неудачей из-за очень многих вещей, и передача на GitHub с меньшей вероятностью завершится неудачей. Таким образом, я предотвращаю отправку кода, который не удалось развернуть на моем хозяине филиал.

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

1     # Step 1. Install serverless globally
2     $ npm install serverless -g
3
4     # Step 2. Create a serverless function
5     $ serverless create --template hello-world
6 
7     # Step 3. deploy to cloud provider
8     $ serverless deploy
9
10   # Your function is deployed!
11   $ http://xyz.amazonaws.com/hello-world

Существует также ряд плагинов, которые можно использовать для простой интеграции с пользовательскими доменами на APIGateway, удаления старых версий лямбда-функций, которые могут заполнять ваши ограничения, и т. Д. *

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

1 голос
/ 14 марта 2019

Добро пожаловать в StackOverflow.Вы можете улучшить свой вопрос, прочитав эту страницу.

Вы можете настроить конвейер CI / CD с помощью CircleCI с его интеграцией GitHub (которая является онлайн-службой, поэтомувам не нужно ничего обслуживать, например, на сервере Jenkins)

При каждой фиксации в вашем хранилище будет запускаться сборка CircleCI.После завершения процесса сборки вы можете объявить sls deploy, sam deploy, использовать Terraform или даже создать сценарий для загрузки .zip-файла из репозитория GitHub в S3 Bucket, а затем в своем сценарии вызвать * 1011Команда * create-function .Вот пример того, как развернуть приложения без сервера с использованием CircleCI вместе с Serverless Framework здесь

Другие варианты включают TravisCI , Код AWSРазверните или даже поддерживайте собственный CI / CD-сервер.Та же логика применима ко всем этим инструментам, хотя: commit -> build -> deploy (с использованием одного из выбранных вами инструментов).

EDIT : после ответа @ Matt онщелкнул, что OP никогда не упоминал Serverless Framework (я почему-то думал, что он уже использует его, поэтому я указал OP на учебники, использующие Serverless Framework).Затем я решил обновить свой ответ несколькими другими опциями для безсерверного развертывания

0 голосов
/ 16 марта 2019

Учитывая, что вы используете AWS Lambda, вы можете использовать CodePipeline для автоматизации процесса выпуска. [SAM (https://docs.aws.amazon.com/lambda/latest/dg/serverless_app.html) также может быть интересным.

...