使用fcapp.run运行您的RESTful应用

函数计算支持为每个新创建的HTTP触发器分配子域名fcapp.run,通过该域名可以访问您的RESTful应用。本文介绍如何在不修改代码的情况下,使用fcapp.run访问您的RESTful应用。

背景信息

函数计算支持HTTP触发器,即允许使用HTTP协议来调用函数。函数计算通过一个共享的API Server组件为您提供响应HTTP触发器调用的服务。调用函数时,需要依赖URL中的Path将客户流量路由到客户的函数容器内部。容器内收到的HTTP请求Path会带有函数计算的路由标识。如果您在函数计算部署了RESTful风格的应用,则会出现404报错。

image

最初,函数计算提供了原生的RESTful架构,将每个函数视为一个独立的资源,通常一个函数只负责一小块功能,也就是一个API。如果一个函数只对应一个API,那么在函数代码中也不必去实现一套路由逻辑去响应不同URL Path路径的请求。

image

函数计算现已引入Custom Runtime和Custom Container函数,您可以直接在函数计算中运行自己存量的应用,而不必按照函数计算推荐的架构去拆分自己的应用。社区内比较成熟的项目的开发习惯是在一个程序中开发大量的REST API,因此会存在进程内的路由逻辑,将不同路径的请求转发到不同的方法进行处理。

image

使用fcapp.run调用函数

函数计算为每个新创建的HTTP触发器分配了一个独立的域名,格式为{random_string}.{region_id}.fcapp.run。使用该域名访问函数计算时,函数计算会按照域名进行路由,将流量转发至函数容器内,避免了依赖Path进行路由而对客户代码造成的侵入性。

说明

假设HTTP触发器对应的函数中封装了多个API,分别为/function1/function2/function3,那么使用fcapp.run调用的URL如下:

  • {random_string}.{region_id}.fcapp.run/function1

  • {random_string}.{region_id}.fcapp.run/function2

  • {random_string}.{region_id}.fcapp.run/function3

使用fcapp-test.run进行本地网页测试

函数计算的主域名aliyuncs.com无法为客户提供网站类型的业务,所有的函数请求结果将在浏览器中以附件的方式下载,对于网站属性的函数,返回的HTML文本以及JavaScript代码无法正常显示。此时,您可以通过为函数绑定已备案的自定义域名来解决该问题。更多信息,请参见HTTP触发器概述

您也可以通过测试域名fcapp-test.run以及添加本地的host解析的方式来解决以上问题,请求结果将不会以附件的方式下载,可以正常进行网页调试。示例脚本如下:

# 1. 从页面获取fcapp.run的域名
FC_DOMAIN='serviceName-functionName-vtnazzbxrr.cn-hangzhou.fcapp.run'
FC_TEST_DOMAIN=`echo ${FC_DOMAIN} | sed 's/fcapp.run/fcapp-test.run/g'`
echo "FC域名:${FC_DOMAIN}"
echo "FC测试域名:${FC_TEST_DOMAIN}"

# 2. 查询域名解析的IP
FC_IP=`ping ${FC_DOMAIN} -c 1 | HEAD -1 | awk '{print $3}' | sed 's/[():]//g'`
echo "FC IP: ${FC_IP}"

# 3. 修改host文件,将测试域名的本地解析指向fcapp.run
#    如果没有权限需要手动加
sudo -- sh -c  "printf '\n${FC_IP} ${FC_TEST_DOMAIN}\n' >> /etc/hosts"
cat /etc/hosts

# 4. 使用测试域名在浏览器访问函数
curl -v "${FC_TEST_DOMAIN}"
            

使用函数计算运行WordPress官方镜像

函数计算支持您在不修改任何业务代码的前提下迁移自己的RESTful应用。下面以迁移WordPress应用为例进行说明。

前提条件

  • 函数计算

  • 云数据库RDS

    说明
    • 您也可以使用已有RDS MySQL实例,并为WordPress服务初始化相应的账号以及数据库。

    • 创建RDS MySQL实例时,请确保为其设置的VPC与函数计算的服务的VPC配置保持一致,且白名单配置中已添加函数计算服务的网络配置中vSwitch的IP地址段。关于函数计算的网络配置,请参见配置网络。关于RDS MySQL数据库白名单的配置,请参见配置数据库访问IP地址白名单

  • 容器镜像服务

    说明

    支持个人版和企业版实例推送拉取镜像,本文以个人版实例为例进行说明。

操作步骤

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数
  2. 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
  3. 函数管理页面单击创建函数,然后选择使用容器镜像创建,完成以下配置后,单击创建

    选择WordPress官方镜像,并设置容器内监听端口80。具体操作步骤,请参见创建Custom Container函数

    image.png

  4. 修改函数配置,将数据库配置以环境变量的方式注入函数容器内。

    配置环境变量的步骤,请参见环境变量

    image.png

    需设置的环境变量与数据库配置的对应关系如下所示:

    • WORDPRESS_DB_HOST:您为RDS MySQL实例创建的数据库连接内网地址。

    • WORDPRESS_DB_NAME:您创建的数据库账号。

    • WORDPRESS_DB_PASSWORD:您创建的数据库账号密码。

    • WORDPRESS_DB_USER:您创建的数据库名称。

  5. 在浏览器地址栏输入函数计算为HTTP触发器分配的域名测试函数。

    函数创建完成后,函数计算自动为其创建一个HTTP触发器,您可以从触发器的配置信息中获取域名信息。WordPress应用对应的API会以该域名为根路径进行调用。

    使用以下测试地址测试前需先单击该地址,在弹出的面板单击下载本地系统对应的配置脚本,并执行。执行成功后,才能通过浏览器访问该地址。

    image.png

    image.png

相关文档