函数计算搭建 Serverless Web 应用(一)- HTTP 触发器

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: Web 应用(Serverless web backend) 是函数计算很重要的一个使用场景。相比于传统的在服务器上搭建 web 应用,函数计算无需您管理服务器等基础设施,只需编写代码并上传,函数计算会为您准备好计算资源,以 弹性、可靠 的方式运行您的代码,实现毫秒级别弹性伸缩,轻松应对峰值压力。

函数计算简介

阿里云 函数计算(Function Compute) 是事件驱动的全托管计算服务,是阿里云的 Serverless 计算平台。基于函数计算构建应用,您无需管理服务器等基础设施,而是专注于应用逻辑的开发,大幅提高开发效率。

借助函数计算,您几乎可以构建任何类型的应用程序或后端服务,包括 Web 应用后端服务,大规模文件处理,数据实时流式处理等等。函数计算能实时弹性伸缩计算资源来匹配您的应用负载,使得您的系统能始终如一的、可靠的支撑业务的高速增长。此外您只需为实际使用的资源付费,函数未执行则不付费,财务成本显著减低。

函数计算遇见 Web 应用

Web 应用(Serverless web backend) 是函数计算很重要的一个使用场景。相比于传统的在服务器上搭建 web 应用,函数计算无需您管理服务器等基础设施,只需编写代码并上传,函数计算会为您准备好计算资源,以 弹性可靠 的方式运行您的代码,实现毫秒级别弹性伸缩,轻松应对峰值压力。

为了更好地支持 Serverless web backend 的使用场景,提升用户体验,函数计算推出 HTTP 触发器,即可以通过 HTTP 请求触发函数执行,您只需将业务代码写在函数中就可以搭建 Web 应用,同时,HTTP 触发器各个编程语言对流行的 Web 框架做了不同程度的兼容,方便您将原有服务迁移到函数计算上来,真正实现 一行代码,一触即发

HTTP Trigger.png

HTTP 触发器

HTTP 触发器,顾名思义,即 HTTP 请求可以触发函数执行。配置 HTTP 触发器的函数可以通过 HTTP 请求触发执行。此时函数可以看做一个 Web 应用,对 HTTP 请求进行处理,并将处理结果返回给调用端。

目前函数计算的 HTTP 触发器支持 nodejs、python、php 等编程语言,并不同程度支持对应的 Web 框架,具体内容请参看 参考文档

使用示例

下面对使用 HTTP 触发器搭建 Web 应用的示例进行介绍。

搭建基于 HTTP 触发器的 Web 应用分为三个步骤:

  • 配置 HTTP 触发器

    • 只有配置了 HTTP 触发器的函数才可以对 HTTP 请求进行处理;
    • 值得注意的是配置了 HTTP 触发器的函数接口与普通函数接口不同。
  • 编写处理函数

    • 编写处理函数的时候一定注意配置了 HTTP 触发器的函数接口与普通函数接口不同。
  • 测试函数执行

    • 通过向函数 HTTP 发送请求触发函数执行,并检验是否符合预期。

配置 HTTP 触发器

  1. 登录 函数计算管理控制台
  2. 新建服务,本示例的服务名称为 web-server,所属区域为华东2,开启【高级配置】,配置日志项目和日志仓库,角色创建方式为新建角色,系统授权模板选择 AliyunLogFullAccess,点击 【授权】,点击【确定】。
  3. 在左侧导航栏选择服务,进入到新建的服务中。
  4. 单击 【创建函数】,在创建函数页面:

    1. 单击 【选择全部的语言】,在下拉菜单中选择开发语言。
    2. 选择 【空白函数】。
    3. 按如下图示配置 HTTP 触发器,单击 【下一步】。

      • 认证方式选择 anonymous,不需要身份验证,支持匿名访问。
      • 请求方式为此函数可以处理的 HTTP Method。
        HTTP 触发器配置示例
    4. 创建函数并填写所在服务、函数名称、描述信息和运行环境信息。
    5. 单击【下一步】。
    6. 核对信息无误后,单击【创建】。

配置 HTTP 触发器更多内容请参考 配置 HTTP 触发器官方文档

编写函数代码

以 Python 为例,一个简单的示例代码如下:

# -*- coding: utf-8 -*-
import json
HELLO_WORLD = b"Hello world!\n"
def handler(environ, start_response):
    request_uri = environ['fc.request_uri']
    response_body = {
      'uri':environ['fc.request_uri'],
      'method':environ['REQUEST_METHOD']
    }
    # do something here
    status = '200 OK'
    response_headers = [('Content-type', 'text/json')]
    start_response(status, response_headers)
    # Python2
    return [json.dumps(response_body)]
    # Python3 tips: When using Python3, the str and bytes types cannot be mixed.
    # Use str.encode() to go from str to bytes
    # return [json.dumps(response_body).encode()]

更多编程语言的代码示例及详细信息请参考 编写函数代码

短短两步,基于 HTTP 触发器的 Web 应用就搭建完成了,下面我们对函数进行测试,看是否符合我们的预期。

测试函数执行

您需要向函数发送 HTTP 请求测试函数执行是否符合预期。可以通过浏览器发送 HTTP 请求、curl 发送 HTTP 请求进行测试,控制台也可以发送 HTTP 请求方便您的调试。

例如,通过 curl 发送 HTTP 请求触发函数执行,结果如下:

  ~ curl https://123456.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/web-server/testHttp/
{"uri": "/2016-08-15/proxy/web-server/testHttp/", "method": "GET"}%

通过控制台及浏览器发送 HTTP 请求请参考文章 测试函数执行

总结

使用 HTTP 触发器可以快速搭建基于函数计算的 Web 服务,按量付费,免运维,毫秒级弹性扩容,完美解决用户痛点。
Serverless 时代已来,一行代码,一触即发。

参考文档

HTTP 触发器文档
HTTP 触发器示例
设置 HTTP 触发器的 Nodejs 函数入口
设置 HTTP 触发器的 Python 函数入口
设置 HTTP 触发器的 PHP 函数入口
函数计算搭建 Serverless Web 应用(二)- 自定义域名
函数计算搭建 Serverless Web 应用(三)- 三分钟搭建 Web 应用

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
7天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
16天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
30 3
|
2月前
|
安全 网络协议 应用服务中间件
AJP Connector:深入解析及在Apache HTTP Server中的应用
【9月更文挑战第6天】在Java Web应用开发中,Tomcat作为广泛使用的Servlet容器,经常与Apache HTTP Server结合使用,以提供高效、稳定的Web服务。而AJP Connector(Apache JServ Protocol Connector)作为连接Tomcat和Apache HTTP Server的重要桥梁,扮演着至关重要的角色
75 2
|
4天前
|
缓存 安全 网络安全
HTTP/2与HTTPS在Web加速中的应用
HTTP/2与HTTPS在Web加速中的应用
|
13天前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
17天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
17 3
|
17天前
|
网络协议 前端开发 API
HTTP 和 TCP 协议的应用场景有哪些不同
【10月更文挑战第25天】HTTP(超文本传输协议)和 TCP(传输控制协议)处于网络协议栈的不同层次,各自具有独特的功能和特点,因此它们的应用场景也存在明显的差异。
|
1月前
|
JavaScript 安全 Java
谈谈UDP、HTTP、SSL、TLS协议在java中的实际应用
下面我将详细介绍UDP、HTTP、SSL、TLS协议及其工作原理,并提供Java代码示例(由于Deno是一个基于Node.js的运行时,Java代码无法直接在Deno中运行,但可以通过理解Java示例来类比Deno中的实现)。
68 1
|
2月前
|
弹性计算 关系型数据库 Serverless
告别资源瓶颈,函数计算驱动多媒体文件处理方案:https://www.aliyun.com/solution/tech-solution/fc-drive-file
本文介绍了一种基于阿里云的一键部署解决方案,利用云服务器ECS、RDS MySQL、OSS、函数计算FC及MNS等服务,实现高效的多媒体文件处理。方案通过事件驱动机制,将文件处理任务解耦,并自动弹性扩展,按需付费,简化部署流程,提高处理效率。本文还提供了详细的部署步骤与体验反馈,展示了从配置到文件处理的全过程。
|
2月前
|
安全 网络安全 数据安全/隐私保护
HTTP与HTTPS协议区别及应用场景
在互联网高速发展的今天,HTTP与HTTPS作为数据传输的基石,作用至关重要。HTTP允许客户端与服务器间传输超文本文档,但其数据传输过程未加密,存在安全隐患;HTTPS则在此基础上加入了SSL/TLS协议,实现了数据加密传输,增强了安全性,广泛应用于电子商务、网上银行、政府网站及社交媒体平台等涉及敏感信息传输的领域,有效保护了用户隐私和数据安全。随着网络安全意识提升,HTTPS正逐渐成为主流。

热门文章

最新文章

相关产品

  • 函数计算