Рубрики
Без рубрики

Как запустить лямбда локально и развернуть его AWS, используя SAM

Эта статья также была опубликована на Razcodes.dev AWS SAM или моделей приложений без промедления, это образец … Помечено с AWS, SAM, Python, Serverless.

Эта статья была также опубликована на razcodes.dev

AWS SAM или модель приложений без сервеса, является основой для построения серверу серверу. Есть несколько вещей, которые мне нравятся об этой структуре, что я только что обнаружил, от того, что это расширение облачности, которое дает вам удивительный надежный способ развертывания и описания вашего приложения и ресурсов к тому, что в сочетании с Docker это позволяет вам Чтобы проверить и отладить свой код локально.

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

Предварительные условия

В моих примерах я использую Mac, но вы должны быть в состоянии получить тот же опыт, используя другую ОС с незначительными изменениями здесь и там. Чтобы начать, вам нужно будет иметь следующие вещи на месте.

AWS аккаунт

AWS CLI.

❯ aws --version
aws-cli/2.0.0 Python/3.8.1 Darwin/19.4.0 botocore/2.0.0dev4

Докер

❯ docker --version
Docker version 19.03.8, build afacb8b

Sam Cli.

❯ sam --version
SAM CLI, version 0.47.0

Питон

❯ python3 --version
Python 3.8.1

Начиная

Первый шаг – создать новый проект в папке по вашему выбору, используя init вариант. Для этого примера я буду использовать время выполнения Python, поэтому я передам это как параметр на SAM CLI.

sam init --runtime python3.8 --name sam-lambda-demo
Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
Choice: 1

Cloning app templates from https://github.com/awslabs/aws-sam-cli-app-templates.git

AWS quick start application templates:
        1 - Hello World Example
        2 - EventBridge Hello World
        3 - EventBridge App from scratch (100+ Event Schemas)
Template selection: 1

-----------------------
Generating application:
-----------------------
Name: sam-lambda-demo
Runtime: python3.8
Dependency Manager: pip
Application Template: hello-world
Output Directory: .

Next steps can be found in the README file at ./sam-lambda-demo/README.md

Это создаст все папки и файлы, которые вам понадобятся для простого Здравствуйте, мир приложение. Вы можете открыть вновь созданную папку в VS Code и исследуйте файлы и созданные папки.

cd sam-lambda-demo
code .

Два важных файла, чтобы смотреть сразу, будет Readme.md , это красиво документированный файл с большим количеством информации о том, что происходит, а затем шаблон.Ямль , который является файлом, который будет использоваться для создания шаблона CloudFation и получить вещи, готовые к развертыванию.

Развертывание AWS.

Вам понадобится ведро S3 в вашей учетной записи AWS, где ваш код будет сохранен. Имейте в виду, что имя ведра должно быть уникальным, поэтому убедитесь, что выберите Оригинал имя. Я позвонил мою РАЗ-САМ-САМ-США-Восток-1 Отказ Вы можете создать новое ведро с консоли или создать новое ведро с помощью AWS CLI:

aws s3 mb s3://raz-sam-us-east-1

Сначала вам нужно будет создать пакет. Это создаст новый файл YAML для облачных номеров, а также загрузить весь код в AWS в вашем ведре S3.

sam package --template-file template.yaml --output-template-file deploy.yaml --s3-bucket raz-sam-us-east-1

Как только это сделано, вы можете запустить команду развертывания, которая создаст стек в облаках. Вам необходимо предоставить команду с именем стека вашего выбора, а также файл deploy.yaml, который был создан на последнем шаге.

sam deploy --template-file deploy.yaml --stack-name SAMLambdaDemo --capabilities CAPABILITY_IAM

Вам будет представлен хороший экран в терминале, показывающий прогресс создания стека. Как только процесс будет завершен, вы можете посмотреть на Выходы Раздел на экране для ссылки на новую конечную точку API, название функции Lambda, а также роль. Скопируйте URL для API и поместите его в браузер, чтобы увидеть сообщение «Hello World» на вашем экране.

{"message": "hello world"}

Вы также можете войти в консоль AWS и под Облачные отформации -> Стеки Найдите свой новый стек. Там вы можете пойти под Ресурсы чтобы увидеть все, что было построено, а также под Выходы Где вы можете увидеть ту же информацию, которая была представлена выше в терминале.

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

aws cloudformation delete-stack --stack-name SAMLambdaDemo

Запустить его локально

Маре уверена, что у вас есть докер вверх и бежать за это, так как он раскрутит новый контейнер.

Есть два способа сделать это. Вы можете запустить его как функцию, когда вы просто ожидаете результата в терминале:

sam local invoke HelloWorldFunction --no-event

Это раскрутит контейнер, запускает функцию и закрой его. Имейте в виду, что первый пробег займет больше времени, потому что ему придется скачать изображение Docker Python3.8.

Invoking app.lambda_handler (python3.8)

Fetching lambci/lambda:python3.8 Docker container image......................................................................................................................................
Mounting /Users/raz/aws-sam/sam-lambda-demo/hello_world as /var/task:ro,delegated inside runtime container
START RequestId: cb2eff67-910e-15d1-7f6f-48087ac290bb Version: $LATEST
END RequestId: cb2eff67-910e-15d1-7f6f-48087ac290bb
REPORT RequestId: cb2eff67-910e-15d1-7f6f-48087ac290bb  Init Duration: 88.72 ms Duration: 2.58 ms       Billed Duration: 100 ms Memory Size: 128 MB     Max Memory Used: 25 MB

{"statusCode":200,"body":"{\"message\": \"hello world\"}"}

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

sam local start-api

Как только вы это сделаете, он создаст локальный веб-сервер и дает вам локальный URL, который вы можете посетить.

Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template
2020-04-12 13:45:29  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)

Если вы хотите очистить изображения Docker, вы можете сначала перечислить их.

docker images

Затем удалите тот, который был создан, который в моем случае это лямбчи/лямбда: python3.8 Отказ

docker rmi lambci/lambda:python3.7

Заключение

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

Оригинал: “https://dev.to/razcodes/how-to-run-a-lambda-locally-and-deploy-it-to-aws-using-sam-3g6b”