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

本文涉及的产品
简介: 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 应用

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
人工智能 Serverless 测试技术
nacos常见问题之Serverless 应用引擎2.0不支持 MSE nacos如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
23 0
|
1月前
|
监控 Serverless 数据库
Serverless 应用引擎常见问题之biphon-education-配置了SLS后一直重启如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 5
|
1月前
|
运维 Serverless 调度
Serverless 应用引擎常见问题之事件中心看不着如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
33 4
|
1月前
|
JSON Serverless API
Serverless 应用引擎常见问题之query参数无法取到上一步传输过来的jjson参数如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
157 3
|
1月前
|
监控 Serverless 对象存储
Serverless 应用引擎常见问题之用ECI部署Traefik时设置如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
237 2
|
1月前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
407 3
|
1月前
|
机器学习/深度学习 人工智能 Cloud Native
Serverless 应用引擎常见问题之改配置变慢如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
397 3
|
1月前
|
缓存 Java Serverless
Serverless 应用引擎常见问题之安装完serverless dev报错如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
30 4
|
1月前
|
弹性计算 监控 Serverless
Serverless 应用引擎常见问题之相同的配置(4U8G)需要多个实例来扛如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
50 5
|
1月前
|
监控 关系型数据库 Serverless
Serverless 应用引擎常见问题之工作流这执行输出通过jsonpath过滤如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
391 3

相关产品

  • 函数计算