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

背景信息

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

tcap-1

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

fcapp-2

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

fcapp-3

使用fcapp.run调用函数

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

fcapp-2

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

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

您也可以通过测试域名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服务初始化响应的账号以及数据库。
  • 容器镜像服务
    • 转存WordPress镜像到阿里云容器镜像。具体信息,请参见推送拉取镜像
    说明 支持个人版和企业版实例推送拉取镜像,本文以个人版实例为例进行说明。
说明 请确保函数计算的服务的VPC配置与RDS MySQL实例的VPC配置一致,且白名单配置正确。

操作步骤

  1. 登录函数计算控制台
  2. 在左侧导航栏,单击服务及函数
  3. 在顶部菜单栏,选择地域。
  4. 服务列表页面,单击目标服务。
  5. 函数管理页面单击创建函数,然后选择使用容器镜像创建,完成以下配置后,单击创建
    选择WordPress官方镜像,并设置容器内监听端口80。具体操作步骤,请参见创建函数fcapp-3
  6. 修改函数配置,将数据库配置以环境变量的方式注入函数容器内。
    配置环境变量的步骤,请参见环境变量fcapp-4
  7. 在浏览器地址栏输入函数计算为HTTP触发器分配的域名测试函数。
    函数创建完成后,函数计算自动为其创建一个HTTP触发器,您可以从触发器的配置信息中获取域名信息。fcapp-2fcapp-5
说明 对外提供网站类型服务只能通过已备案域名来实现。即通过配置自定义域名,将域名与函数进行绑定,使用自己的域名对外提供服务。更多信息,请参见配置自定义域名