函数计算搭建 Serverless Web 应用(四)- 三分钟搭建 Web 应用

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 本文对使用自定义域名 + HTTP 触发器搭建 Web 应用的步骤进行详细介绍,手把手带您三分钟搭建稳定可靠的 Web 应用。

简介

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

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

函数计算搭建 Serverless Web 应用(二)- 自定义域名 中阐述了绑定自定义域名,通过自定义域名访问函数,配合 HTTP 触发器使用,为用户使用函数计算搭建 Web 应用提供便利。

本文对使用自定义域名 + HTTP 触发器搭建 Web 应用的步骤进行详细介绍,手把手带您三分钟搭建稳定可靠的 Web 应用。

搭建步骤

场景:本示例基于 HTTP 触发器搭建 Web 应用,有两个函数 f1 和 f2,作为示例,函数的功能只是打印出 request 请求,当然,您可以在函数中编写任意业务逻辑。

预期效果:通过自定义域名进行访问可以触发函数执行,得到预期结果。

前提:您有独立的域名,且已经接入阿里云备案(如果函数在非中国大陆节点的 region,无需备案)。

步骤一:创建配置 HTTP 触发器的函数

  1. 登录 函数计算管理控制台
  2. 新建服务,本示例的服务名称为 web-server,开启【高级配置】,配置日志项目和日志仓库,角色创建方式为新建角色,系统授权模板选择 AliyunLogFullAccess,点击 【授权】,点击【确定】。

  3. 在左侧导航栏选择服务,进入到新建的服务中。

  4. 单击 【创建函数】,在创建函数页面:

    1. 单击 【选择全部的语言】,在下拉菜单中选择 node8 或 python2.7(本示例代码会对两种语言进行介绍)。
    2. 选择 【空白函数】。
    3. 按如下图示配置 HTTP 触发器,单击 【下一步】。
      • 认证方式选择 anonymous,不需要身份验证,支持匿名访问。
      • 请求方式为此函数可以处理的 HTTP 请求方式。
        HTTP 触发器配置示例
    4. 创建函数并填写所在服务、函数名称、描述信息和运行环境信息。
    5. 单击【下一步】。
    6. 核对信息无误后,单击【创建】。

然后编写函数代码

# -*- 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()]

此处以 Python 为例,其他语言的代码请参考文章 创建函数和 HTTP 触发器

步骤二:域名解析

为了保证您的自定义域名的请求可以到达函数计算,需要您在域名解析服务器处设置域名的 CNAME 为您函数计算的 endpoint

endpoint 的格式为 <accountID>.<region>.fc.aliyuncs.com,您可以在函数计算控制台右上角获取当前 region 的 endpoint。

使用阿里云云解析 DNS 对域名进行解析请参考 域名解析

步骤三:绑定自定义域名

您需要在函数计算控制台绑定自定义域名:

  1. 登录 函数计算控制台
    控制台1
  2. 在控制台首页右侧点击进入 自定义域名管理,即可绑定自定义域名并设置路由。
    控制台2
    控制台3

步骤四:测试

设置成功后,访问自定义域名进行测试,示例演示通过命令行 curl url 进行测试,您也可以通过浏览器测试。

  ~ curl api.app.com
{
    "path": "/",
    "queries": {},
    "headers": {
        "accept": "*/*",
        "user-agent": "curl/7.58.0"
    },
    "method": "GET",
    "requestURI": "/",
    "clientIP": "42.120.75.144",
    "serviceName": "serviceA",
    "functionName": "functionA",
    "body": ""
}%
 ~ curl api.app.com/b
{
    "path": "/b",
    "queries": {},
    "headers": {
        "accept": "*/*",
        "user-agent": "curl/7.58.0"
    },
    "method": "GET",
    "requestURI": "/b",
    "clientIP": "42.120.75.144",
    "serviceName": "serviceA",
    "functionName": "functionB",
    "body": ""
}%
 ~ curl api.app.com/a
{
    "path": "/a",
    "queries": {},
    "headers": {
        "accept": "*/*",
        "user-agent": "curl/7.58.0"
    },
    "method": "GET",
    "requestURI": "/a",
    "clientIP": "42.120.75.144",
    "serviceName": "serviceB",
    "functionName": "functionC",
    "body": ""
}%
  ~ curl api.app.com/a/b
{
    "path": "/a/b",
    "queries": {},
    "headers": {
        "accept": "*/*",
        "user-agent": "curl/7.58.0"
    },
    "method": "GET",
    "requestURI": "/a/b",
    "clientIP": "42.120.75.144",
    "serviceName": "serviceB",
    "functionName": "functionD",
    "body": ""
}%

总结

绑定自定义域名可以允许用户通过自定义域名访问 FC 的函数,配合 HTTP 触发器使用,可以快速搭建性能稳定弹性可扩容的 Web 应用,可以说是十分方便了。

您在使用过程中遇到任何问题都可以随时 联系我们,函数计算团队所有工程师都会在群里实时进行答疑,没错,所有工程师,任何问题,随时联系。

期待您的使用~~

参考文章

HTTP 触发器文档
HTTP 触发器示例
绑定自定义域名
绑定自定义域名示例
联系我们

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
6月前
|
消息中间件 运维 Serverless
函数计算产品使用问题之如何部署Stable Diffusion Serverless API
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
57 5
|
4月前
|
机器学习/深度学习 监控 Serverless
无服务器架构(Serverless)
无服务器架构(Serverless)
131 4
|
6月前
|
数据库连接 数据库 开发者
【独家揭秘】零基础小白如何逆袭?——这份Web2py入门秘籍让你轻松打造个人首个Web应用,绝不错过!
【8月更文挑战第31天】本文通过实际操作指导读者从零开始使用Web2py框架创建首个Web应用。内容涵盖环境搭建、数据库模型定义、控制器与视图设计等核心环节。通过一步步详细说明,帮助开发者掌握关键概念与最佳实践,实现应用从创建到部署的全过程。适合初学者快速上手并应用于实际项目中。
74 2
|
6月前
|
开发者 Python
Web2py的神秘力量:如何用Python打造高效Web应用,让你一鸣惊人?
【8月更文挑战第31天】本文探讨了从热门的Django和Flask框架迁移到Web2py的过程,详细阐述了Web2py的三大优势:简单易学、快速开发与功能丰富。文章按步骤指导读者完成迁移,包括理解基本概念、编写迁移脚本、重构代码及测试调试,并提供了示例代码以展示Web2py的应用。此外,还分享了最佳实践建议,帮助开发者顺利过渡到Web2py,提升Web开发效率。
50 1
|
6月前
|
开发框架 中间件 API
揭秘!Tornado技术如何颠覆传统,解锁Web开发速度极限?你的高效Web应用就差这一步!
【8月更文挑战第31天】Tornado 是 Python 生态中的一款高性能 Web 开发框架,以其非阻塞 I/O 模型和高并发处理能力著称。它采用协程和异步 I/O 实现了高效的并行处理,使服务器能同时处理大量连接。
64 1
|
6月前
|
运维 前端开发 Serverless
Serverless痛点解决问题之将 WordPress 工程部署到函数计算中如何解决
Serverless痛点解决问题之将 WordPress 工程部署到函数计算中如何解决
61 1
|
6月前
|
Java Maven Apache
Struts 2 配置不再难!跟着这篇详解从零搭建开发环境
【8月更文挑战第31天】要搭建Struts 2开发环境,需先安装JDK,然后下载并解压Struts 2二进制包,将其核心库`struts2-core`添加到项目类路径中。使用Maven或Gradle时,可在配置文件中添加依赖。接着,在`web.xml`中配置Struts 2过滤器及其映射。`struts.xml`通常位于`src/main/resources`目录下,用于定义动作映射和拦截器等核心配置。最后,通过配置类路径下的`log4j.properties`文件,可以设置Struts 2的日志记录级别及输出方式。完成以上步骤后,即可开始基于Struts 2框架进行Web应用开发。
263 0
|
6月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
55 0
|
6月前
|
Java Spring Maven
Struts 2遇见Spring:这个组合如何颠覆你的Web开发?
【8月更文挑战第31天】在现代Web开发中,Struts 2与Spring的结合使用能显著增强应用的模块化和可维护性。本文将介绍如何整合这两个框架,并提供代码示例。首先,在`pom.xml`中添加Struts 2和Spring的依赖,然后在`struts.xml`中配置Struts 2以识别Spring插件。接着,在Spring配置文件中定义bean,并在Struts 2的Action类中使用`@Autowired`注解进行自动注入。
96 0

相关产品

  • 函数计算