函数计算进阶-IP查询工具开发
1. 开通函数计算服务
在使用函数计算前,您需要开通函数计算服务。
说明: 本场景中提供的阿里云子账号无函数计算服务操作权限,请使用您自己的阿里云账号操作。您无需担心扣费问题,因为函数计算服务有一定的免费额度,请参见计费方式。
1. 使用您自己的阿里云账号登录阿里云控制台,然后进入函数计算产品详情页。
2. 单击【免费开通】。
3. 阅读《函数计算服务协议》勾选同意服务协议,最后单击 【立即开通】 。
4. 单击【管理控制台】进入函数计算控制台。
2. 创建资源
- 在页面左侧,单击 云产品资源 下拉列表,查看本次实验所需资源。
- 单击屏幕右侧 创建资源 ,免费创建当前实验所需云产品资源。
说明:
资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、子用户名称和子用户密码等。
3. 连接ECS服务器
成功创建资源后默认会打开Web Terminal操作服务器终端操作界面,您也可以点击右侧按钮,切换到Web Terminal操作界面。
4. 安装Funcraft工具
Fun 是一个用于支持Serverless应用部署的工具,能帮助您便捷地管理函数计算、API 网关和日志服务等资源。它通过一个资源配置文件
(template.yml),协助您进行开发、构建和部署操作。
本步骤将在ECS服务器上安装Funcraft工具。
1. 执行以下命令安装NodeJS。
curl -sL https://rpm.nodesource.com/setup_10.x | bash - && yum install -y nodejs
2. 执行以下命令安装Funcraft。
npm install request @alicloud/fun -g
3. 执行fun config命令进行本地配置。
fun config
请参考以下信息输入您的阿里云账号ID、AccessKeyID和AccessKey密钥等信息。
Aliyun Account ID:请在账号安全设置页面查看您的账号ID。
Aliyun Access Key ID和Aliyun Access Key Secret:请在 安全信息管理 页面查看您账号的AK ID和AK Secret。
如果您使用的是阿里云主账号,请在安全信息管理页面的安全提示弹框中单击继续使用AccessKey。
如果您使用的是阿里云RAM子用户,需要确保您的子用户拥有函数计算管理权限AliyunFCFullAccess,请参见为RAM用户授权。
如下图所示为您的AccessKey ID和AccessKey Secret。如果您的账号未使用过AccessKey,请单击右上角创建AccessKey。
Default region name:请选择开通的函数计算服务所在地域。
正确设置如下所示:
5. 运行模板示例
1. 执行以下命令新建工作空间。
mkdir search_ip && cd search_ip
2. 执行fun init命令新建一个HTTP函数触发器。
fun init http-trigger-nodejs10
命令执行结果如下所示:
其中index.js 文件为生成的HelloWorld函数模板,template.yml 文件中包含了HelloWorld函数和HTTP触发器的默认配置信息。
3. 执行fun deploy -y命令部署应用到函数计算服务。
fun deploy -y
命令执行结果如下所示:
4. 使用curl命令访问HTTP触发器。请将下面命令中的11905929798*****替换为您的阿里云账号ID。
curl https://11905929********.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/search_ip/search_ip/
命令执行结果如下所示:
在返回结果中可以看到,在使用HTTP触发器的时候,可以默认传递一些参数,包括Path,Queries以及Headers,Method等,其中有一个参数是clientIP,该字段的值就是客户端的IP地址,我们可以通过该地址来确定客户端的IP地址。
接下来我们将利用clientIP字段开发IP查询工具。
6. 开发IP查询工具
1. 参考以下步骤修改 index.js 文件内容。
a. 将 index.js 文件内容清空。
cat /dev/null > index.js
b. 使用vim打开 index.js 文件。
vim index.js
c. 按下 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) }) };
d. 按下 esc 键进入命令模式,输入 :wq 保存并退出vim。
2. 执行 fun deploy -y 命令重新部署应用到函数计算服务。
fun deploy -y
命令执行结果如下所示:
3. 使用 curl 命令访问HTTP触发器。请将下面命令中的11905929798*****替换为您的阿里云账号ID。
curl https://11905929798*****.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/search_ip/search_ip/
命令执行结果如下所示:
实验地址:https://developer.aliyun.com/adc/scenario/d419eecaaf184013a45db0a5d613ad39