Эта статья была также опубликована на 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”