详情页标题前

腾讯云Serverless应用中心开发与复用应用模板-同尘科技

详情页1

操作场景

Serverless Cloud Framework 提供了多个基础资源组件,用户可以通过不同组件的结合使用,快速完成云端资源的创建与部署,本教程将指导您如何使用已有组件,构建您自己的多组件 Serverless 应用模板。

前提条件

已经安装 Serverless Cloud Framework 1.0.2以上版本。详情见 安装 Serverless Cloud Framework。您可以执行以下命令查看 Serverless Cloud Framework 的版本信息:

$ scf –v

组件全量配置文档

基础组件列表框架组件列表

操作步骤

本文以部署一个使用 Layer + Egg 框架项目 为例,指导您如何在项目中引入多个组件,并快速完成部署,步骤如下:

步骤 1:创建项目

新建项目 app-demo 并进入该目录下:

$ mkdir app-demo && cd app-demo

步骤 2:构建 Egg 项目

1.app-demo 目录下,新建 src 文件夹,并在文件夹中新建 Egg 项目:

$ mkdir src && cd src$ npm init egg --type=simple$ npm i y

2.src 目录下,编写配置文件 serverless.yml

$ touch serverless.yml

egg 组件的 yml 文件示例如下(全量配置文件可参考 Eggjs 组件全量配置):

# serverless.ymlapp: app-demo #应用名称,同一个应用下每个组件的 app、stage、org 参数必须保持一一致stage: devcomponent: egg name:  app-demo-egg # (必填) 创建的实例名称
inputs: src: src: ./ # 需要上传的项目路径 exclude: # 除去 node_modules 以及 .env 文件 - .env - node_modules region: ap-guangzhou functionName: eggDemo # 函数配置 runtime: Nodejs10.15 apigatewayConf: protocols: # API 网关触发器配置,默认新创建网关 - http - https environment: release

注意同一个应用下,每一个组件创建的资源的 app、stage、org 参数必须保持一致,name 参数必须唯一。Egg 组件实际上创建的是一个 API 网关触发器 + 云函数资源,此处可根据您的实际开发场景,选择不同组件,配置方法相似,详情请参考 组件全量配置。

步骤 3:创建层

回到 app-demo 根目录下,新建 layer 文件夹,并在里面新建 layer 配置文件 serverless.yml

$ cd ..$ mkdir layer && cd layer$ touch serverless.yml

serverless.yml 可以按照如下模板配置(更多配置请参考 Layer 组件全量配置):

# serverless.ymlapp: app-demo #应用名称,同一个应用下每个组件的 app、stage、org 参数必须保持一致stage: devcomponent: layer name:  app-demo-layer # (必填) 创建的实例名称
inputs: region: ap-guangzhou src: src: ../src/node_modules # 您想要上传到层的项目路径,此处以 node_modules 为例 targetDir: /node_modules # 上传后的文件打包目录 runtimes: - Nodejs10.15

注意同一个应用下,每一个组件创建的资源的 app、stage、org 参数必须保持一致,name 参数必须唯一。layer 组件也支持从 COS 桶导入项目,详情参考 Layer 组件全量配置,填写 bucket 参数时注意不要带 -${appid},组件会自动为您添加。

步骤 4:组织资源关系

同一个应用内,用户可以根据各个资源的依赖关系组织资源的创建顺序,以该项目为例,用户需要先创建好 layer,再在 Egg 项目里使用该 layer,因此需要保证资源的创建顺序为 layer > eggjs 应用,具体操作如下:修改 Egg 项目的 yml 配置文件,在层配置部分按以下语法进行配置,引用 Layer 组件的部署输出作为 Egg 项目的部署输入,即可保证 Layer 组件一定在 Egg 项目之前完成创建:

$ cd ../src

serverless.yml 里,inputs 部分增加 layer 配置:

inputs:  src:       src: ./        exclude:        - .env      - node_modules  region: ap-guangzhou  functionName: eggDemo    runtime: Nodejs10.15  layers:   # 增加 layer 配置    - name: ${output:${stage}:${app}:app-demo-layer.name} #  layer 名称      version: ${output:${stage}:${app}:app-demo-layer.version} #  版本  apigatewayConf:    protocols:              - http      - https    environment: release

变量引用格式请参考 变量引用说明。此时已完成 Serverless 应用的构建,项目目录结构如下:

./app-demo├── layer│   └── serverless.yml # layer 配置文件├── src│   ├── serverless.yml # egg 组件配置文件│   ├── node_modules # 项目依赖文件│   ├── ...│   └── app # 项目路由文件└── .env # 环境变量文件

步骤 5:部署应用

在项目根目录下,执行 scf deploy,即可完成 Layer 创建,并将 Layer 组件的输出作为 Egg 组件的输入,完成 Egg 框架上云。

$ scf deploy
serverless-cloud-framework
app-demo-layer: region: ap-guangzhou name: layer_component_xxx bucket: scf-layer-ap-guangzhou-code object: layer_component_xxx.zip description: Layer created by serverless component runtimes: - Nodejs10.15 version: 3 vendorMessage: null
app-demo-egg: region: ap-guangzhou scf: functionName: eggDemo runtime: Nodejs10.15 namespace: default lastVersion: $LATEST traffic: 1 apigw: serviceId: service-xxxx subDomain: service-xxx.gz.apigw.tencentcs.com environment: release url: https://service-xxx.gz.apigw.tencentcs.com/release/ vendorMessage: null
76s › app-demo › "deploy" ran for 2 apps successfully.

单击 apigw 输出的 URL,即可访问您已经创建好的应用,执行 scf info,可以查看部署的实例状态,执行 scf remove,可以快速移除应用。

步骤 6:发布应用模板

完成模板构建后,Serverless Cloud Framework 支持您将自己的 Serverless 项目模板发布在 Serverless Registry 应用中心中,提供给团队和他人使用。

1. 创建配置文件

根目录下,新建 serverless.template.yml 文件,此时项目目录结构如下:

./app-demo├── layer│   └── serverless.yml # layer 配置文件├── src│   ├── serverless.yml # egg 组件配置文件│   ├── node_modules # 项目依赖文件│   ├── ...│   └── app # 项目路由文件├── .env # 环境变量文件└── serverless.template.yml # 模板项目描述文件

2. 配置项目模板文件并发布

# serverless.template.ymlname: app-demo # 项目模板的名字,模板唯一标识,不可重复displayName: 基于 layer 创建的 eggjs 项目模板 #项目模板展示在控制台的名称(中文)author: Tencent Cloud, Inc. # 作者的名字org: Tencent Cloud, Inc. # 组织名称,可选type: template #项目类型,可填 template 或 component,此处为模板description: Deploy an egg application with layer. # 描述您的项目模板description-i18n:  zh-cn: 基于 layer 创建的 eggjs 项目模板 # 中文描述keywords: tencent, serverless, eggjs, layer # 关键字repo:  # 源代码,通常为您的 github reporeadme:  # 详细的说明文件,通常为您的 github repo README 文件license: MIT # 版权声明src: # 描述项目中的哪些文件需要作为模板发布  src: ./ # 指定具体的相对目录,此目录下的文件将作为模板发布  exclude: #描述在指定的目录内哪些文件应该被排除    # 通常希望排除    # 1. 包含 secrets 的文件    # 2. .git git 源代码管理的相关文件    # 3. node_modules 等第三方依赖文件    - .env    - '**/node_modules'    - '**/package-lock.json'

serverless.template.yml 文件配置完成后,便可以使用发布命令 scf publish 将此项目作为模板发布到应用中心。

$ scf publish
serverless ⚡registryPublishing "app-demo@0.0.0"...
Serverless › Successfully published app-demo

3. 复用模板

完成发布后,其他人可通过 scf init 指令,快速下载您的模板并进行项目复用。

$ scf init app-demo --name example$ cd example$ npm install

变量引用说明

serverless.yml 支持多种方式引用变量:Serverless 基本参数引用
inputs 字段里,支持直接引用 Serverless 基本参数配置信息,引用语法如下:${org}${app}环境变量引用serverless.yml 中,可以直接通过 ${env} 的方式,直接引用环境变量配置(包含 .env 文件中的环境变量配置,以及手动配置在环境中的变量参数)。例如,通过 ${env:REGION},引用环境变量 REGION。引用其它组件输出结果
如果希望在当前组件配置文件中引用其他组件实例的输出信息,可以通过如下语法进行配置:
${output:[app]:[stage]:[instance name].[output]}示例 yml:

app: democomponent: scfname: rest-apistage: dev
inputs: name: ${stage}-${app}-${name} # 命名最终为 "acme-prod-ecommerce-rest-api" region: ${env:REGION} # 环境变量中指定的 REGION= 信息 vpcName: ${output:prod:my-app:vpc.name} # 获取其他组件中的输出信息 vpcName: ${output:${stage}:${app}:vpc.name} # 上述方式也可以组合使用



官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/149001.html

(0)
上一篇 2023年12月9日 下午1:11
下一篇 2023年12月9日 下午1:12
详情页2

相关推荐

  • 腾讯云TDSQL-C MySQL版数据库权限及库表索引规范

    本文为您介绍在创建 TDSQL-C MySQL 集群后的相关使用规范建议。 数据库权限规范 所有 DDL(例如:创建表,更改表结构等)只有通过评审后,由 DBA 通过数据库管理工具(DMC)执行,在业务低峰期操作上线。权限需要进行细粒度控制,读写权限分开,运维和开发权限要分开。DDL 操作保留操作日志。 库表规范 InnoDB 是 MySQL 中支持事务的一…

    腾讯云 2023年12月9日
  • flink cdc跑多个MySQL到doris任务,报错数据库连接超时,还有其他什么地方需要配置?-云小二-阿里云

    flink cdc跑多个MySQL到doris任务,报错数据库连接超时,查看连接的数据库连接数及超时时间正常,请教大佬们还有其他什么地方需要配置? 以下为热心网友提供的参考意见 您好,针对Flink CDC在将多个MySQL同步到Doris时出现数据库连接超时的问题,您可以考虑以下方面的配置和优化: Flink参数调优:您可以增加Flink的taskmana…

    2023年12月10日
  • 腾讯云对象存储防盗链

    简介 本文档提供关于存储桶 Referer 白名单或者黑名单的 API 概览以及 SDK 示例代码。 API 操作名 操作描述 PUT Bucket referer 设置存储桶 Referer 设置存储桶 Referer 白名单或者黑名单 GET Bucket referer 查询存储桶 Referer 查询存储桶 Referer 白名单或者黑名单 设置存储…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS日志字段详情-云淘科技

    本文介绍负载均衡7层访问日志的字段详情。 字段 说明 __topic__ 日志主题,固定为slb_layer7_access_log。 body_bytes_sent 发送给客户端的Body字节数。 client_ip 请求客户端IP地址。 host 优先从请求参数中获取host。如果获取不到则从host header取值,如果还是获取不到则以处理请求的后端…

    阿里云日志服务SLS 2023年12月10日
  • 腾讯云对象存储使用自建集群部署

    本文主要介绍如何规范化地在单机、集群以及腾讯云 EMR 集群(暂未集成支持 GooseFS 的版本)中部署、配置以及运行 GooseFS。 部署环境要求 硬件环境 目前 GooseFS 支持主流 x86/x64 架构的 Linux/MacOS 运行环境(注意:MacOS M1处理器未验证支持)。详细的运行节点配置如下: Master 节点 CPU:工作主频1…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。