Serverless Components официально выпущен
Serverless Components — это инфраструктура, разработанная на основе Serverless Framework, которая позволяет разработчикам создавать, комбинировать и развёртывать свои приложения с использованием Serverless.
Далее рассмотрим пример компонента Serverless Framework Component, чтобы увидеть, насколько он прост в использовании:
# serverless.yml
component: express # название компонента из центра регистрации
name: express-api # имя экземпляра компонента
inputs: # конфигурация соответствующего компонента
src: ./src # путь к коду, здесь путь к коду указан как src
Документация
Компоненты Serverless Components позволяют реализовать высокоуровневые сценарии приложений, такие как веб-сайты, блоги или платёжные системы. Разработчикам не нужно беспокоиться о деталях конфигурации базовой инфраструктуры, они могут создавать сценарии, просто настраивая параметры.
Например, с помощью простой конфигурации можно развернуть статический хостинговый сайт и разместить его в облачном хранилище Tencent COS. При этом можно настроить собственный домен и бесплатный SSL-сертификат.
В каталоге шаблонов можно найти больше примеров использования.
Особенности Serverless Components:
Если вы хотите быстро и легко развернуть бессерверное приложение и не планируете повторно использовать этот компонент, декларативный подход может удовлетворить ваши потребности. Если вы создаёте компонент, который планируете использовать повторно, рекомендуется использовать программный подход.
Компоненты Serverless бесплатны, и любой может опубликовать свои компоненты в реестре для использования командами или другими пользователями.
Использование компонентов
Для использования компонентов Serverless необходимо объявить их в файле serverless.yml. В настоящее время API реестра уже доступен, но визуальные возможности поиска ещё не реализованы. Для доступа к компонентам из реестра необходимо запустить команду serverless registry.
При использовании компонентов Serverless нет необходимости устанавливать какие-либо компоненты локально. Вместо этого при выполнении команды deploy конфигурация из файла serverless.yml и указанный каталог кода будут переданы в механизм развёртывания компонентов Serverless.
Обратите внимание, что в настоящее время в файле serverless.yml можно указать только один компонент. Такая структура развёртывания помогает разделить различные ресурсы и модули в бессерверном приложении, обеспечивая более гибкий способ управления и организации по сравнению с включением нескольких компонентов в один файл yaml.
Важно отметить, что текущие компоненты Serverless не могут использоваться в существующих проектах Serverless Framework, где присутствуют поля functions, events, resources и plugins. Поддержка различных параметров для inputs
Некоторые inputs являются специфическими типами, например, параметр src, который указывает путь к коду и файлам, которые вы хотите развернуть в облаке. В связи с этим компонент обрабатывает этот параметр особым образом: перед запуском компонента Serverless Framework в облаке он сначала распознает файлы в src и передаёт их в облако.
Для обеспечения оптимальной производительности развёртывания рекомендуется, чтобы размер папки src не превышал 5 МБ. Большие размеры файлов могут привести к увеличению времени загрузки и замедлению процесса развёртывания. Поэтому также рекомендуется сначала создать свой код с помощью хука и использовать папку dist для загрузки. Это можно настроить следующим образом:
inputs:
src:
src: ./src # Source files 源文件
hook: npm run build # Build hook to run on every "serverless deploy"
dist: ./dist # Location of the distribution folder to upload
Вы также можете использовать выражения exclude, поддерживающие синтаксис glob, для исключения определённых файлов или папок из загрузки, как показано ниже:
inputs:
src:
src: ./src # Source files
exclude:
- .env # exclude .env file in ./src
- '.git/**' # exclude .git folder and all subfolders and files inside it
- '**/*.log' # exclude all files with .log extension in any folder under the ./src
Улучшение типов Input для компонентов является одной из приоритетных задач, над которыми мы работаем в настоящее время.
Помимо передачи переменных через inputs для действий по развёртыванию, другие действия (например, remove или другие пользовательские действия компонента) также могут поддерживать настройку inputs, как показано ниже:
commandInputs:
remove:
keepResource: true
myComponentMethod:
message: hello
После настройки пользовательских действий inputs разработчик компонента может получить эти входные данные в соответствующем пользовательском методе. Например, в приведённой выше конфигурации, когда пользователь выполняет sls myComponentMethod для выполнения пользовательского действия, метод myComponentMethod компонента получит { message: «hello» }.
Кроме того, все параметры inputs можно переопределить с помощью командной строки. Например, если пользователь выполнит sls myComponentMethod --inputs anotherMsg=world, метод myComponentMethod компонента будет получать { message: "hello", anotherMsg: "world" } в качестве входных данных.
Развёртывание
Текущая версия Serverless Framework позволяет легко развёртывать компоненты с помощью команды serverless deploy.
$ serverless deploy
Serverless Components поддерживает развёртывание на уровне секунд, но первое развёртывание обычно занимает больше времени (возможно, в 5 раз дольше), поскольку создание облачных ресурсов занимает больше времени, а обновление существующих конфигураций облачных ресурсов происходит быстрее.
Состояние
Серверные компоненты автоматически сохраняют состояние в облаке, поэтому вы можете легко опубликовать свой компонент на Github, Gitlab, Coding и других платформах управления кодом. Вы также можете сотрудничать с другими членами команды, пока они находятся в организации org в файле serverless.yml. Поскольку по умолчанию для организации используется appid Tencent Cloud, члены дочерней учётной записи под основной учётной записью могут совместно разрабатывать.
org: tencent-team # 相同主账号下的子账户即可进行协作
app: ecommerce
component: my-component
name: rest-api
Версия
Версии Serverless Components указываются следующим образом:
component: express@0.0.2
Когда вы указываете версию в конфигурации, компонент будет использовать эту версию. Когда версия не указана, Serverless Framework автоматически получает последнюю версию компонента. Для официальных проектов рекомендуется указывать фиксированный номер версии компонента.
Вывод
После завершения развёртывания компонента выводится объект outputs.
Выходные данные обычно содержат наиболее важную информацию о развёрнутом компоненте, такую как URL API или веб-сайта.
Выход может быть использован другими компонентами в конфигурации inputs, как показано в следующем синтаксисе:
# Syntax 语义
${output:[stage]:[app]:[instance].[output]}
# Examples 例子
${output:prod:ecommerce:products-api.url}
${output:prod:ecommerce:products-database.name}
Конфигурация учётных записей
Во время развёртывания, независимо от того, используете ли вы serverless.yml или serverless.js, Serverless Components ищет файл .env в текущем каталоге.
В процессе развёртывания, если существует файл .env, Serverless Components загружает его как переменную среды. Если вы используете переменные среды с именами, соответствующими secretId и secretKey, предоставляемым различными поставщиками облачных услуг, Serverless Components автоматически внедрит их в требуемые компоненты во время развёртывания для создания базовых служб инфраструктуры.
Если вы настроите его следующим образом, эти секреты будут доступны для всех Serverless Components в serverless.yml и serverless.js, включая любые базовые компоненты, на которые есть ссылки.
Следующие ключи поддерживают текущую конфигурацию:
Примечание: в настоящее время Tencent Cloud поддерживает однократное предоставление разрешений через сканирование QR-кода WeChat. Сгенерированный временный файл ключей .env действителен в течение 30 дней. Если срок действия истекает, необходимо повторно предоставить разрешение. Если вам нужны постоянные ключи или вы предоставляете другие разрешения в ролях, вы также можете заполнить файл .env для постоянного предоставления разрешений.
TENCENT_SECRET_ID=123456789
TENCENT_SECRET_KEY=123456789
Компоненты также могут получить ключи Tencent Cloud через this.context.credentials.tencent, возвращая формат, подобный следующему:
{
"secret_id": "123456789",
"secret_key": "123456789",
"region": "ap-guangzhou"
}
Окружение
Serverless Components предоставляет концепцию Stage для разделения и развёртывания полностью отдельных экземпляров компонентов, обеспечивая изоляцию между средами разработки, тестирования и производства.
По умолчанию среда настроена на dev для разработки. Если вы хотите изменить эту конфигурацию, вы можете обновить её непосредственно в serverless.yml:
org: my-org
app: my-app
component: express@0.0.2
name: my-component-instance
stage: prod # 更新环境信息
Также можно указать этап, установив переменную среды SERVERLESS_STAGE равной prod. Эта конфигурация переопределит поле stage в serverless.yml:
SERVERLESS_STAGE=prod
Кроме того, вы можете указать этап во время процесса развёртывания, используя параметр --stage prod для переопределения конфигурации в serverless.yml и переменной среды:
$ serverless deploy --stage prod
Примечание: параметры конфигурации в CLI переопределяют поля stage в serverless.yml и переменных среды, но переменные среды переопределяют только поле stage в serverless.yml.
Недавно Serverless Component начал поддерживать использование разных файлов .env для указания различных конфигураций среды. Каждый файл должен иметь следующее соглашение об именах: .env.STAGE. Например, если вы хотите запустить конфигурацию производственной среды, файл конфигурации среды должен называться .env.prod, иначе будет использоваться конфигурация по умолчанию в .env. ### Инициализация проекта из шаблона
После того как вы выбрали шаблон для проекта, вы можете использовать встроенную команду init
для инициализации вашего проекта. Эта команда автоматически загрузит выбранный вами шаблон из центра регистрации и создаст папку с файлами проекта. Например:
sls init -t fullstack # создать проект на основе шаблона fullstack
cd fullstack # перейти в папку проекта
sls deploy --all # развернуть весь проект fullstack
Если вы хотите разработать собственный Serverless Component, вам нужно обратить внимание на два файла:
serverless.component.yml
— этот файл содержит определение вашего Serverless Component.serverelss.js
— в этом файле находится код вашего Serverless Component.Важно отметить, что Serverless Components могут работать только на облачной платформе и не поддерживают локальное выполнение. Это означает, что если вы хотите запустить или протестировать свой Component, сначала необходимо опубликовать его в облачном центре регистрации (обычно это занимает несколько секунд). В настоящее время опыт разработки компонентов продолжает улучшаться.
Чтобы объявить новый Serverless Component и опубликовать его в центре регистрации Serverless, необходимо создать файл serverless.component.yml
, содержащий следующие атрибуты:
# serverless.component.yml
name: express # обязательное поле, имя компонента
version: 0.0.4 # обязательное поле, версия компонента
author: eahefnawy # обязательное поле, автор компонента
org: serverlessinc # обязательное поле, информация о разработчике компонента
description: Deploys Serverless Express.js Apps # необязательное поле, описание компонента
keywords: tencent, serverless, express # необязательное поле, ключевые слова для поиска компонента в registry.serverless.com
repo: https://github.com/owner/project # необязательное поле, ссылка на проект компонента
license: MIT # необязательное поле, лицензия на код компонента
main: ./src # необязательное поле, путь к коду компонента
Некоторые компоненты требуют определённых конфигураций при развёртывании. Эти конфигурации должны быть правильно настроены пользователем, иначе развёртывание может завершиться неудачно. Чтобы помочь пользователям настроить правильные входные данные, разработчики компонентов могут определить допустимые конфигурации и требования к ним в serverless.component.yml
. Например, если компонент поддерживает настройку имени создаваемой облачной функции и требует, чтобы оно содержало только определённые символы, можно определить правила проверки входных данных в serverless.component.yml
:
# serverless.component.yml
actions:
# действие deploy
deploy:
definition: Deploy your Express.js application to Tencent SCF
inputs:
scf:
type: object
description: The SCF related configuration
keys:
functionName:
type: string
# функция name должна содержать только буквы
regex: ^[a-z]+$
С этим правилом, если пользователь настроит следующее имя облачной функции:
# serverless.yml
component: express
name: express-api
stage: dev
inputs:
src: ./src
scf:
functionName: func01 # имя функции содержит цифры
При попытке развернуть приложение пользователь получит сообщение об ошибке:
3s › express-api › inputs validation error: "scf.functionName" with value "func01" fails to match the required pattern: /^[a-z]+$/
Пользователь может исправить конфигурацию и успешно завершить развёртывание приложения.
В serverless.component.yml
можно определить множество типов входных данных. Вот некоторые примеры:
# serverless.component.yml
actions:
# здесь определяются различные действия, поддерживаемые компонентом, например, наиболее распространённое действие deploy
deploy:
definition: Deploy your Express.js application to Tencent.
inputs:
# Тип: строка (string)
param1: # поле ввода
type: string
# Необязательно, ниже приведены дополнительные определения
required: true # по умолчанию required: false
default: my-app # значение по умолчанию
description: Some description about param1. # описание этого параметра
min: 5 # минимальное количество символов
max: 64 # максимальное количество символов
regex: ^[a-z0-9-]*$ # шаблон RegEx для проверки.
# Тип: число (number)
memory:
type: number
# Необязательно
default: 2048 # значение по умолчанию
min: 128 # минимально допустимое значение
max: 3008 # максимально допустимое значение
allow: # допустимые значения для этого
- 128
- 1024
- 2048
- 3008
# Тип: логическое значение (boolean)
delete:
type: boolean
# Необязательно
default: true # значение по умолчанию
# Тип: объект (object)
vpcConfig:
type: object
# Необязательно
keys: # определение полей в объекте
securityGroupIds: # каждое определение поля в объекте может использовать полное определение типа, либо быть вложенным объектом
type: string
# Тип: массив (array)
mappingTemplates:
type: array
# Необязательно
min: 1 # минимум элементов массива
max: 10 # максимум элементов массива
items:
# определение типа каждого элемента массива
- type: number
min: 5
max: 13
# элементы массива могут иметь разные типы
- type: object
keys:
field1:
type: string
default: # элементы массива по умолчанию
- '12345678' ### datetime (дата-время тип)
# Этот тип представляет собой строку ISO8601, содержащую дату и время.
rangeStart:
тип: дата-время
# Тип: url (URL-адрес типа)
# Данный тип предназначен для URL-адреса, часто описывающего корневой URL-адрес API или веб-сайт.
myUrl:
тип: url
Файл serverless.js
содержит код компонента Serverless.
Чтобы создать базовый компонент Serverless, достаточно создать файл serverless.js
, расширить класс Component и добавить метод deploy
, как показано ниже:
// serverless.js
const { Component } = require('@serverless/core');
class MyComponent extends Component {
async deploy(inputs = {}) {
return {};
} // Базовая функциональность для запуска/подготовки/обновления вашего компонента
}
module.exports = MyComponent;
Метод deploy()
является обязательным, и вся логика работы компонента должна быть включена в него. Когда клиент запускает команду $ serverless deploy
, вызывается метод deploy()
.
Вы также можете добавить другие методы в класс, например, метод remove()
, который обычно является логикой второго шага, поддерживаемой командой $ serverless remove
для удаления ресурсов проекта, созданных вашим компонентом Serverless.
Помимо deploy()
и remove()
, компоненты Serverless также поддерживают дополнительные пользовательские методы для выполнения дополнительных автоматических операций.
Компоненты Serverless в настоящее время находятся на ранней стадии разработки, но постепенно поддерживают методы test()
, logs()
, metrics()
и даже seed()
, используемый для создания начальных значений базы данных компонентов. В целом, компонент будет поддерживать больше возможностей для лучшей реализации разработки, развёртывания и отладки приложений Serverless.
Кроме обязательного метода deploy()
, все остальные являются необязательными. Все методы получают объект inputs
и возвращают объект outputs
.
Ниже приведён пример добавления метода remove
и пример пользовательского метода:
// serverless.js
const { Component } = require('@serverless/core');
class MyComponent extends Component {
/*
* Базовая функциональность для запуска/подготовки/обновления вашего компонента.
* Вы можете запустить эту функцию, выполнив команду "$ serverless deploy"
*/
async deploy(inputs = {}) {
return {};
}
/*
* Рекомендуется, если ваш компонент удаляет инфраструктуру.
* Вы можете выполнить эту функцию с помощью команды "$ serverless remove"
*/
async remove(inputs = {}) {
return {};
}
/*
* Если вы хотите отправить свой компонент с дополнительной функциональностью, поместите его в метод.
* Вы можете запустить этот метод с помощью команды "$ serverless anything"
*/
async anything(inputs = {}) {
return {};
}
}
module.exports = MyComponent;
В методах компонента вы можете использовать метод this для указания текущей среды выполнения, которая включает некоторые доступные инструменты. Ниже приведены некоторые инструкции по отображению синтаксиса, доступного в методах компонента.
// serverless.js
const { Component } = require('@serverless/core');
class MyComponent extends Component {
async deploy(inputs = {}) {
// this предоставляет полезную информацию
console.log(this);
// Общие учётные данные провайдера определяются в среде или файле .env и добавляются к this.context.credentials
// при запуске "serverless deploy", тогда будут использоваться учётные данные в .env
// при запуске "serverless deploy --stage prod", тогда будут использоваться учётные данные в .env.prod... и т. д.
// если у вас нет файлов .env, то будут использоваться глобальные учётные данные aws
const dynamodb = new AWS.DynamoDB({ credentials: this.credentials.aws });
// Вы можете легко создать случайный идентификатор для именования облачных инфраструктурных ресурсов с помощью этой утилиты.
const s3BucketName = `my-bucket-${this.resourceId()}`;
// Это предотвращает конфликты имён.
// Компоненты имеют встроенное хранилище состояний.
// Вот как сохранить состояние в вашем компоненте:
this.state.name = 'myComponent';
// Если вы хотите показать отладочное сообщение в CLI, используйте console.log.
console.log('это отладочное утверждение');
// Возвращаем ваши выходные данные
return { url: websiteOutputs.url };
}
}
module.exports = MyComponent;
При разработке компонента, когда требуется исходный код (например, создание компонента, который должен работать на платформе SCF Tencent Cloud), если вы укажете src
в inputs, все файлы в этом каталоге будут автоматически упакованы и загружены, чтобы их можно было использовать в вашей среде.
В вашем компоненте inputs.src
будет указывать на zip-пакет исходных файлов в вашей среде, и если вы хотите распаковать эти исходные файлы, вы можете сделать это следующим образом:
async deploy(inputs = {}) {
// Распаковываем исходные файлы...
const sourceDirectory = await this.unzip(inputs.src)
}
После распаковки вы можете легко работать с этими исходными файлами. После завершения работы, если вы хотите снова упаковать их, вы также можете сделать это следующим образом (например, в некоторых сценариях вам может потребоваться повторно сжать исходные файлы и загрузить их в облачную функцию и т.д.):
async deploy(inputs = {}) {
// Упаковываем исходные файлы...
const zipPath = await instance.zip(sourceDirectory)
}
Если вы хотите, чтобы код вашего компонента выполнялся в режиме разработки (serverless dev
), Поддержка реального времени для потокового вывода логов или печати информации об ошибках требует добавления Serverless SDK в логику развёртывания. Можно использовать следующий способ реализации:
// разархивируем исходный zip-файл
console.log(`Разархивирование ${inputs.src}...`);
const sourceDirectory = await instance.unzip(inputs.src);
console.log(`Файлы разархивированы в ${sourceDirectory}...`);
// добавляем SDK в исходный каталог, добавляем оригинальный обработчик
console.log(`Установка Serverless Framework SDK...`);
instance.state.handler = await instance.addSDK(sourceDirectory, '_express/handler.handler');
// архивируем исходный каталог с прокладкой и SDK
console.log(`Архивация файлов...`);
const zipPath = await instance.zip(sourceDirectory);
console.log(`Файлы заархивированы в ${zipPath}...`);
После добавления SDK может потребоваться повторно упаковать код и загрузить его в облачный сервис (например, облачную функцию SCF).
Serverless Components могут работать только на облачной платформе и не поддерживают локальное выполнение. Это даёт значительные преимущества пользователям компонентов. Мы также разработали процесс разработки, который упрощает создание компонентов.
Когда вы добавляете или изменяете код Serverless Components, если вы хотите протестировать изменения, вам необходимо сначала опубликовать компонент в облаке. Поскольку мы не хотим, чтобы тестовая версия влияла на официальную версию компонента (которая может использоваться пользователями), в настоящее время поддерживается прямая публикация версии «dev» компонента для изоляции официальной среды от среды разработки.
Чтобы опубликовать Serverless Component в версии «dev», выполните следующую команду:
$ serverless registry publish --dev
В файле serverless.yml
вы также можете указать версию «dev» для тестирования, просто добавив «@dev» после имени компонента, например:
# serverless.yml
org: acme
app: fullstack
component: express@dev # Добавить «dev» как версию
name: rest-api
inputs:
src: ./src
Выполните следующую команду для проверки изменений в проекте:
$ serverless deploy --debug
При разработке компонента мы рекомендуем использовать параметр --debug
для получения информации журнала console.log()
, чтобы можно было более чётко видеть этапы развёртывания компонента и процесса, рекомендуется добавлять console.log()
везде, где это необходимо, для записи состояния развёртывания, что позволяет лучше разрабатывать и устранять проблемы.
class MyComponent extends Component {
async deploy(inputs) {
console.log(`Запуск MyComponent.`);
console.log(`Создание ресурсов.`);
console.log(`Ожидание подготовки ресурсов.`);
console.log(`Завершение MyComponent.`);
return {};
}
}
Если вы готовы опубликовать официальную версию компонента, обновите номер версии в файле serverless.component.yml
, а затем запустите команду публикации без параметра --dev
.
# serverless.component.yml
name: express@0.0.1
$ serverless publish
Serverless: Successfully publish express@0.0.1
Разрабатывая собственный Serverless Component, мы предлагаем начать с результата, сосредоточиться на том, какой результат вы ожидаете получить, и создать этот компонент, чтобы решить вашу проблему. После завершения первоначальной цели продолжайте оптимизировать структуру, разбивая её на различные уровни компонентов.
Конфигурация базовой инфраструктуры очень сложна, поэтому существует множество инструментов конфигурации, которые поддерживают все конфигурации и комбинации (например, AWS Cloudformation и т. д.), но по сравнению с ними, самое большое преимущество Serverless Components заключается в том, что они знают, какие конкретные сценарии им нужно предоставить.
Что касается инструментов развёртывания программного обеспечения, мы узнали о важном аспекте: как только вы узнаете, какой сценарий вы хотите получить, вы можете создать лучший инструмент.
Компоненты понимают пользовательские сценарии, основанные на сценариях, вы можете реализовать следующие моменты:
Serverless Components экономят много информации о состоянии. Фактически, многие мощные компоненты имеют менее 10 атрибутов в своём объекте состояния.
Компоненты зависят от облачных сервисов в качестве источника состояния и используют их для хранения информации о состоянии. Это может предотвратить переход состояния, влияющий на инструменты конфигурации базовой инфраструктуры. Этот подход также поддерживает использование компонентов существующих облачных ресурсов, то есть тех, которые изначально не были созданы компонентами, но используются для миграции и других сценариев.
Если вам действительно нужно сохранить состояние, попробуйте сохранить информацию о состоянии сразу после успешного развёртывания. Используя этот метод, если в последующих развёртываниях и операциях происходит сбой, конечным клиентам потребуется повторно развернуть, когда ваш Serverless Components сможет продолжить развёртывание с точки прерывания. Это также уменьшает создание избыточных ресурсов.
Мы верим, что базовая инфраструктура и архитектура serverless могут дать большему количеству людей более мощные возможности для разработки программного обеспечения.
Именно поэтому мы разрабатываем все наши проекты максимально понятными и лёгкими для изучения. Попробуйте использовать простой, базовый синтаксис JavaScript. Кроме того, чтобы уменьшить риски безопасности и сложность зависимостей, используйте как можно меньше зависимостей NPM.
Шаблон проекта (Template) — это обычный проект, основанный на Serverless Component и развёрнутый с использованием команды публикации реестра Serverless sls publish
. Как только вы опубликуете свой проект в реестре, этот проект станет шаблоном проекта, которым могут пользоваться другие разработчики, поэтому шаблон проекта фактически является способом поделиться своим проектом Serverless. Например, как разработчик, вы, возможно, разработали отличный проект блога, основанный на Serverless Component. Вы можете опубликовать этот блог как шаблон проекта в реестре. Другие разработчики могут выбрать использование шаблона вашего блога для инициализации проекта и внести небольшие изменения, чтобы быстро развернуть полный блог на основе Serverless. Команда разработчиков Tencent Cloud уже подготовила несколько отличных шаблонов проектов, таких как шаблон fullstack, который включает в себя базу данных Serverless, серверный API Serverless, SSR-страницу переднего плана и соответствующую сетевую конфигурацию. Вам нужно только выбрать шаблон fullstack для инициализации проекта, добавить свою бизнес-логику и сразу же развернуть полную архитектуру веб-приложения на основе Serverless.
Опубликовать свой проект на основе Serverless Component как шаблон очень просто, вам не нужно вносить никаких изменений в проект, просто добавьте файл serverless.template.yml
(или измените существующий файл serverless.template.yml
) и добавьте некоторую необходимую информацию о шаблоне в реестр. Подробные инструкции следующие:
name: fullstack # Имя шаблона проекта
author: Tencent Cloud, Inc. # Имя автора
org: Tencent Cloud, Inc. # Название организации, необязательно
description: Deploy a full stack application. # Описание шаблона проекта
keywords: tencent, serverless, express, website, fullstack # Ключевые слова
repo: https://github.com/serverless-components/tencent-fullstack # Исходный текст:
源代码
readme: https://github.com/serverless-components/tencent-fullstack/tree/master/README.md # 详细的说明文件
license: MIT # 版权声明
src: # 描述项目中的哪些文件需要作为模板发布
src: ./ # 指定具体的相对目录,此目录下的文件将作为模лет发布
exclude: #描述在指定的目录内哪些文件应该被排除
# 通常你希望排除
# 1. 包含secrets的文件
# 2. .git git源代码管理的相关文件
# 3. node_modules等第三方依赖文件
- .env
- '**/node_modules'
- '**/package-lock.json'
一旦你准备好了描述项目模板元信息的 `serverless.template.yml` 文件,便可以使用发布命令 `sls publish` 将此项目作为模板发布到注册中心。
# CLI 命令列表
#### `serverless registry`
查看可用的 组件(Components)以及模板(Template) 列表
#### `serverless registry publish`
发布组件(Components)或者模板(Template) 到 Serverless 注册中心
`--dev` - 支持 dev 参数用于发布 `@dev` 版本的 Component,用于开发或测试,此参数仅对组件有效,对模板无效,模板没有版本的概念。
#### `serverless init`
选择一个模板初始化项目。使用 `-t` 参数指定所要使用的模板。
#### `serverless deploy`
部署一个 Component 实例到云端
`--debug` - 列出组件部署过程中 `console.log()` 输出的部罐操作和状态等日志信息。
#### `serverless remove`
从云端移除一个 Component 实例
`--debug` - 列出组件移除过程中 `console.log()` 输出的移除操作和状态等日志信息。
#### `serverless info`
获取并展示一个 Component 实例的相关信息
`--debug` - 列出更多 `state`.
#### `serverless dev`
启动 DEV MODE 开发者模式,通过检测 Component 的状态变化,自动部署变更信息。同时支持在命令行中实时输出运行日志,调用信息和错误等。此外,支持对 Node.js 应用进行云端调试。
#### `serverless login`
支持通过 login 命令,通过微信扫描二维码的方式,登录腾讯云账号并授权对关联资源进行操作。
#### `serverless <command> --inputs key=value foo=bar`
在运行命令时覆盖 `serverless.yml` 中的 inputs
Пример:
serverless test --inputs domain=serverless.com
serverless invoke --inputs env='{"LANG": "en"}'
serverless backup --inputs userIds=foo,bar
Перевод:
Исходный код
readme: [https://github.com/serverless-components/tencent-fullstack/tree/master/README.md](https://github.com/serverless-components/tencent-fullstack/tree/master/README.md) # подробное описание файла
license: MIT # лицензия
src: # описание файлов проекта, которые необходимо опубликовать в качестве шаблона
src: ./ # указание конкретного относительного каталога, файлы из этого каталога будут опубликованы как шаблон
exclude: #описание файлов, которые следует исключить в указанном каталоге
# обычно вы хотите исключить
# 1. файлы, содержащие секреты
# 2. связанные с git файлы управления исходным кодом
# 3. сторонние зависимости, такие как node_modules
- .env
- '**/node_modules'
- '**/package-lock.json'
Как только вы подготовите файл serverless.template.yml с описанием метаданных шаблона проекта, вы можете использовать команду публикации sls для публикации этого проекта в качестве шаблона в реестре.
# Список команд CLI
#### serverless registry
Просмотр доступных компонентов (Components) и шаблонов (Template) в списке
#### serverless registry publish
Публикация компонентов (Components) или шаблонов (Template) в серверный реестр
*--dev* — поддержка параметра dev для публикации версии @dev компонента, используемой для разработки или тестирования. Этот параметр действует только для компонентов, но не для шаблонов, у которых нет концепции версий.
#### serverless init
Выберите шаблон для инициализации проекта. Используйте параметр -t для указания используемого шаблона.
#### serverless deploy
Разверните экземпляр компонента на облаке
*—debug* — вывод информации о действиях и состоянии процесса развёртывания, включая console.log(), в виде журнала.
#### serverless remove
Удалите экземпляр компонента из облака
*—debug* — информация о действиях и статусе процесса удаления, включая console.log().
#### serverless info
Получите и отобразите информацию о связанном экземпляре компонента
*—debug* — дополнительная информация о состоянии.
#### serverless dev
Запустите режим разработчика DEV MODE, автоматически развертывая изменения состояния компонента. Одновременно поддерживайте вывод журналов выполнения, информации о вызовах и ошибках в командной строке. Кроме того, поддерживается отладка приложений Node.js в облаке.
#### serverless login
Поддержка входа в систему с помощью команды login, сканирование QR-кода через WeChat для входа в учётную запись Tencent Cloud и авторизации операций с соответствующими ресурсами.
#### serverless <команда> —inputs ключ=значение foo=бар
Переопределить входные данные в файле serverless.yml при выполнении команды
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )