函数计算支持为每个新创建的HTTP触发器分配子域名fcapp.run
,通过该域名可以访问您的RESTful应用。本文介绍如何在不修改代码的情况下,使用fcapp.run
访问您的RESTful应用。
背景信息
函数计算支持HTTP触发器,即允许使用HTTP协议来调用函数。函数计算通过一个共享的API Server组件为您提供响应HTTP触发器调用的服务。调用函数时,需要依赖URL中的Path将客户流量路由到客户的函数容器内部。容器内收到的HTTP请求Path会带有函数计算的路由标识。如果您在函数计算部署了RESTful风格的应用,则会出现404报错。
最初,函数计算提供了原生的RESTful架构,将每个函数视为一个独立的资源,通常一个函数只负责一小块功能,也就是一个API。如果一个函数只对应一个API,那么在函数代码中也不必去实现一套路由逻辑去响应不同URL Path路径的请求。
函数计算现已引入Custom Runtime和Custom Container函数,您可以直接在函数计算中运行自己存量的应用,而不必按照函数计算推荐的架构去拆分自己的应用。社区内比较成熟的项目的开发习惯是在一个程序中开发大量的REST API,因此会存在进程内的路由逻辑,将不同路径的请求转发到不同的方法进行处理。
使用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地址白名单。
容器镜像服务
已拉取WordPress镜像并推送到阿里云容器镜像仓库。具体操作,请参见使用个人版实例推送拉取镜像。
说明支持个人版和企业版实例推送拉取镜像,本文以个人版实例为例进行说明。
操作步骤
- 登录函数计算控制台,在左侧导航栏,单击服务及函数。
- 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
在函数管理页面单击创建函数,然后选择使用容器镜像创建,完成以下配置后,单击创建。
选择WordPress官方镜像,并设置容器内监听端口为80。具体操作步骤,请参见创建Custom Container函数。
修改函数配置,将数据库配置以环境变量的方式注入函数容器内。
配置环境变量的步骤,请参见环境变量。
需设置的环境变量与数据库配置的对应关系如下所示:
WORDPRESS_DB_HOST:您为RDS MySQL实例创建的数据库连接内网地址。
WORDPRESS_DB_NAME:您创建的数据库账号。
WORDPRESS_DB_PASSWORD:您创建的数据库账号密码。
WORDPRESS_DB_USER:您创建的数据库名称。
在浏览器地址栏输入函数计算为HTTP触发器分配的域名测试函数。
函数创建完成后,函数计算自动为其创建一个HTTP触发器,您可以从触发器的配置信息中获取域名信息。WordPress应用对应的API会以该域名为根路径进行调用。
使用以下测试地址测试前需先单击该地址,在弹出的面板单击下载本地系统对应的配置脚本,并执行。执行成功后,才能通过浏览器访问该地址。
相关文档
使用子域名作为HTTP触发器URL对函数进行测试,能有效避免404报错。更多信息,请参见当我使用浏览器或cURL方式访问函数时出现404怎么办?。
对外提供网站类型服务只能通过已备案域名来实现。即通过配置自定义域名,将域名与函数进行绑定,使用自己的域名对外提供服务。更多信息,请参见配置自定义域名。