前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何开发一个 Serverless Express 组件?(附源码)

如何开发一个 Serverless Express 组件?(附源码)

作者头像
腾讯云serverless团队
修改于 2020-08-05 02:37:31
修改于 2020-08-05 02:37:31
94300
代码可运行
举报
运行总次数:0
代码可运行

立即点击-> 选择您最常用的编程语言,免费体验 Serverless Demo

Python 是一种热门的编程语言,Serverless 是近年来迅速兴起的一个技术概念,基于Serverless架构能构建出多种应用场景,适用于各行各业。

前三期直播内容,我们详细阐述了什么是Serverless Component,Component 在实战中的应用。如果现有的 Component 无法满足诉求,我们应该如何制作一个自己的Component呢?这样多个云资源编排的Serverless场景化的解决方案是如何运行的,开发者应该怎样按照自己的需求定制化开发?本次将分享如何开发一个 Serverless Express 组件。

文章整理自 Serverless Framework 技术专家陈涛在腾讯云大学的分享。

本次分享内容:

1、Serverless Component 运行机制 2、一个完整的Component 开发步骤 3、Serverless Component 组件开发 4、Serverless Component 运行,调试与发布 5、开发一个 Serverless Express 组件实战

一、Serverless Component 运行机制

首先介绍一下什么是Serverless Component,下图是简单拿了一个全栈的应用,比方说我们全栈应用分为两部分,第一部分是前台,静态资源的展示,包括托管,我们简单称为DashBoard。

那么第二部分就是Web API的一个组件,我们认识的API其实也是封装了一个express,express下面又有几个组件,Cloud Function和API Gateway,还有COS静态存储等一系列的东西。

第二部分看一下Component的本质到底是什么,这可能对大部分人来说是一个新名词。Serverless Component其实就是一个NPM包,对它的引用也特别简单,我们只要在yml文件里引入我们的一些NPM包的名称,Serverless框架就会帮助我们把NPM install到我们所需要的本地一个路径。

二、一个完整的Component 开发步骤

看一下整体的一个component,它的开发步骤。总共有4步:

  • 第一部分是明确我们的需求,以我今天讲的例子为例,今天我要兼容一个express框架。然后我们express里面需要一些什么,比如说可能需要一个计算的部分,那么就使用SF。其次SF需要一个入口,就想到了我们API Gateway,这块也以express举例的话,它其实是有一个需求就是要进入express,一个需求下面其实可以拆解出两个工作就是兼容我们的API网关,还有SF。
  • 其次就是定义配置,比方说最简单的就是定义SF的上传路径,其次是API Gateway一个输出需要达到,这些都是定义配置的步骤。
  • 第三步就是最核心的组件开发,这块的话我也会给大家做一个详细的演示。
  • 第四步就是测试并发布npm包,这块的话,其实我可能不会给大家去推到npm的,因为我们已经推过了这个包,所以推送的话,可以直接按照片的发布流程,直接用命令行去推一下,我这块的话只是做一个测试的步骤就是让大家在本地跑起来。

三、Serverless Component 组件开发

那么我们来完整看一下组件开发的一些主体。这些参数的话,可以直接去拉我们的仓库,默认仓库里面有一些英文的注释,大家也可以去看。

首先有一个标准的Component的主体是由三部分的函数组成的,但Component是没有CI复杂,因为CI有部署创建回滚, Component只有两个操作, 第一个是部署。第二个是remove,删除移除的一些逻辑。就是Component的一个主体的需求。

  • 说第一部分,我们需要写一个默认的函数,就是来去执行、准备还有更新部分组件的函数,然后我们其实运行Serverless或者SLS,默认是会执行默认函数这一部分的代码。
  • 第二部分是remove,比方说我们要用Component删除一些基础设施,就可以在安装Serverless之后在Serverless里面去执行Serverless remove的命令,然后这个命令的话,它其实就是直接打到remove函数里面去做一些基础组件的删除。
  • 第三部分就是一些可选函数,比方说,你有一些其他需求的话,除了删除和部署之外,可能需要一些其他东西,那么您就可以在这里写,不过我觉得一般来说我们是不用去写它的。

目前的话,我们Component的组件,其实就是分为这三个函数,我们其实只要把逻辑写到这三个函数里面,那么就已经完成了我们80%甚至90%的工作,这块的话,我们一定要引入一个Serverless的核心代码,我们的一个包,然后这块的话是一定要注意这个包,假如你要调试的话也必须得安装到本地。

四、Serverless Component 运行,调试与发布

调试,其实我之前也是有踩到一个坑,因为我第一次使用的时候我是把整个GitHub克隆到本地的,所以这块的话,其实他就是引用我们本地的一个东西,所以在我们组件进行运行、调试发布的时候,我们就可以去直接定位到跟路径,然后去做这个事情。

这里的逻辑,我希望大家可以明白就是我们依然也可以去调用本地来做一些调试发布的工作。那这就是我们后面整体的一个Component组件的运行原理,包括一些调试方法,还有整体的发布步骤。

其次就是有哪些人在用我们Serverless的架构,那么下图也列举出了一些我们的客户,他们都是在用我们的Serverless架构的形态。

那么最关键的问题就是你现在有什么。我们其实现有的一些Component的支持还是比较多的,比方说Express、website、django等。

五、开发一个 Serverless Express 组件

1. 安装

  • 通过 npm 安装 serverless
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm install -g serverless

2. 创建

  • 本地创建 serverless.yml 文件:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ touch serverless.yml
  • 初始化一个新的 npm 包,并安装 Express:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm init              # 创建后持续回车
npm i --save express  # 安装express
  • 创建一个 app.js文件,并在其中创建您的 Express App:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const express = require('express')
const app = express()

app.get('/', function(req, res) {
  res.send('Hello Express')
})

// don't forget to export!
module.exports = app

3. 配置

  • 在 serverless.yml 中进行如下配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# serverless.yml

express:
  component: '@serverless/tencent-express'
  inputs:
    region: ap-shanghai

4. 部署

  • 通过sls命令进行部署,并可以添加--debug参数查看部署过程中的信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sls --debug

  DEBUG ─ Resolving the template's static variables.
  DEBUG ─ Collecting components from the template.
  DEBUG ─ Downloading any NPM components found in the template.
  DEBUG ─ Analyzing the template's components dependencies.
  DEBUG ─ Creating the template's components graph.
  DEBUG ─ Syncing template state.
  DEBUG ─ Executing the template's components graph.
  DEBUG ─ Compressing function ExpressComponent_7xRrrd file to /Users/dfounderliu/Desktop/temp/code/.serverless/ExpressComponent_7xRrrd.zip.
  DEBUG ─ Compressed function ExpressComponent_7xRrrd file successful
  DEBUG ─ Uploading service package to cos[sls-cloudfunction-ap-shanghai-code]. sls-cloudfunction-default-ExpressComponent_7xRrrd-1572512568.zip
  DEBUG ─ Uploaded package successful /Users/dfounderliu/Desktop/temp/code/.serverless/ExpressComponent_7xRrrd.zip
  DEBUG ─ Creating function ExpressComponent_7xRrrd
  DEBUG ─ Created function ExpressComponent_7xRrrd successful
  DEBUG ─ Starting API-Gateway deployment with name express.TencentApiGateway in the ap-shanghai region
  DEBUG ─ Using last time deploy service id service-n0vs2ohb
  DEBUG ─ Updating service with serviceId service-n0vs2ohb.
  DEBUG ─ Endpoint ANY / already exists with id api-9z60urs4.
  DEBUG ─ Updating api with api id api-9z60urs4.
  DEBUG ─ Service with id api-9z60urs4 updated.
  DEBUG ─ Deploying service with id service-n0vs2ohb.
  DEBUG ─ Deployment successful for the api named express.TencentApiGateway in the ap-shanghai region.

  express:
    region:              ap-shanghai
    functionName:        ExpressComponent_7xRrrd
    apiGatewayServiceId: service-n0vs2ohb
    url:                 http://service-n0vs2ohb-1300415943.ap-shanghai.apigateway.myqcloud.com/release/

  36s › express › done

部署完毕后,可以在浏览器中访问返回的链接,看到对应的express返回值。

实践相关源码:

https://docs.qq.com/doc/DVURnWFp3SFNGd3N

代码语言:javascript
代码运行次数:0
运行
复制

Serverless Framework 免费试用计划

Serverless Framework 免费试用名额已开放,我们诚邀您来试用和体验最便捷的 Serverless 开发和部署方式。包括服务中使用到云函数 SCF、API 网关对象存储 COS 等产品,均在试用期内提供免费资源,并伴有专业的技术支持,帮助您的业务快速、便捷实现 Serverless !

Serverless Framework 落地 Serverless 架构的全云端开发闭环体验,覆盖编码、运维、调试、部署等开发全生命周期。使用 Serverless Framework 即可在几秒钟内将业务部署至云端。

详情可查阅:https://cloud.tencent.com/document/product/1154/38792

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Serverless Python 开发实战(附源码)
Python是一种热门的编程语言,Serverless 是近年来迅速兴起的一个技术概念,基于Serverless架构能构建出多种应用场景,适用于各行各业。 本文将为大家详细讲解 Serverless 架构的处理规范与处理模型、典型的工作流程,以及 Serverless 工程化的难点与挑战。最后将结合 Python Flask + Serverless 的情人节表白页制作实例,展示如何用 Serverless 的方式进行 Python 编程,将热门Python 框架利用Serverless 快速上云。 文章
腾讯云serverless团队
2020/03/18
2.1K0
如何开发一个 Serverless Express 组件?
抗击疫情,腾讯云在行动。Python 是一种热门的编程语言,Serverless 是近年来迅速兴起的一个技术概念,基于Serverless架构能构建出多种应用场景,适用于各行各业。
可可爱爱没有脑袋
2020/03/24
6070
如何开发一个 Serverless Express 组件?
Serverless 架构揭秘与静态网站部署实战(附实战源码)
Serverless被誉为下一代云计算技术,因为其能带来研发交付速度提升与成本的降低在业内异常火爆。本文主要为大家分享 Serverless Framework 的架构演进、技术解析以及应用发展,并通过 Serverless+Hexo 实战案例,分享如何快速基于 Serverless Framework 进行业务开发部署。 文章整理自Serverless Framework 社区专家陈涛在腾讯云大学的视频分享,完整分享视频如下,感兴趣的读者也可以点击文末【阅读原文】下载讲师PDF。 文章大纲: 1、Ser
腾讯云serverless团队
2020/03/02
1K0
Serverless 架构揭秘与静态网站部署实战(附实战源码)
Serverless 实战:通过 Component 实现多地域部署容灾
单点故障是实际生产中无法避免的,单副本的存储方案也早已无法满足业务的可靠性要求。现在,我们通常都会做双机存储架构,会涉及到主备、主从、主主模式。
深度学习与Python
2020/08/02
6960
企业级 Serverless 应用实战
本文整理自 ServerlessDay · China 大会 - 《企业级 Serverless 应用实战》的分享,讲师为腾讯云 Serverless 高级产品经理方坤丁。 本文主要分为四个部分: Serverless 2020 : 趋势与挑战 Serverless 典型场景 部署企业级 Serverless 应用 实战演示 : Serverless SSR Serverless 2020 : 趋势与挑战 首先,谈一下对于 Serverless 在 2020 的趋势。我大概是从 3-4 年前开始接触 Se
腾讯云serverless团队
2020/07/09
2K1
Serverless 架构揭秘与静态网站部署实战
抗击疫情,腾讯云在行动。Serverless(无服务架构)被誉为下一代云计算技术,自概念推出以来,因为能带来研发交付速度提升与成本的降低在业内异常火爆。本次课程将围绕Serverless Framework为大家详细讲解Serverless架构演进,并通过简单的示例帮助开发者快速使用并部署Serverless Hexo 静态博客站点。
可可爱爱没有脑袋
2020/02/12
1.2K0
Serverless 架构揭秘与静态网站部署实战
使用 GraphQL 与 Serverless 开发一个 md2html 服务
借助于优秀的开源工具 mdnice,根据 mardown 生成美化 html 的 GraphQL API 服务。
山月
2020/07/09
8240
Serverless Component
相信读完前面几篇有关 Serverless Component 文章的小伙伴已经体验到,它给我们开发带来的遍历。但是实际我们的日常开发项目中,并不仅仅只是单纯地一个项目部署那么简单,我们的敏捷开发流程中,还有开发、联调、测试、预发布、正式环境等关键词。那么有小伙伴就有疑惑了,我的业务开发完了,如何管理不同环境的配置呢?比如测试环境的数据库配置和正式环境的如何切换?于是抛转引入,写了此篇文章,来跟大家一起学习和探讨。
不会飞的小鸟
2020/03/23
1.3K0
Serverless 多环境配置方案探索
相信读完前面几篇有关 Serverless Component 文章的小伙伴已经体验到,它给我们开发带来的便利。但是实际我们的日常开发项目中,并不仅仅只是单纯地一个项目部署那么简单,我们的敏捷开发流程中,还有开发、联调、测试、预发布、正式环境等关键词。 那么有小伙伴就有疑惑了,我的业务开发完了,如何管理不同环境的配置呢?比如测试环境的数据库配置和正式环境的如何切换?于是抛转引入,写了此篇文章,来跟大家一起学习和探讨。 读完本篇将你将了解到: Serverless Component 部署原理 dotenv
腾讯云serverless团队
2020/04/07
1.5K0
基于 Serverless + 企业微信打造 nCoV 疫情监控小助手
最近的一些疫情信息很让人揪心,为了方便大家掌握疫情信息,在空闲之余做了一个关于 nCoV 的疫情监控小助手。主要的功能是通过企业微信的 WebHook 来推送疫情信息。这里将使用 Serverless 的整体代码思路和架构方式分享给大家。 实现效果 我们想要实现的大致的效果是这样的: 首先,我们需要解决的是数据来源问题,这里我们可以使用python爬虫来做这件事情,但是由于个人比较懒所以直接用的 2019-nCoV-Crawler  ,这个项目已经集成了现有的API,所以我们直接调用即可。当然有能力的
腾讯云serverless团队
2020/03/27
8950
使用 Serverless Framework Express 组件快速创建文本翻译工具
Tencent Serverless Hours 第二期线上分享会上,通过 Serverless Framework 的 Express Component 实现了一款文本翻译工具。基于腾讯云 TMT 机器翻译工具,支持多种语言的互相翻译。点击 https://service-q8qqunpf-1251971143.bj.apigw.tencentcs.com/release/ 查看 Demo 部署效果。 如何使用 Serverless Framework 的 Express Component 快速
腾讯云serverless团队
2020/06/05
1.3K0
Hexo + Serverless Framework,简单三步搭建你的个人博客
很多人都想拥有自己的个人博客,还得看起来漂亮、酷酷的。尤其对开发者来说,不仅可以分享技术(装)心得(逼),面试的时候还能成为加分。这里介绍两款好用的神器,不用忙前(前端)忙后(后端),简单3min即可搞定,本文免费分享给大家。
腾讯云serverless团队
2020/03/18
2K0
基于 Serverless +企业微信打造 nCoV 疫情监控小助手
最近的一些疫情信息很让人揪心,为了方便大家掌握疫情信息,在空闲之余做了一个关于 nCoV 的疫情监控小助手。主要的功能是通过企业微信的 WebHook 来推送疫情信息。这里将使用 Serverless 的整体代码思路和架构方式分享给大家。本文作者:tabor
会呼吸的Coder
2020/02/19
8260
基于 Serverless +企业微信打造 nCoV 疫情监控小助手
实验室站迁移 Serverless 之路(上)|社区精选文章
本文为 Serverless 社区成员撰稿。作者高晨远,研发工程师,熟悉 Python 开发,常写 Web 和爬虫,日常维护有个人博客和实验室两个站点。供稿请戳~ 0.前言 2月份,TencentServerless 举办了系列在线课堂分享,讲解了 Serverless 概念、架构、最佳实践以及如何开发一个 component 等技术知识。 因为对Serverless非常感兴趣,每次都参加了直播学习并提交了课堂作业,一路下来感觉还不错,因此决定把自己的实验室站(https://lab.yuangezh
腾讯云serverless团队
2020/03/18
1K0
Serverless 多函数开发示例
01. 什么是 Serverless? Serverless 的定义和理解在不同的角度和场景会有不同的解读,AWS 将 Serverless(在 AWS 云上)定义为 “是一种用于描述服务、实践和策略的方式,使您能够构建更敏捷的应用程序,从而能够更快地创新和响应变化” 的一种服务。而红帽认为 Serverless 是 “可使开发人员专注构建和运行应用,而无需管理服务器” 的一种开发模型,并进一步将 Serverless 的产品分为两类:BaaS(后端即服务,让开发人员访问各种各样的第三方服务和应用))与
腾讯云serverless团队
2021/07/16
9360
通过 SCF Component 轻松构建 REST API,再也不用熬夜加班了
当一个应用需要对第三方提供服务接口时,REST API 无疑是目前最主流的选择。不过,如果自建 REST API,开发者需要购买虚拟机、配置环境等等,等一切都搞定,可能已经又是一个深夜。 而这些,都可以用 Serverless Framework 来解决。本教程将分享如何通过 Serverless SCF Component 、云函数 SCF 及 API 网关组件,快速构建一个 REST API ,并实现 GET/PUT 操作。 五步快速构建 REST API: 安装 配置 部署 测试 移除 1. 安
腾讯云serverless团队
2020/03/24
8430
腾讯云 Severless-Express 项目开发和灰度发布最佳实践
Serverless 应用基本概念 一个 Serverless 应用是由单个或者多个组件实例构成的。每个组件中都会有一个 serverless.yml 文件,该文件定义了组件的一些参数,这些参数在部署时用于生成实例的信息。例如 region 参数,定义了资源的所在区。 组织是在 Serverless 应用上层的概念,主要是为了管理。例如,一个公司会有不同部门进行 Serverless 应用开发,设置不同组织名称,方便做后期的权限管理。 示例:开发一个 express 应用,最基本的是引入 express
腾讯云serverless团队
2020/08/13
1K0
基于 Serverless Component 全栈解决方案(上)
什么是 Serverless Component Serverless Component 是 Serverless Framework 的,支持多个云资源编排和组织的场景化解决方案。 Serverless Component 的目标是磨平不同云服务平台之间差异,你可以将它看作是可以更轻松地构建应用程序的依赖模块。目前 Serverless Component 已经形成一个由社区贡献驱动的生态系统,你可以浏览和使用社区的所有组件,快速开发一款自己想要的应用。 Serverless Component 工作
腾讯云serverless团队
2020/03/20
8150
快速搭建PGSQL for Serverless
想使用一个独立的数据库服务,使用量和规模不用太大 单独购买数据库实例,太贵了 [image-20210629151750968] 发现在数据库服务列表里有一个Serverless版本,看了介绍,需要通过API或者serverless组件方式创建,目前还处于免费的公测阶段,嘿嘿😋,搞起 [image-20210629152124434] 操作步骤 操作步骤按照官网说明,很快就能完成 安装 serverless cli npm install -g serverless 配置 创建目录,并新建一个server
simplezhao
2021/06/29
1.4K0
快速搭建PGSQL for Serverless
基于 Serverless 的 VuePress 极简静态网站
之前用过 Docsify + Serverless Framework 快速创建个人博客系统,虽然 docsify 也是基于 Vue,然而它是完全的运行时驱动,因此对 SEO 不够友好。所以这次尝试使用 VuePress 来搭建一个静态网站,依然部署在 Serverless 架构上。
腾讯云serverless团队
2020/03/23
1.7K0
推荐阅读
相关推荐
Serverless Python 开发实战(附源码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验