Skip to content

Commit f82b9ec

Browse files
committed
feat: reference and cli docs ok
Signed-off-by: seven <zilisheng1996@gmail.com>
1 parent 2deb9e9 commit f82b9ec

File tree

6 files changed

+211
-5
lines changed

6 files changed

+211
-5
lines changed

docs/cli.md

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# ServerlessInsight 命令行
2+
3+
一下将列举ServerlessInsight所支持的所有命令以及具体使用方法。ServerlessInsight可以通过`si -h` 查看对应命令的帮助文档。
4+
5+
## validate 校验配置文件
6+
7+
`validate`命令用于校验`serverlessinsight.yml`配置文件是否合法,校验通过将输出成功信息,否则返回错误信息。
8+
9+
```bash
10+
si validate
11+
```
12+
13+
![validate校验成功示例](/cli-validate-success.png)
14+
15+
## deploy 部署Serverless应用
16+
17+
`deploy`命令用于部署Serverless应用到指定的Serverless供应商中。
18+
19+
```bash
20+
si deploy --stage dev <stackName>
21+
```
22+
23+
其中\<stackName\>是必选项,用以指定资源栈的名称,deploy命令还支持如下参数:
24+
25+
- **--stage/-s**: 指定部署的环境,默认值为`default`
26+
- **--parameter/-p**: 传递变量值并覆盖默认值。
27+
- **--file/-f**: 指定部署的配置文件,默认值为`serverlessinsight.yml`
28+
29+
## destroy 销毁Serverless应用
30+
31+
`destroy`命令用于销毁Serverless应用。
32+
33+
```bash
34+
si destroy --stage dev <stackName>
35+
```
36+
37+
- **--stage/-s**: 指定部署的环境,默认值为`default`

docs/getting-started.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -177,5 +177,6 @@ Service hello-world-api deployed successfully
177177
si destory --stage dev <stackName>
178178
```
179179

180-
<span style="color: red;">**注意:**
181-
删除资源栈会删除所有申明的资源导致服务完全不可用且丢失有状态资源的数据,请确保相关数据、内容已备份或确认不再需要后执行该操作</span>
180+
<span style="color: red;">
181+
**注意:** 删除资源栈会删除所有申明的资源导致服务完全不可用且丢失有状态资源的数据,请确保相关数据、内容已备份或确认不再需要后执行该操作
182+
</span>

docs/public/cli-validate-success.png

93.8 KB
Loading

docs/reference.md

+168
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
# 用户手册
2+
3+
本文档概述了ServerlessInsight的规范,详细介绍了IaC(基础设施即代码)的YAML定义。
4+
5+
## serverlessinsight Yaml配置规范
6+
7+
ServerlessInsight的YAML配置文件是一个描述Serverless应用的资源的文件,它包含了Serverless应用的所有资源定义,如函数、API网关、事件等。以下是一个ServerlessInsight的YAML配置文件的示例:
8+
9+
> stack.yml
10+
11+
```yaml
12+
version: 0.1
13+
provider: aliyun
14+
15+
vars:
16+
region: cn-hangzhou
17+
account_id: 1234567890
18+
19+
stages:
20+
dev:
21+
region: ${vars:region}
22+
account_id: ${vars:account_id}
23+
24+
service: insight-poc
25+
26+
tags:
27+
owner: geek-fun
28+
29+
functions:
30+
insight_poc_fn:
31+
name: insight-poc-fn
32+
runtime: nodejs18
33+
handler: ${vars.handler}
34+
code: artifacts/artifact.zip
35+
memory: 512
36+
timeout: 10
37+
environment:
38+
NODE_ENV: production
39+
TEST_VAR: ${vars.testv}
40+
TEST_VAR_EXTRA: abcds-${vars.testv}-andyou
41+
42+
events:
43+
gateway_event:
44+
type: API_GATEWAY
45+
name: insight-poc-gateway
46+
triggers:
47+
- method: GET
48+
path: /api/hello
49+
backend: insight-poc-fn
50+
51+
```
52+
53+
如上,一个典型的ServerlessInsight定义包含了`version``provider``vars``stages``service``tags``functions``events`
54+
字段。我们来逐个解释一下这个YAML文件的各个部分:
55+
56+
## version
57+
58+
`version`字段指定了ServerlessInsight的YAML配置文件的版本,目前只支持`0.1`版本。
59+
注意主版本之间可能会有不兼容的变化,所以请确保您的配置文件与ServerlessInsight的版本兼容。
60+
61+
```yaml
62+
version: 0.1
63+
```
64+
65+
## provider
66+
67+
`provider`字段指定了ServerlessInsight的提供商,包括`aliyun`、`huawei`、`tencent`等,目前只支持`aliyun`,其他提供商的支持正在开发中。
68+
69+
```yaml
70+
provider: aliyun
71+
```
72+
73+
## vars
74+
75+
`vars`字段是一个对象,用于定义一些变量,这些变量可以在其他地方引用。在部署时,可以通过`--parameter key=var`或`-p key=var`
76+
传递变量值并覆盖默认值。
77+
变量可以通过`${vars.var_name}`的方式在模版中进行引用。
78+
79+
```yaml
80+
vars:
81+
bucket_name: my-bucket
82+
domain_name: my-domain
83+
```
84+
85+
## stages
86+
87+
`stages`字段是一个对象,用于定义不同stage下的的配置项的值。最佳实践是将部署环境相关的配置项放在`stages`
88+
字段下,使得不同环境下相同的配置项可以被赋予不同的值,如:
89+
90+
```yaml
91+
stages:
92+
default:
93+
domain_name: my-domain-dev.com
94+
database_name: my-database-dev
95+
local:
96+
domain_name: localhost
97+
database_name: localhost
98+
dev:
99+
domain_name: my-domain-dev.com
100+
database_name: my-database-dev
101+
prod:
102+
domain_name: my-domain-prod.com
103+
database_name: my-database-prod
104+
```
105+
106+
在stages中的变量可以通过`${stages.domain_name}`的方式在模版中进行引用,无需指定stage, 在部署/启动服务时,通过`--stage`或
107+
`-s`参数指定部署的环境,如`si deploy --stage prod`,模版便会引用对于stage的变量值。如果不指定stage,默认使用`default`。
108+
109+
## service
110+
111+
`service`字段指定了Serverless应用的名称。`service`
112+
字段是一个全局唯一的标识符,用于区分不同的Serverless应用。不同于命令行中传递的 \<stackName\>
113+
参数,service的值将作为隐形创建资源的ID以及资源名称前缀,且service需要区分部署的stage,所以最佳实践是将service命名为
114+
`<service>-<stage>`
115+
116+
```yaml
117+
service: insight-poc-${stage}
118+
```
119+
120+
> 注意,${stage}是ServerlessInsight提供的全局预定义变量,表示当前部署的stage,值为命令行中指定的stage或默认值`default`。
121+
122+
## tags
123+
124+
`tags`字段是一个对象,用于定义一些标签。在这个例子中,我们定义了`owner`标签。
125+
126+
## functions
127+
128+
`functions`字段是一个对象,用于定义serverless方法。functions下的每一个子项都是一个方法的定义。function支持的字段有:
129+
130+
- **name**: serverless方法的名称
131+
> 支持的字符集为`a-zA-Z0-9-_`,长度为1-64个字符
132+
> required: true
133+
- **runtime**: serverless方法的运行时
134+
> 支持的运行时:
135+
nodejs20,nodejs18,nodejs16,nodejs14,nodejs12,nodejs10,nodejs8,python3.10,python3.9,python3,PHP7.2,Java11,.NETCore3.1,Go1.x
136+
- **handler**: serverless方法的处理程序
137+
> required: true
138+
- **code**: serverless方法的代码包相对项根目录的路径
139+
> 当前仅支持zip格式的代码包
140+
> required: true
141+
- **timeout**: serverless方法的超时时间
142+
> 默认值: 15分钟
143+
- **memory**: serverless方法的内存大小
144+
> 默认值: 128MB
145+
- **environment**: serverless方法的环境变量
146+
> 支持的字符集为`a-zA-Z0-9-_`,长度为1-64个字符
147+
> required: false
148+
149+
## events
150+
151+
`events`字段是一个对象,用于定义事件。事件是发起函数调用的触发器。可以是一个来自用户的通过api gateway转发的http请求
152+
也可以是来自消息队列,数据库状态改变的事件等,events下的每一个子项都是一个事件的定义。event支持的字段有:
153+
154+
- **type**: 事件的类型(目前仅支持 API_GATEWAY)
155+
> 支持的事件类型有:API_GATEWAY,SQS,S3,HTTP,Timer等
156+
> required: true
157+
- **name**: 事件的名称
158+
> required: true
159+
- **triggers**: 事件的触发器
160+
> required: true
161+
- **method**: 事件的方法
162+
> required: true
163+
> 支持的方法有:GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS 以及ANY
164+
- **path**: 事件的路径
165+
> required: true
166+
- **backend**: 事件的后端,通过方法的名称,指定后端的方法,请求最终有指定的方法进行处理
167+
> required: true
168+

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "hostsless-site",
3-
"version": "0.0.4",
3+
"version": "0.0.5",
44
"description": "",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)