tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表

快速开始

PDF
聚焦模式
字号
最后更新时间: 2024-04-22 17:54:01
我们可以使用 @malagu/scf-adapter 组件将应用部署到腾讯云云函数。基于约定大于配置原则,零配置,开箱即用。

云资源

适配器组件有一套默认的部署规则,该规则可以被覆盖。适配器组件在执行部署任务时,将使用平台提供的 SDK,根据部署规则,创建需要的云资源。如果发现云资源已经存在,则差异更新云资源。适配器组件总是以尽可能安全的方式,创建或更新云资源。例如,当配置了自定义域名,适配器组件则尝试创建或更新该自定义域名资源。
适配器组件将应用部署到一个函数中,也就是说一个应用对应着一个函数,如果应用较大,应该将大应用拆解成一个个小的微应用或者微服务。如同微服务架构的粒度拆分原则,合理的粒度拆分,能够更好地进行应用管理。框架会保证一个应用在一个函数中运行的性能。

环境隔离

在 Malagu 框架中,提供了一个配置属性 stage 表示环境。而在 @malagu/scf-adapter 组件约定的部署规则中,使用 mode 属性映射 stage 属性。默认提供了三套环境:测试、预发和生产。表达式规则如下:
stage: "${'test' in mode ? 'test' : 'pre' in mode ? 'pre' : 'prod' in mode ? 'prod' : cliContext.prod ? 'prod' : 'test'}" # test, pre, prod
stage 取值规则如下:
test:测试环境,当 mode 属性包含 test 模式,或者 mode 都不包含 test、pre、prod,且命令行参数 -p,--prod 未被指定。
pre:预发环境,当 mode 属性包含 pre 模式。
prod:生产环境,当 mode 属性包含 prod 模式,或者命令行参数 -p,--prod 被指定。
通过指定特殊的 mode 表示不同的部署环境:
# 部署到测试环境
malagu deploy -m test # 或者 malagu deploy

# 部署到预发环境,也可以直接跳过预发环境的部署,直接部署到生产环境
malagu deploy -m pre

# 部署到生成环境
malagu deploy -m prod

隔离级别

环境的隔离级别支持控制。可以使用账号隔离环境,不同环境对于不同配置文件,不同配置文件分别配置不同的云账号。同理,也可以使用 Region、服务别名来隔离环境。框架默认提供的是服务别名隔离环境。隔离方式可以互相叠加。
stage 属性值与服务别名关联(以下是默认规则,无需配置):
malagu:
faas-adapter:
alias:
name: ${stage}
API 网关的 environment 关联(以下是默认规则,无需配置):
malagu:
faas-adapter:
apiGateway:
release:
environmentName: "${stage == 'pre' ? 'prepub' : stage == 'prod' ? 'release' : stage}"

部署模式

适配器组件通过 mode 属性定义部署模式,支持的部署模式如下:
http:基于 API 网关 + Web 函数的部署模式。部署过程中,创建或更新 API 网关、命名空间、函数等云资源。
timer:基于定时触发器 + 事件函数的部署模式。部署过程中,创建或更新定时触发器、命名空间、函数等云资源。
api-gateway:基于 API 网关 + 事件函数的部署模式。部署过程中,创建或更新 API 网关、命名空间、函数等云资源。
mode:
- http

自定义部署规则

可以通过同名覆盖自定义部署规则。

默认规则

默认规则定义在 @malagu/scf-adapter 组件的 malagu-remote.yml 配置文件中。

自定义部署类型

mode:
- htpp # 默认值是 http,目前支持 http、timer、api-gateway

自定义命名空间

malagu:
faas-adapter:
namespace:
name: xxxx # 默认值是 default
说明:
命名空间的其他属性配置方式类似。

自定义函数名

malagu:
faas-adapter:
function:
name: xxxx # 默认值是 ${pkg.name}
说明:
函数的其他属性配置方式类似。

属性配置

malagu:
faas-adapter:
type:
namespace:
description:
function:
name: ''
namespace:
handler:
publish:
l5Enable:
type:
codeSource:
description:
memorySize:
timeout:
runtime:
role:
clsLogsetId:
ClsTopicId:
env:
vpcConfig:
vpcId:
subnetId:
layers:
name:
version:
deadLetterConfig:
type:
name:
filterType:
publicNetConfig:
PublicNetStatus:
eipConfig:
eipStatus:
alias:
name:
functionName:
namespace:
description:
routingConfig:
additionalVersionWeights:
version:
weight:
addtionVersionMatchs:
version:
key:
method:
expression:
apiGateway:
usagePlan:
name:
environment:
desc:
maxRequestNum:
maxRequestNumPreSec:
strategy:
name:
environmentName:
strategy:
api:
name:
serviceTimeout:
protocol:
desc:
authType:
enableCORS:
businessType:
serviceScfFunctionName:
serviceWebsocketTransportFunctionName:
serviceScfFunctionNamespace:
serviceScfFunctionQualifier:
serviceWebsocketTransportFunctionNamespace:
serviceWebsocketTransportFunctionQualifier:
isDebugAfterCharge:
serviceScfIsIntegratedResponse:
isDeleteResponseErrorCodes:
responseSuccessExample:
responseFailExample:
authRelationApiId:
userType:
oauthConfig:
publicKey:
tokenLocation:
loginRedirectUrl:
responseErrorCodes:
code:
msg:
desc:
convertedCode:
needConvert:
requestConfig:
ApiRequestConfig:
path:
method:
requestParameters:
name:
desc:
position:
type:
defaultValue:
required:
RequestParameter:
service:
exclusiveSetName:
name:
protocol:
description:
netTypes:
ipVersion:
setServerName:
appIdType:
release:
environmentName:
desc:
customDomain:
name:
isDefaultMapping:
certificateId:
protocol:
netType:
pathMappingSet:
path:
Environment:


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈