函数计算进阶-IP查询工具开发
本实验介绍如何使用函数计算服务开发一个IP查询工具。
场景简介
本实验将基于一台配置了Alibaba Cloud Linux 3操作系统的ECS实例(云服务器)。通过本教程的操作,您可以基于已有的环境开发一个基于函数计算的IP查询工具。
费用说明
本实验时长1个小时,预计产生费用为0.1元。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。
背景知识
创建实验资源
首次开通函数计算的用户可以领取免费试用额度进行体验,领取方式请查看第四页内容。
在实验页面,勾选我已阅读并同意《阿里云云起实践平台服务协议》和我已授权阿里云云起实践平台创建、读取及释放实操相关资源后,单击开始实操。
创建资源需要5分钟左右的时间,请您耐心等待。
在云产品资源列表,您可以查看本场景涉及的云产品资源信息。

首次开通函数计算用户,可先领取免费额度
前往函数计算控制台。

在推荐您创建 AliyunFcDefaultRole默认角色对话框中,单击创建。

在角色快捷创建页面,单击同意授权。

在实验操作面板顶部,单击
图标打开新的标签页,然后在地址栏中输入如下地址并回车,访问免费试用页面。https://free.aliyun.com/?spm=a2c6h.29426672.J_5391097900.2.5965729bb9DtAC&productCode=fc
在免费试用页面,找到函数计算FC卡片,单击立即试用。

在函数计算FC面板,勾选服务协议,单击立即试用。
说明函数计算为首次开通服务的用户提供相应的试用额度,阿里云账户与RAM用户共享此试用额度。试用额度以月为周期,连续提供12个周期,每个周期超出试用额度的部分均会计入按量付费。

创建阿里云AccessKey
在本实验完成后,若不再使用,建议参考实验手册步骤及时删除阿里云AccessKey。
前往AccessKey管理。
在不建议使用云账号AccessKey对话框,阅读创建主账号AccessKey的风险,如果必须要创建主账号AccessKey,则勾选我确认知晓云账号AccessKey安全风险,然后单击继续使用云账号AccessKey。

在AccessKey页面,单击创建AccessKey。

根据界面提示完成安全验证。
在创建云账号AccessKey对话框,再次阅读创建主账号AccessKey的风险及主账号AccessKey使用限制,如果确定要创建主账号AccessKey,则勾选我确认知晓云账号AccessKey安全风险,然后单击继续使用云账号AccessKey。

在创建AccessKey对话框,保存AccessKey ID和AccessKey Secret,然后勾选我已保存好AccessKey Secret,最后单击确定。
配置AccessKey网络访问限制策略,可以限制使用永久AccessKey的API请求来源IP地址,将AccessKey调用来源控制在可信的网络环境内,提升AccessKey的安全性。建议您明确AccessKey使用的网络环境,然后单击配置网络访问策略,配置AccessKey的网络访问策略。具体操作,请参见配置主账号的AccessKey级网络访问限制策略。

安装Funcraft工具
Funcraft是一个用于支持Serverless应用部署的工具,能帮助您便捷地管理函数计算、API 网关和日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建和部署操作。
本步骤将指导您如何在ECS服务器上安装Funcraft工具。
在云产品资源列表的ECS云服务器区域,单击远程连接。

在登录实例对话框中,连接方式选择免密连接,单击登录。

执行如下命令,安装Node.js。
curl -sL https://rpm.nodesource.com/setup_24.x | bash - && yum install -y nodejs执行如下命令,安装Funcraft。
npm --registry=https://registry.npmmirror.com install @alicloud/fun -g执行如下命令,查看版本信息。
fun --version返回如下结果,您可查看到Funcraft版本。

执行如下命令,进行本地配置。
fun config然后根据提示填写以下信息。请参考以下信息输入您的阿里云账号ID、AccessKeyID和AccessKey密钥等信息。
Aliyun Account ID:请填写您的阿里云账号ID,可在账号中心页面查看您的阿里云账号ID。

Aliyun Access Key ID:请填写您创建的阿里云主账号的AccessKey ID。
Aliyun Access Key Secret:请填写您创建的阿里云主账号的AccessKey Secret。
Default region name:请选择开通的函数计算服务所在地域。本实验以华东2(杭州)地域为例
Use custom endpoint:选择
Yes并回车,使用自定义域名。其他参数:其他未提及的参数可直接回车,保持默认配置。

运行模板示例
执行如下命令,新建工作空间。
mkdir search_ip && cd search_ip执行如下命令,新建一个HTTP函数触发器。
fun init http-trigger-nodejs10返回如下结果,其中index.js文件为生成的HelloWorld函数模板,template.yml文件中包含了HelloWorld函数和HTTP触发器的默认配置信息。

执行如下命令,部署应用到函数计算服务。
fun deploy -y返回如下结果,表示应用部署完成。

使用curl命令访问HTTP触发器。
说明您需要将命令中的
1***************替换为您的阿里云账号ID。curl https://1***************.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/search_ip/search_ip/返回如下结果,可以看到在使用HTTP触发器的时候,可以默认传递一些参数,包括Path,Queries以及Headers,Method等,其中有一个参数是clientIP,该字段的值就是客户端的IP地址,我们可以通过该地址来确定客户端的IP地址。

接下来我们将利用clientIP字段开发IP查询工具。
开发IP查询工具
修改index.js文件内容。
执行如下命令,将index.js文件内容清空。
cat /dev/null > index.js执行如下命令,使用vim编辑index.js文件。
vim index.js按
i键进入vim的编辑模式,在文件中新增以下内容。var getRawBody = require('raw-body') module.exports.handler = function (request, response, context) { getRawBody(request, function (err, data) { var respBody = new Buffer.from("您的IP是:" + request.clientIP); response.setStatusCode(200) response.setHeader('content-type', 'text/html') response.send(respBody) }) };
按
Esc退出编辑模式,输入:wq并回车,退出并保存文件。
执行如下命令,重新部署应用到函数计算服务。
fun deploy -y返回如下结果,表示应用部署完成

使用curl 命令访问HTTP触发器。
说明您需要将命令中的
1***************替换为您的阿里云账号ID。curl https://1***************.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/search_ip/search_ip/返回如下结果,可以看到您的IP地址。

清理资源
在完成实验后,如果无需继续使用资源,请根据以下步骤,先删除阿里云AccessKey和函数计算部署的应用,再结束实操。
删除阿里云AccessKey。
前往AccessKey管理。
在不建议使用云账号AccessKey对话框,阅读创建主账号AccessKey的风险,如果必须要创建主账号AccessKey,则勾选我确认知晓云账号AccessKey安全风险,然后单击继续使用云账号AccessKey。

在AccessKey页面,找到目标AccessKey,单击右侧操作列下的禁用。

在禁用对话框中,单击禁用。
在AccessKey页面,找到目标AccessKey,单击右侧操作列下的删除。

在删除对话框中,输入当前AccessKey的ID,单击删除。
删除函数计算部署的应用。
前往函数计算控制台。
在左侧导航栏中,单击函数。

在函数页面,找到您部署的函数,选择右侧操作列下的。

在删除函数对话框中,选中我确认要删除以上资源,并同时删除此函数。我已知晓这些资源删除后将无法找回,然后单击删除函数。

删除阿里云AccessKey和函数计算后,选择不保留资源,单击结束实操。在结束实操对话框中,单击确定。

在完成实验后,如果需要继续使用资源,选择付费保留资源,单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。

图标 > 删除