无需修改代码,用 fcapp.run 运行你的 REST 应用
作者 | 阿里云 Serverless 技术研发 落语
背景
阿里云
使用 fcapp.run调用函数
为了解决上述的问题,并兼容存量的函数以及客户习惯,函数计算为每个新创建的 HTTP 触发器分配了一个独立的域名,例如`{random-string}.cn-shanghai.fcapp.run`。使用该域名访问函数计算,函数计算会按照域名进行路由,将流量转发至函数容器内,避免对客户代码造成侵入性。
使用 fcapp-test.run 进行本地网页测试
由于中国大陆政策的影响,函数计算主域名无法在互联网为客户提供网站类型的业务,所有的函数请求结果将被转为
# 1. 从页面获取fcapp.run的域名 FC_DOMAIN='wordpress-xxxxx-serverlordpress-ydziwvakfn.cn-shenzhen.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}"
了解 TCP 协议以及HTTP协议的同学可以很容易地理解背后的技术细节。客户端在发起HTTP请求时,首先会通过域名解析查询到域名对应的IP地址,并发起TCP连接。接下来会通过建立的TCP连接,将HTTP Request报文发送至Server端。如果客户端直接向函数计算的Server发起TCP连接,并将可以与函数关联的域名发送至函数计算,那么函数计算就可以返回客户期望的内容。
函数计算在后端进行了处理,兼容了fcapp-test.run域名的访问,但并不提供权威DNS解析。客户只需要在本地进行Host配置或者使用自建的DNS服务器,将fcapp-test.run的域名解析至函数计算Server,就能够正常测试函数。该方案既满足了中国大陆法律法规的要求,又以极低的成本满足了客户调试页面的需求,极大地优化了客户在函数计算的研发体验。
使用函数计算运行 wordpress 官方镜像
通过以上的方案,函数计算支持客户在不修改任何业务代码的前提下迁移自己的REST应用。下面使用wordpress官方镜像进行说明。
前置条件
- 开通函数计算账号。
- 将 wordpress 镜像转存到阿里云容器镜像服务中。
- 创建或使用已有的 mysql 实例,并为wordpress服务初始化相应的账号以及数据库。如果使用阿里云RDS实例,请确保函数服务的VPC配置与RDS实例的VPC配置一致,且白名单配置正确。
创建相应的函数以及服务
使用wordpress官方镜像创建函数,并设置容器内监听端口为80。
注入数据库配置
修改函数配置,将mysql的数据库配置以环境变量的方式注入函数容器内。
无需备案,测试wordpress函数功能
查看创建的触发器
上线你的函数
对外提供网站类型服务只能通过已备案域名来实现。函数计算用户可以通过
小结
作为 Serverless 技术的标志性产品之一,函数计算长久以来专注于提升产品适用的场景。fcapp.run域名以及相关产品特性的引入,标志着函数计算在 REST 场景以及 Web 场景的很大一步。客户从此可以将 REST 应用零改造地部署在函数计算上,研发测试的体验以及正式上线的方案都做到了优秀。非常欢迎同学们使用函数计算,并提出宝贵的意见。
本文为阿里云原创内容,未经允许不得转载。