开通函数计算服务

在使用函数计算前,您需要开通函数计算服务。
说明: 本场景中提供的阿里云子账号无函数计算服务操作权限,请使用您自己的阿里云账号操作。您无需担心扣费问题,因为函数计算服务有一定的免费额度,请参见计费方式
1. 使用您自己的阿里云账号登录阿里云控制台,然后进入函数计算产品详情页
2. 单击【免费开通】。
函数计算进阶-IP查询工具开发 - 图1
3. 阅读《函数计算服务协议》勾选同意服务协议,最后单击 【立即开通】
函数计算进阶-IP查询工具开发 - 图2
4. 单击【管理控制台】进入函数计算控制台。
函数计算进阶-IP查询工具开发 - 图3

创建资源

  1. 在页面左侧,单击 云产品资源 下拉菜单,查看本次实验资源。
    2. 单击 免费开通 创建所需资源。
    说明: 资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、用户名和密码等。

    连接ECS服务器

  2. 打开终端工具。
  • Windows:打开命令窗口。
  • MAC:打开命令行终端Terminal。

Windows用户请检查系统中是否安装有SSH工具。检查方法:
在终端中输入命令 ssh -V 。

  1. ssh -V

如果显示SSH版本则表示已安装,如下图所示。
函数计算进阶-IP查询工具开发 - 图4
如果未安装,请下载安装OpenSSH工具。
2. 在终端中输入连接命令ssh [username]@[ipaddress]。
您需要将其中的username和ipaddress替换为步骤一中创建的ECS服务器的弹性公网IP。例如:

  1. ssh root@123.123.123.123

函数计算进阶-IP查询工具开发 - 图5
命令显示结果如下:
函数计算进阶-IP查询工具开发 - 图6
3. 输入yes。
4. 同意继续后将会提示输入登录密码。 密码为已创建的云服务的ECS的登录密码。
函数计算进阶-IP查询工具开发 - 图7
登录成功后会显示如下信息。
函数计算进阶-IP查询工具开发 - 图8

安装Funcraft工具

Fun 是一个用于支持Serverless应用部署的工具,能帮助您便捷地管理函数计算、API 网关和日志服务等资源。它通过一个资源配置文件
(template.yml),协助您进行开发、构建和部署操作。
本步骤将在ECS服务器上安装Funcraft工具。
1. 执行以下命令安装NodeJS。

  1. curl -sL https://rpm.nodesource.com/setup_10.x | bash - && yum install -y nodejs
  1. 执行以下命令安装Funcraft。
    1. npm install @alicloud/fun -g
  2. 执行fun config命令进行本地配置。
    1. fun config
    请参考以下信息输入您的阿里云账号ID、AccessKeyID和AccessKey密钥等信息。
    Aliyun Account ID:请在账号安全设置页面查看您的账号ID。
    函数计算进阶-IP查询工具开发 - 图9
    Aliyun Access Key ID和Aliyun Access Key Secret:请在 安全信息管理 页面查看您账号的AK ID和AK Secret。
    如果您使用的是阿里云主账号,请在安全信息管理页面的安全提示弹框中单击继续使用AccessKey。
    函数计算进阶-IP查询工具开发 - 图10
    如果您使用的是阿里云RAM子用户,需要确保您的子用户拥有函数计算管理权限AliyunFCFullAccess,请参见为RAM用户授权
    如下图所示为您的AccessKey ID和AccessKey Secret。如果您的账号未使用过AccessKey,请单击右上角创建AccessKey。
    函数计算进阶-IP查询工具开发 - 图11
    Default region name:请选择开通的函数计算服务所在地域。
    函数计算进阶-IP查询工具开发 - 图12
    正确设置如下所示:
    函数计算进阶-IP查询工具开发 - 图13

    运行模板示例

  3. 执行以下命令新建工作空间。
    1. mkdir search_ip && cd search_ip
  4. 执行fun init命令新建一个HTTP函数触发器。
    1. fun init http-trigger-nodejs10
    命令执行结果如下所示:
    函数计算进阶-IP查询工具开发 - 图14
    其中index.js 文件为生成的HelloWorld函数模板,template.yml 文件中包含了HelloWorld函数和HTTP触发器的默认配置信息。
    3. 执行fun deploy -y命令部署应用到函数计算服务。
    1. fun deploy -y
    命令执行结果如下所示:
    函数计算进阶-IP查询工具开发 - 图15
    4. 使用curl命令访问HTTP触发器。请将下面命令中的11905929798*****替换为您的阿里云账号ID。
    1. curl https://11905929********.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/search_ip/search_ip/
    命令执行结果如下所示:
    函数计算进阶-IP查询工具开发 - 图16
    在返回结果中可以看到,在使用HTTP触发器的时候,可以默认传递一些参数,包括Path,Queries以及Headers,Method等,其中有一个参数是clientIP,该字段的值就是客户端的IP地址,我们可以通过该地址来确定客户端的IP地址。
    接下来我们将利用clientIP字段开发IP查询工具。

    开发IP查询工具

  5. 参考以下步骤修改 index.js 文件内容。
    a. 将 index.js 文件内容清空。
    1. cat /dev/null > index.js
    b. 使用vim打开 index.js 文件。
    1. vim index.js
    c. 按下 i 键进入vim的编辑模式,在文件中新增以下内容。
    1. var getRawBody = require('raw-body')
    2. module.exports.handler = function (request, response, context) {
    3. getRawBody(request, function (err, data) {
    4. var respBody = new Buffer.from("您的IP是:" + request.clientIP);
    5. response.setStatusCode(200)
    6. response.setHeader('content-type', 'text/html')
    7. response.send(respBody)
    8. })
    9. };
    d. 按下 esc 键进入命令模式,输入 :wq 保存并退出vim。
    2. 执行 fun deploy -y 命令重新部署应用到函数计算服务。
    1. fun deploy -y
    命令执行结果如下所示:
    函数计算进阶-IP查询工具开发 - 图17
    3. 使用 curl 命令访问HTTP触发器。请将下面命令中的11905929798*****替换为您的阿里云账号ID。
    1. curl https://11905929798*****.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/search_ip/search_ip/
    命令执行结果如下所示:
    函数计算进阶-IP查询工具开发 - 图18