O Serverless Devs é uma ferramenta de código aberto para desenvolver, compilar, testar e implantar projetos serverless durante todo o ciclo de vida. Este tópico descreve como usar o Serverless Devs para inicializar e implantar um projeto do Function Compute. Todos os exemplos usam Node.js 14.
Referência rápida de comandos
|
Comando |
Descrição |
|
|
Inicia o assistente interativo de projeto (Método 1) |
|
|
Inicializa um projeto a partir de um modelo específico (Método 2) |
|
|
Compila o projeto localmente |
|
|
Inicia um servidor local para funções HTTP |
|
|
Invoca uma função de evento localmente |
|
|
Implanta o projeto no Function Compute |
|
|
Invoca a função implantada remotamente |
|
|
Exclui o serviço e todos os recursos associados |
Pré-requisitos
Antes de começar, verifique se você tem:
O serviço Function Compute ativado. Para mais informações, consulte Ativar o Function Compute
Escolha um método
|
Método |
Comando |
Mais indicado para |
Resultado obtido |
|
Método 1: Configuração interativa |
|
Usuários iniciantes |
Assistente guiado para criação de projeto e implantação em uma única etapa |
|
Método 2: Fluxo de trabalho passo a passo |
|
Controle granular |
Compilação, depuração local, invocação remota e remoção de recursos |
Método 1: Configuração interativa com s
Execute s para iniciar o assistente interativo:
sudo s
O assistente solicitará a configuração do projeto. O exemplo a seguir mostra uma sessão típica:
No Serverless-Devs project is currently detected. Do you want to create a new project? Yes
Serverless Awesome: https://github.com/Serverless-Devs/Serverless-Devs/blob/master/docs/zh/awesome.md
Hello Serverless for Cloud Vendors Alibaba Cloud Serverless
Hello, serverlesser. Which template do you like? Quick start [Deploy a Hello World function to FaaS]
Which template do you like? [Event] Node.js 14
Create application command: [s init devsapp/start-fc-event-nodejs14]
Please input your project name (init dir) start-fc-event-nodejs14
file decompression completed
____ _ _ ___ _ _ _ _____ ____
/ _ \/ \ / \\ \/// \ /\/ \ /| / // _\
| / \|| | | | \ / | | ||| |\ || | __\| /
| |-||| |_/\| | / / | \_/|| | \|| | | | \__
\_/ \|\____/\_//_/ \____/\_/ \| \_/ \____/
please select credential alias default
Welcome to the Aliyun FC start application
This application requires to open these services:
FC : https://fc.console.alibabacloud.com/
* The project is initialized. You can go to the project directory and run the s deploy command to deploy the project.
Thanks for using Serverless-Devs
You could [cd /test/start-fc-event-nodejs14] and enjoy your serverless journey!
If you need help for this example, you can use [s -h] after you enter folder.
Document Star: https://github.com/Serverless-Devs/Serverless-Devs
Do you want to deploy the project immediately? Yes
......
helloworld:
region: cn-hangzhou
service:
name: hello-world-service
function:
name: event-nodejs14
runtime: nodejs14
handler: index.handler
memorySize: 128
timeout: 60
Principais escolhas durante o fluxo interativo:
Cloud vendor: Selecione Alibaba Cloud Serverless.
Template: Escolha o tipo de função e o runtime, por exemplo, [Event] Node.js 14.
Project name: Aceite o padrão ou insira um nome personalizado.
Credential alias: Selecione o alias configurado durante a configuração do Serverless Devs.
Deploy immediately: Selecione Yes para implantar em uma única etapa ou No para implantar posteriormente.
Método 2: Fluxo de trabalho passo a passo com s init
Inicialize o projeto
sudo s init devsapp/start-fc-http-nodejs14
Este exemplo implanta uma função HTTP em Node.js 14. Substituahttppor outro tipo de gatilho, comoevent, para alterar o tipo da função. Substituanodejs14por outro identificador de runtime para alterar o ambiente de execução.
Saída de exemplo:
Serverless Awesome: https://github.com/Serverless-Devs/Serverless-Devs/blob/master/docs/zh/awesome.md
Please input your project name (init dir) start-fc-http-nodejs14
file decompression completed
____ _ _ ___ _ _ _ _____ ____
/ _ \/ \ / \\ \/// \ /\/ \ /| / // _\
| / \|| | | | \ / | | ||| |\ || | __\| /
| |-||| |_/\| | / / | \_/|| | \|| | | | \__
\_/ \|\____/\_//_/ \____/\_/ \| \_/ \____/
please select credential alias default
Welcome to the Aliyun FC start application
This application requires to open these services:
FC : https://fc.console.alibabacloud.com/
* The project is initialized. You can go to the project directory and run the s deploy command to deploy the project.
Thanks for using Serverless-Devs
You could [cd /test/start-fc-http-nodejs14] and enjoy your serverless journey!
If you need help for this example, you can use [s -h] after you enter folder.
Document Star: https://github.com/Serverless-Devs/Serverless-Devs
Do you want to deploy the project immediately? No
Após a inicialização, o diretório do projeto contém os seguintes arquivos:
|
Arquivo |
Descrição |
|
|
Define os recursos do Function Compute. Para mais informações, consulte Sintaxe YAML e gerenciamento de permissões. |
|
|
Contém a mesma configuração que |
|
|
Contém |
|
|
Documenta dependências, módulos e configurações do projeto. |
Acesse o diretório do projeto
cd start-fc-http-nodejs14
Compile o projeto (opcional)
Execute s build para compilar e empacotar o projeto localmente:
sudo s build
Esse comando gera um diretório .s na raiz do projeto, que armazena os artefatos de compilação para depuração e implantação.
Depure localmente (opcional)
Após a compilação, teste a função na sua máquina antes de implantar.
Funções HTTP:
sudo s local start
Saída de exemplo:
[2021-12-16 07:17:05] [INFO] [FC-LOCAL-INVOKE] - Using trigger for start: name: httpTrigger
type: http
config:
authType: anonymous
methods:
- GET
[2021-12-16 07:17:05] [INFO] [FC-LOCAL-INVOKE] - HttpTrigger httpTrigger of hello-world-service/http-trigger-nodejs14 was registered
url: http://localhost:7013/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/
methods: GET
authType: anonymous
Tips: You can also use these commands to run or debug custom domain resources:
Start with customDomain:
* s local start auto
Debug with customDomain:
* s local start -d 3000 auto
Tips for next step
======================
* Deploy Resources: s deploy
helloworld:
status: succeed
function compute app listening on port 7013!
Acione a função HTTP com cURL ou um navegador:
curl http://localhost:7013/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/
Ou abra a seguinte URL em um navegador:
http://localhost:7013/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/
Funções de evento:
sudo s local invoke
O resultado é retornado diretamente após a execução do comando.
Implante no Function Compute
sudo s deploy -y
Saída de exemplo:
Checking Service, Function, Triggers (0.82s)
Creating Service, Function, Triggers (0.6s)
Creating custom domain (0.31s)
Tips for next step
======================
* Display information of the deployed resource: s info
* Display metrics: s metrics
* Display logs: s logs
* Invoke remote function: s invoke
* Remove Service: s remove service
* Remove Function: s remove function
* Remove Trigger: s remove trigger
* Remove CustomDomain: s remove domain
helloworld:
region: cn-hangzhou
service:
name: hello-world-service
function:
name: http-trigger-nodejs14
runtime: nodejs14
handler: index.handler
memorySize: 128
timeout: 60
url:
custom_domain:
-
domain: http://http-trigger-nodejs14.hello-world-service.188077086902****.cn-hangzhou.fc.devsapp.net
triggers:
-
type: http
name: httpTrigger
Invoque a função remotamente (opcional)
Após a implantação, invoque a função na nuvem para verificar se ela funciona corretamente:
sudo s invoke -e '{"body": "","method":"GET","headers":{"header_1":"v1"},"queries":{"key":"value"},"path":"/"}'
Saída de exemplo:
Request url: https://188077086902****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/
========= FC invoke Logs begin =========
FC Invoke Start RequestId: 6a3adedb-5d5d-4ac5-aa0b-2d43f4ace65c
load code for handler:index.handler
2022-03-04T08:39:14.770Z 6a3adedb-5d5d-4ac5-aa0b-2d43f4ace65c [verbose] hello world
FC Invoke End RequestId: 6a3adedb-5d5d-4ac5-aa0b-2d43f4ace65c
Duration: 66.23 ms, Billed Duration: 67 ms, Memory Size: 128 MB, Max Memory Used: 42.48 MB
========= FC invoke Logs end =========
FC Invoke Result[Code: 200]:
{
path: '//',
queries: { key: 'value' },
headers: {
accept: 'application/json',
authorization: 'FC yourAccessKeyID:yourAccessKeySecret',
date: 'Fri, 04 Mar 2022 08:39:14 GMT',
header_1: 'v1',
host: '188077086902****.cn-hangzhou.fc.aliyuncs.com',
'user-agent': 'Node.js(v14.17.4) OS(linux/x64) SDK(@alicloud/fc2@v2.5.0)',
'x-forwarded-proto': 'http'
},
method: 'GET',
requestURI: '/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14//?key=value',
clientIP: '47.97.XX.XX',
body: ''
}
End of method: invoke
Você também pode acionar uma função HTTP com cURL:
curl https://188077086902****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/
Remova recursos (opcional)
Quando não precisar mais dos recursos implantados, exclua-os:
sudo s remove service
Saída de exemplo:
Need to delete the resource in the cn-hangzhou area, the operation service is hello-world-service:
......
Delete trigger hello-world-service/http-trigger-nodejs14/httpTrigger success.
Delete function hello-world-service/http-trigger-nodejs14 success.
Delete service hello-world-service success.
[2022-03-04 08:40:26] [INFO] [FC] - Getting list on-demand: _FC_NAS_hello-world-service-ensure-nas-dir-exist-service
[2022-03-04 08:40:26] [INFO] [FC] - Getting list provision: _FC_NAS_hello-world-service-ensure-nas-dir-exist-service
[2022-03-04 08:40:26] [INFO] [FC] - Getting listAliases: _FC_NAS_hello-world-service-ensure-nas-dir-exist-service
[2022-03-04 08:40:26] [INFO] [FC] - Getting list on-demand: _FC_NAS_hello-world-service
[2022-03-04 08:40:26] [INFO] [FC] - Getting list provision: _FC_NAS_hello-world-service
[2022-03-04 08:40:26] [INFO] [FC] - Getting listAliases: _FC_NAS_hello-world-service
End of method: remove
Este comando exclui gatilhos, funções e o serviço em sequência, além de limpar os recursos relacionados ao serviço NAS.