title | description | position | category |
---|---|---|---|
Модели разработчика |
Модели разработчика |
4 |
Модель пользователя |
Раздел "Serverless User Model (SUM)" описывает спецификации серверных безсерверных приложений и спецификации для использования компонентов пакета безсерверных приложений.
SAM относится к файлам описания ресурсов и поведения, которые могут быть идентифицированы Serverless Devs. Файлы должны соответствовать форматам файлов .yaml
и .yml
и спецификации YAML. В то же время SAM указывает, что файл описания ресурса или поведения, который может быть распознан Serverless Devs, представляет собой безсерверное приложение.
Кроме того, обратите внимание, что по умолчанию файлы YAML, соответствующие SAM, имеют расширения s.yaml и s.yml. Приоритет формата файла s.yaml выше, чем у s.yml. Поэтому, когда в безсерверном приложении существуют файлы s.yaml и s.yml, система предпочитает идентифицировать и использовать формат файла s.yaml, если не указан другой формат YAML как основной.
Формат файла YAML, соответствующий SAM, должен соответствовать следующему формату:```yaml edition: 1.0.0 # Версия синтаксиса YAML. Версия соответствует спецификации семантической версионной нумерации. name: applicationName # Название приложения access: xxx-account1 # Ключевой псевдоним
vars: # [Глобальные переменные, используемые для сервисов] Key: Value
Service: ServiceName: # Название сервиса access: xxx-account1 # Ключевой псевдоним, который может быть опущен, если псевдоним совпадает с псевдонимом ключа доступа проекта. component: componentName # Название компонента props: serviceProp # Значение свойства компонента actions: serviceActions # Пользовательский логический код
В следующем примере описан полный SAM:
```yaml
edition: 1.0.0 # Версия синтаксиса YAML. Версия соответствует спецификации семантической версионной нумерации.
name: FullStack # Название проекта
access: xxx-account1 # Ключевой псевдоним
vars: # [Глобальные переменные, используемые для сервисов.]
logo: https://image.aliyun.com/xxxx.png
```services:
nextjs-portal: # Имя сервиса
access: xxx-account1 # Алиас ключа, который можно опустить, если алиас совпадает с ключом доступа проекта
component: vue-component # Имя компонента
props: # Значение свойств компонента
src: ./frontend_src
url: url
actions: # Пользовательская логика run
pre-deploy: # Выполняется перед операцией развертывания.
- run: s exec -- publish # Команда для выполнения.
path: ./backend_src # Путь для выполнения команды.
- run: s build # Команда для выполнения
path: ./backend_src # Путь для выполнения команды
post-deploy: # Выполняется после развертывания
- run: s clean
path: ./frontend_src assets:
component: static
props:
cache-control: "public, max-age=604800, immutable"
www: "./public"
express-blog:
component: express
props:
app: ./express-blog
url: ${vars.domain}
actions:
pre-deploy:
- run: npm run build
path: ./express-blog
gateway:
component: serverless-gateway # Компонент маршрутизации: правила соответствия HTTP URL и сервисам
props:
routes:
- route: /~assets
value: ${assets.output.url}
- route: /
value: ${nextjs-portal.output.url}
index: index.html
- route: /~portal
value: ${nextjs-portal.output.url}
inex: index.html
- route: /~blog
value: ${express-blog.output.url}
- route: /~blog
value: ${express-blog.output.url}
| Параметр | Описание |
| --------- | ------------------------------------------------------------ |
| access | Ключ-синоним, который можно опустить, если он совпадает с ключом доступа проекта. |
| component | Компонент |
| actions | Пользовательская логика выполнения |
| props | Значение свойства компонента |
### Присваивание переменных
Файлы YAML модели серверного приложения поддерживают несколько форматов переменных:
- Получение переменных окружения текущего сервера: env(ENV), пример: {env(secretId)}.
- Получение переменных из внешнего документа: file(path), пример: {file(./path)}.
- Получение глобальных переменных: ${ vars.*}.
- Получение переменных из другого проекта: ${ projectName.props.*}.
- Получение переменных результата из другого проекта в файле YAML: ${projectName.output.*}
### Порядок предоставления услугЕсли в файле YAML модели серверного приложения слишком много услуг, система по умолчанию анализирует порядок развертывания. Чтобы развернуть услуги в определенном порядке, требуется два шага:
1. Анализировать зависимости проекта.
2. Развертывать услуги с зависимостями на основе этих зависимостей. Услуги без зависимостей развертываются сверху вниз на основе конфигураций YAML.
### Описание поведения
В файле YAML модели серверного приложения вы можете предоставить операции поведения для услуг. Вам нужно соблюдать следующий базовый формат:
```yaml
actions: # Пользовательская логика выполнения
pre-command: # Выполнение перед выполнением команды.
- run: command # Операция для выполнения
path: ./path # Путь выполнения операции
post-command: # Выполнение после выполнения команды.
- run: command # Операция для выполнения.
path: ./path # Путь выполнения операции
Пример:
actions: # Пользовательская логика выполнения
pre-deploy: # Выполнение перед операцией развертывания.
- run: s exec -- publish # Команда для выполнения.
path: ./backend_src # Путь выполнения команды
- run: s build # Команда для выполнения
path: ./backend_src # Путь выполнения команды
post-deploy: # Выполнение после операции развертывания.
- run: s clean
path: ./frontend_src
Когда этот сервис выполняется с помощью Serverless Devs, предкоманда выполняется предпочтительно. После выполнения всех команд выполняется посткоманда.```yaml edition: 1.0.0 # Версия синтаксиса YAML. Версия соответствует спецификации семантической версионной нумерации. name: FullStack # Имя проекта
services: nextjs-portal: # Имя сервиса access: xxx-account1 # Алиас ключа, который можно опустить, если алиас совпадает с ключом доступа проекта component: vue-component # Имя компонента props: # Значение свойств компонента src: ./frontend_src url: url actions: # Пользовательский код выполнения pre-deploy: # Выполняется перед командой развертывания. - run: s exec -- publish # Команда для выполнения path: ./backend_src # Путь для выполнения команды - run: s build # Команда для выполнения path: ./backend_src # Путь для выполнения команды post-deploy: # Выполняется после команды развертывания - run: s clean path: ./frontend_src
После выполнения команды `deploy` в приложении система выполняет следующие операции в следующем порядке:
1. Выполняет `s exec -- publish` в директории `./backend_src`.
2. Выполняет `s build` в директории `./backend_src`.
3. Вызывает метод `deploy` компонента `vue-component` и передает `props` и базовую информацию о проекте методу `deploy` компонента `vue-component`.
4. Выполняет `s clean` в директории `./frontend_src`.
Если в процессе возникает ошибка, система сообщает об ошибке и прекращает выполнение процесса.
## Спецификация компонентов пакета безсерверных приложенийМодель разработки безсерверных приложений определяет спецификацию использования компонентов пакета безсерверных приложений. В следующем YAML-файле, соответствующем SAM:```yaml
edition: 1.0.0 # Версия синтаксиса YAML. Версия соответствует спецификации семантической версионной нумерации.
name: applicationName # Имя приложения
access: xxx-account1 # Алиас ключа
vars: # [Глобальные переменные, используемые для сервисов]
Key: Value
Service:
ServiceName: # Имя сервиса
access: xxx-account1 # Алиас ключа, который можно опустить, если алиас совпадает с ключом доступа проекта
component: componentName # Имя компонента
props: serviceProp # Значение свойств компонента
actions: serviceActions # Пользовательский код выполнения
В спецификациях необходимо указать компоненты, используемые службами. Форматы компонентов классифицируются следующим образом:
FC
в указанных реестрах.devsapp/fc
../../start-component/
.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )