Этот проект содержит исходный код и вспомогательные файлы для серверного приложения Alexa Skill, которое можно развернуть с помощью SAM CLI.
Включает в себя следующие файлы и папки.
- HelloWorldFunction / src / main — код лямбда-функции приложения.
- События — события вызова, которые вы можете использовать для вызова функции.
- Template.yaml — шаблон, который определяет ресурсы приложения AWS.
Приложение использует несколько ресурсов AWS, включая функции Lambda. Эти ресурсы определены в template.yaml
файле в этом проекте. Вы можете обновить шаблон, чтобы добавить ресурсы AWS через тот же процесс развертывания, который обновляет код приложения.
Предпосылки
Serverless Применение Модель интерфейса командной строки (CLI SAM) является расширением AWS CLI , который добавляет функциональные возможности для создания и тестирования приложений лямбда.
Он использует Docker для запуска ваших функций в среде Amazon Linux, которая соответствует Lambda. Он также может эмулировать среду сборки вашего приложения.
Чтобы использовать SAM CLI, вам нужны следующие инструменты.
- SAM CLI — установить SAM CLI
- Java8 — Установите Java SE Development Kit 8
- Maven — установить Maven
- Docker — установить версию сообщества Docker
Используйте SAM CLI, чтобы создать свой навык локально
Создайте свое приложение с помощью sam build
команды.
Чтобы создать и развернуть приложение в первый раз, запустите в своей оболочке следующее:
YAML
xxxxxxxxxx
1
sam build HelloWorldFunction --template template.yaml --build-dir HelloWorldFunction\.aws-sam\build
SAM CLI устанавливает зависимости, определенные в HelloWorldFunction/pom.xml
, создает пакет развертывания и сохраняет его в .aws-sam/build
папке.
Управляйте своими навыками локально
Протестируйте одну функцию, вызвав ее напрямую с тестовым событием. Событие — это документ JSON, представляющий входные данные, которые функция получает из источника события. Тестовые события включены в events
папку в этом проекте.
Запускать функции локально и вызывать их с помощью sam local invoke
команды.
YAML
xxxxxxxxxx
1
sam local invoke HelloWorldFunction --template HelloWorldFunction\.aws-sam\build\template.yaml
Отладить свой навык локально
Тесты определены в events
папке в этом проекте.
YAML
xxxxxxxxxx
1
sam local invoke HelloWorldFunction --template HelloWorldFunction\.aws-sam\build\template.yaml --event events/event.json --debug-port 56531
С помощью AWS Toolkit, установленного в вашей IDE, легко настроить и отладить с помощью точек останова ваши навыки в зависимости от event.json.
Проверьте свои навыки локально
Тесты определены в events
папке в этом проекте.
YAML
xxxxxxxxxx
1
sam local invoke HelloWorldFunction --template HelloWorldFunction\.aws-sam\build\template.yaml --event events/event.json
В event.json у вас есть пример LaunchRequest, смоделированный из навыка. Взглянем:
JSON
x
1
{
2
"version": "1.0",
3
"session": {
4
"new": true,
5
"sessionId": "amzn1.echo-api.session.[unique-value-here]",
6
"application": {
7
"applicationId": "amzn1.ask.skill.[unique-value-here]"
8
},
9
"user": {
10
"userId": "amzn1.ask.account.[unique-value-here]"
11
},
12
"attributes": {}
13
},
14
"context": {
15
"AudioPlayer": {
16
"playerActivity": "IDLE"
17
},
18
"System": {
19
"application": {
20
"applicationId": "amzn1.ask.skill.[unique-value-here]"
21
},
22
"user": {
23
"userId": "amzn1.ask.account.[unique-value-here]"
24
},
25
"device": {
26
"supportedInterfaces": {
27
"AudioPlayer": {}
28
}
29
}
30
}
31
},
32
"request": {
33
"type": "LaunchRequest",
34
"requestId": "amzn1.echo-api.request.[unique-value-here]",
35
"timestamp": "2016-10-27T18:21:44Z",
36
"locale": "en-US"
37
}
38
}
Разверните свой навык в AWS
Чтобы развернуть приложение в первый раз, запустите в своей оболочке следующее:
sam deploy --guided
Первая команда создаст источник вашего приложения. Вторая команда упакует и развернет ваше приложение в AWS с помощью серии подсказок:
- Имя стека : имя стека для развертывания в CloudFormation. Это должно быть уникальным для вашей учетной записи и региона, и хорошей отправной точкой будет нечто, совпадающее с именем вашего проекта.
- Регион AWS : регион AWS, в котором вы хотите развернуть свое приложение.
- Подтвердите изменения перед развертыванием : если установлено значение «да», любые изменения будут отображаться перед выполнением для ручной проверки. Если установлено значение no, интерфейс командной строки AWS SAM будет автоматически развертывать изменения приложения.
- Разрешить создание роли SAM CLI IAM . Многие шаблоны SAM AWS, включая этот пример, создают роли IAM AWS, необходимые для лямбда-функции AWS, включенной для доступа к сервисам AWS. По умолчанию они ограничены минимально необходимыми разрешениями. Для развертывания стека AWS CloudFormation, который создает или изменяет роли IAM, необходимо указать
CAPABILITY_IAM
значение дляcapabilities
. Если разрешение не предоставляется через эту строку, чтобы развернуть этот пример вы должны явно передать--capabilities CAPABILITY_IAM
вsam deploy
команде. - Сохраните аргументы в samconfig.toml : если установлено значение «да», ваш выбор будет сохранен в файле конфигурации внутри проекта, так что в будущем вы сможете просто перезапустить
sam deploy
без параметров, чтобы развернуть изменения в вашем приложении.
Добавить ресурс в ваше приложение
Шаблон приложения использует модель приложения AWS Serverless (AWS SAM) для определения ресурсов приложения. AWS SAM является расширением AWS CloudFormation с более простым синтаксисом для настройки общих ресурсов безсерверных приложений, таких как функции, триггеры и API. Для ресурсов, не включенных в спецификацию SAM , вы можете использовать стандартные типы ресурсов AWS CloudFormation .
Интегрируйте его в ваш любимый редактор
Если вы предпочитаете использовать интегрированную среду разработки (IDE) для сборки и тестирования своего приложения, вы можете использовать AWS Toolkit.
AWS Toolkit — это подключаемый модуль с открытым исходным кодом для популярных IDE, который использует интерфейс командной строки SAM для создания и развертывания приложений без сервера в AWS. AWS Toolkit также добавляет упрощенный пошаговый режим отладки для кода функции Lambda. Смотрите следующие ссылки, чтобы начать.
Ресурсы
См. Руководство разработчика AWS SAM для ознакомления со спецификацией SAM, интерфейсом командной строки SAM и концепциями бессерверных приложений.
Далее, вы можете использовать AWS Serverless Application Repository для развертывания готовых к использованию приложений, которые выходят за рамки примеров hello world и узнать, как авторы разрабатывали свои приложения: главная страница AWS Serverless Application Repository .
Вы можете найти код на моем Github .
Это все, ребята!
Удачного кодирования!