1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/serverless-devs-Serverless-Devs

Клонировать/Скачать
user_model.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 24.05.2025 16:44 c46f8bb
title description position category
Модели разработчика
Модели разработчика
4
Модель пользователя

Модели разработчика

Раздел "Serverless User Model (SUM)" описывает спецификации серверных безсерверных приложений и спецификации для использования компонентов пакета безсерверных приложений.

Serverless Application Model (SAM)

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 в указанных реестрах.
  • Компоненты в репозиториях GitHub и заметках о выпусках на основе спецификаций компонентов безсерверных пакетов, таких как devsapp/fc.
  • Локальные пути компонентов, соответствующие спецификациям компонентов безсерверных пакетов, такие как ./../start-component/.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/serverless-devs-Serverless-Devs.git
git@api.gitlife.ru:oschina-mirror/serverless-devs-Serverless-Devs.git
oschina-mirror
serverless-devs-Serverless-Devs
serverless-devs-Serverless-Devs
master