创建一个 Serverless 应用,真的没有这么难!
上周五我们给开发者带来了一个好玩还有奖的游戏 —— 《Serverless 有一百种玩法,比好玩更好玩》。
礼品已经到位!为了让大家能更好地玩转 Serverless,拿走我们的大奖,我们特意为新手/初学者准备了一则极其简单的教程指引。
- 如何复用现成 demo:两步完成应用初始化,并实现云端的快速部署!
- 快速开发一个 Serverless demo,简单的三步实现自己的第一个程序。
毕竟,我们是 Serverless
—— 让开发者能轻而易举地写出一个自己的应用,更专注于拿奖(自己的代码)。
模板下载与复用
以云函数 SCF 为例,一个 HelloWorld 的应用复用如下:
使用者可以直接体验组件模版:快速获取到组件或者模版的信息,并支持项目源代码的下载复用,完成项目的快速部署。
新手友好度 +100 ?
1. 使用应用
当您的本地环境无目标应用,可以通过 sls init
指令快速完成应用初始化,init 后加上您需要使用的模版名称,以云函数 SCF 模版为例,指令如下:
sls init scf-demo
cd scf-demo
2. 模版快速部署
初始化完成后,您可以在本地项目文件夹内完成您的项目开发,再通过 sls 指令完成云端快速部署:
sls deploy --debug
创建与发布应用
三步开发自己的第一个程序是什么体验 ?
1. 创建配置文件
在您的项目目录下,新建 src
文件夹,完成您的应用开发,此处以一个最简单的定时触发 HelloWorld 为例,入口函数 index.js
代码如下:
'use strict';
exports.main_handler = async (event, context) => {
console.log("Hello World")
console.log(event)
console.log(event["non-exist"])
console.log(context)
return event
};
在相同目录内,创建配置文件 serverless.yml
,按如下示例填入您的应用配置信息:
app: my-firstdemo # 应用名称
component: scf # 组件名称,在该实例中为scf
name: serverless-demo # 该实例名称
#实例参数
inputs:
name: helloworld #函数名称
src: ./ #上传的项目代码路径
handler: index.main_handler #入口
runtime: Nodejs10.15 # 云函数运行时的环境
region: ap-guangzhou # 云函数所在区域
events: # 触发器
- timer: # 定时触发器
name: #触发器名称,默认timer-${name}-${stage}
parameters:
cronExpression: '*/30 * * * * * *'
enable: true
注意:如果您的应用包含多个函数,请为每个函数配置对应配置文件,并使用相同的 app
参数
2. 配置应用信息
回到项目根目录下,创建模版配置文件 serverless.template.yml
,配置您的项目模版信息(Registry 里的项目模版名不能重复,如果发布失败请更换模版名称)
name: my-demo-xxx # 项目模板名称,只支持英文与符号'-',后缀请填入您的appid,保证 demo 名称唯一性
author: # 作者的名字
description: This is helloworld function # 英文描述
description-i18n:
zh-cn: helloworld 空白模板函数 # 中文描述
type: template #类型:模版
keywords: tencent, scf, Nodejs10.15, helloworld # 关键字
repo: # (可选)源代码仓库地址
readme: # (可选)readme地址
license: MIT # 版权声明
src: # 描述项目中的哪些文件需要作为模板发布
src: ./src # 指定具体的相对目录,此目录下的文件将作为模板发布
exclude: #描述在指定的目录内哪些文件应该被排除
# 通常你希望排除
# 1. 包含secrets的文件
# 2. .git git源代码管理的相关文件
# 3. node_modules等第三方依赖文件
配置完成后,项目目录结构如下:
|-- my-demo
|-- serverless.template.yml
|-- src
| |-- index.js
| |-- serverless.yml
3. 发布应用
- 安装 Serverless Framework
npm install -g serverless
- 进入项目根目录下,完成项目发布,发布后的项目完全公开,所有用户都可以下载复用
sls publish
- 发布完成后,运行以下指令查看应用部署信息,如果可以返回应用信息,则应用已发布完成
sls registry my-demo-xxx
对照上述代码跑一遍,你也可以写一个 Serverless 应用。参与活动,还有大奖拿! ?《Serverless 有一百种玩法,比好玩更好玩》
One More Thing
点击「阅读原文」,转发评论有奖!?
截止时间:10.24 24:00
- 算法系列(二)
- JavaScript 基础(五) 函数 变量和作用域
- iOS8 、iPhone6 及iPhone6+:Apple touch icon 与Startup Image
- 算法系列
- .net页面生命周期
- JavaScript 基础(四) 循环
- 【译】WordPress 中的50个过滤器(6):第41-50个过滤器
- 【译】WordPress 中的50个过滤器(5):第31-40个过滤器
- 使用VS2010 C#开发ActiveX控件
- JavaScript 基础(三) 对象 条件判断
- “大数据+定制化服务”或将引领高端旅游市场
- FrameLayout(框架布局)
- WordPress 中变量$allowedposttags 添加自定义HTML属性
- 移动端UC /QQ 浏览器的部分私有Meta 属性
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 2020-09-13:判断一个正整数是a的b次方,a和b是整数,并且大于等于2,如何求解?
- ASP.NET Core 性能优化最佳实践
- 如何在Vue中使用云开发的云函数,实现邮件发送
- 乐观锁与悲观锁
- 为什么配置文件加密了数据库配置信息,Spring Boot仍能成功连接数据库
- SpringBoot开发微信公众号
- 猿实战10——动态表单之实现类目属性绑定
- 猿实战11——类目属性绑定之el-tree的使用
- 猿实战12——类目属性之动态绑定
- 一个maskrcnn的目标检测和实例分割的小例子
- Nginx系列:Nginx自带后端健康检查
- 消息队列之推还是拉,RocketMQ 和 Kafka是如何做的?
- Nginx系列:root与alias指令用法的区别
- Redis系列:Linux下部署Redis 6.x 版本
- 分布式锁的封装也很有讲究呀