首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种在 IBM OpenWhisk 中配置和调用操作的简单方法(1)

一种在 IBM OpenWhisk 中配置和调用操作的简单方法(1)

IBM OpenWhisk 是一种简单的开源服务,它可以根据需要快速启动和运行代码片段,以响应传入的 REST 请求。查阅  。在本教程中,我首先将介绍如何手动发出 OpenWhisk 命令。然后介绍如何使用我创建的                Python 库让命令执行变得更简单。
我非常渴望试用                OpenWhisk,因为我听说它具有两大优势:配置很容易,费用比在长期运行的机器上运行应用程序还要低。在了解了   后,我创建并发布了一个微型的 Python 库                openWhiskLib.py,以简化这些任务(如下图左侧所示):
  • 在 OpenWhisk 中准备一个 JavaScript 操作
  • 调用操作

完成本教程要做的准备工作
  • 一个 Bluemix 帐户。(注册您的  ,如果您已经有一个帐户,请  。)
  • 一个带 Ubuntu Linux 14.04 的虚拟机(本教程中的步骤针对的是一台 Ubuntu Linux                    机器,但其他操作系统的步骤应该与此类似。)
1

设置 OpenWhisk 客户端机器

启动一个带 Ubuntu Linux 14.04 的虚拟机,以根用户身份进行登录,并应用最新的更新:
apt-get -y update ; apt-get -y dist-upgrade




您现在可以使用此机器将 “Hello world” 应用程序上传到 OpenWhisk,如下面的第 3 步所示。
2

安装、配置和测试 OpenWhisk 客户端

  • 注册 Bluemix 并访问  。在屏幕上,您现在会看到 3 个步骤,以及为您的 Bluemix 帐户自定义的参数。
  • 在您的 OpenWhisk 客户端机器上执行以下 3 步:
    • 第 1                            步:下载                            OpenWhisk CLI,解压该文件,并将可执行的 wsk 添加到您的路径。
    • 第 2 步:运行 wsk property set...此命令会将您的 Bluemix                                凭证写入您的 OpenWhisk                                客户端机器上一个隐藏的文件中。对我而言,它在我的主目录中创建了这个隐藏文件:.wskprops
      提示:保存这个隐藏文件。我们将为 Python                                库的环境变量使用本教程后面的一些参数。
    • 第 3 步:wsk action invoke...此命令与 Bluemix 上的                                OpenWhisk 服务通信,确认您的凭证有效。几秒后,wsk 会发回一个包含单词 ‘hello’ 的 JSON                                结构作为响应。大功告成!
      为了增加点趣味性,可以将消息字符串从 ‘hello’                                更改为其他文字并重复该操作。响应应包含您的新字符串。
提示:Verbose Mode
如果您将 -v 参数添加到 wsk 命令,则会显示发送到服务器的 HTTP                请求。我发现此功能对调试和发现发出 REST 请求需要的参数非常有用。(  介绍了更多细节。)
3

将此操作文件上传到 Bluemix 上的 OpenWhisk 服务

  中提供了一个操作文件的简单 JavaScript 代码段。
  • 发出教程中所示的 wsk 命令,以创建、使用和删除操作文件。
  • 使用 -v 选项重复执行这些命令。这会显示从命令行发出这些命令所需的 REST                        请求和参数。以下是一个示例:
    在您的 OpenWhisk 客户端机器上创建一个名为 ‘hello.js’                        的文件:
    1
    2
    3
    function main() {
    return {payload: 'hello'};
    }




  • 现在发出 wsk 命令来上传                        hello.js。以下是我试用的命令(为保护隐私,我的用户名和凭证已被模糊化):
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    wsk -v action create hello hello.js

    {'apihost': 'openwhisk.ng.bluemix.net', 'namespace': 'user@example.com_dev', 'clibuild': '2016-
    05-24T09:54:44-05:00', 'apiversion': 'v1'}
    ========
    REQUEST:
    PUT https://openwhisk.ng.bluemix.net/api/v1/namespaces/user
    %40example.com_dev/actions/hello
    Headers sent:
    {
         "Authorization": "Basic
    S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii",
         "Content-Type": "application/json"
    }
    Body sent:
    {"exec": {"kind": "nodejs", "code": "function main() {\n return {payload: 'hello'};\n}\n"}}




备注:
  • 请求标头的 Auth 字符串不同于 .wskprops 中存储的字符串。(我认为它采用的是 base 64                    编码。)
  • hello.js 的内容以长字符串形式包含在请求主体中的 code 变量中。
返回列表