執(zhí)行 serverless create --template aws-nodejs --path hello-world
后,就會在當(dāng)前目錄生成一個名為 hello-world
代碼目錄結(jié)構(gòu)如下:
├── .gitignore
├── handler.js
└── serverless.yml
1. .gitignore
.gitignore 里有3個忽略項钦听,分別如下:
-
node_modules
天试, 是 Node.js 包管理安裝后的目錄 -
jspm_packages
萧朝,jspm 是 JavaScript 包管理器腊尚,是基于 SystemJS 這種通用模塊加載器之上的包管理器 -
.serverless
是一個 serverless 部署時的打包生成的目錄,當(dāng)執(zhí)行serverless deploy
時才會生成
2. handler.js
module.exports.hello = async (event, context) => {
return {
statusCode: 200,
body: JSON.stringify({
message: 'Go Serverless v1.0! Your function executed successfully!',
input: event,
}),
};
};
handler.js
是用 --template aws-nodejs
參數(shù)生成出來的 js 文件庵佣, 代碼就是輸出一個 JSON歉胶。
注:如果我們選用 aws-nodejs-typescript
模塊,就會生成 handler.ts
文件巴粪。如果你用 Microsoft Azure 服務(wù)跨扮,也可以選用 azure-nodejs
模板。關(guān)于更多項目模板验毡,我后面章節(jié)會細講衡创,請關(guān)注哦!
3. serverless.yml
這是 yml 文件里除注釋外的代碼
service: hello-world
provider:
name: aws
runtime: nodejs8.10
functions:
hello:
handler: handler.hello
這相當(dāng)于 serverless 的描述文件晶通,介紹了服務(wù)名為hello-world
璃氢,服務(wù)提供商是 aws
,運行環(huán)境是nodejs 8.10 版
狮辽。
你可能要問一也,一定要是 nodejs8.10 嗎?我要用 Node 10 行不行喉脖? 答案是:不行R丁!树叽!
runtime 目前只支持:java8, nodejs6.10, nodejs8.10, python2.7, python3.6, dotnetcore1.0, dotnetcore2.0, dotnetcore2.1, go1.x
(截止2019-3-9)
第 6 行的 hello:
是調(diào)用時的名稱舆蝴,如果改成 hellokenny:
,調(diào)用時就要用 serverless invoke -f hellokenny
第 7 行的 handler:
是不能亂改的题诵, 如果你以后發(fā)現(xiàn) Missing "handler" property in function "hello"
洁仗,首先就應(yīng)該檢查一下,是不是把 handler:
改錯了性锭。
第 7 行的 handler.hello
我們分兩部分來講赠潦,點號(.)前面的 handler
是文件名,后面的 hello
是默認函數(shù)名草冈。
我們?nèi)绻秧椖扛夸浀?handler.js
改為 index.js
她奥,那就要把 serverless.yml
里的內(nèi)容改為 handler: index.hello
瓮增。
4. 最后
當(dāng)我們執(zhí)行過 serverless deploy
之后就會變成如下目錄結(jié)構(gòu):
├── .gitignore
├── .serverless
│ ├── cloudformation-template-create-stack.json
│ ├── cloudformation-template-update-stack.json
│ ├── hello-world.zip
│ └── serverless-state.json
├── handler.js
└── serverless.yml
-
hello-world.zip
是項目代碼文件打包后的壓縮文件 -
serverless-state.json
是服務(wù)部署后的信息,包含服務(wù)名稱哩俭,服務(wù)提供商等信息绷跑。部分內(nèi)容如下:
"service": {
"service": "hello-world",
"serviceObject": {
"name": "hello-world"
},
"provider": {
"stage": "dev",
"region": "us-east-1",
"variableSyntax": "\\${([ ~:a-zA-Z0-9._@'\",\\-\\/\\(\\)]+?)}",
"name": "aws",
"runtime": "nodejs8.10",
"versionFunctions": true,
相關(guān)文章
- Serverless 入門(一) - 創(chuàng)建 IAM http://www.reibang.com/p/9fb731a799e2
- Serverless 入門(二) - HelloWord http://www.reibang.com/p/ddf2ffda5f63
- Serverless 入門(三)- 初始項目解讀 http://www.reibang.com/p/8baba2a8fe9f
- Serverless 入門(四)- 如何調(diào)試 http://www.reibang.com/p/58d30915de8a
- Serverless 入門(五)- 常用命令 http://www.reibang.com/p/28f001ea9d9d
- Serverless 入門(六)- DynamoDB 數(shù)據(jù)庫(上) http://www.reibang.com/p/c313b61d1cbf
- Serverless 入門(七)- DynamoDB 數(shù)據(jù)庫(中) http://www.reibang.com/p/05e7f4ccd6fe
- Serverless 入門(八)- DynamoDB 數(shù)據(jù)庫(下) http://www.reibang.com/p/0f9f1561ec46
- Serverless 入門(九)- 權(quán)限 http://www.reibang.com/p/97228749d761