调用ibm mq_在IBM OpenWhisk中提供和调用动作的简便方法

本文介绍了IBM OpenWhisk,一种响应REST请求的开源服务,可在Bluemix上快速运行代码。通过Python库简化OpenWhisk命令的发布,降低设置难度,节省成本。教程涵盖了从配置到测试的所有步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IBM OpenWhisk是一个简单的开源服务,可以响应传入的REST请求而按需快速启动和运行代码花絮。 查看IBM Bluemix上OpenWhisk beta产品 。 在本教程中,我首先向您展示如何手动发布OpenWhisk命令。 然后,我向您展示如何使用我创建的Python库来使发出这些命令更加容易。

我很想尝试OpenWhisk,因为我听说它有两个很大的优点:设置非常容易,而且计费比在长寿机器上运行应用程序便宜。 在弄清楚如何使用OpenWhisk之后 ,我创建并发布了一个微型Python库openWhiskLib.py来简化这些任务(如下图左侧所示):

  • 在OpenWhisk中配置JavaScript操作
  • 调用动作

Bluemix上 尝试 OpenWhisk在GitHub 获取openWhiskLib.py

两个OpenWhisk动作图

本教程需要什么

  • 一个Bluemix帐户。 (注册您的免费试用帐户,或者如果已经拥有一个帐户,则登录到Bluemix 。)
  • 使用Ubuntu Linux 14.04的VM。 (本教程中的步骤引用的是Ubuntu Linux计算机,但其他操作系统应该相似。)

设置一个OpenWhisk客户端计算机

使用Ubuntu Linux 14.04引导VM,以root用户身份登录,并应用其最新更新:

apt-get -y update ; apt-get -y dist-upgrade

现在,您可以使用此计算机将“ Hello world”应用程序上传到OpenWhisk,如下面的步骤3所述。

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

  1. 登录到Bluemix并访问OpenWhisk CLI 。 现在,在屏幕上,您将看到三个步骤,并为您的Bluemix帐户定制了参数。
  2. 在您的OpenWhisk客户端计算机上执行三个步骤:
    • 步骤1:下载OpenWhisk CLI,解压缩文件,然后将可执行文件wsk添加到您的路径。
    • 步骤2: wsk property set...

      该命令将您的Bluemix凭据写入OpenWhisk客户机上的隐藏文件中。 对我来说,它在我的主目录中创建了这个隐藏文件:.wskprops

      提示:保存此隐藏文件。 我们将在本教程后面的部分中为Python库的环境变量使用一些参数。

    • 步骤3: wsk action invoke...

      该命令与Bluemix上的OpenWhisk服务进行通信,以确认您的凭证有效。 几秒钟后,wsk响应一个包含单词“ hello”的JSON结构。 成功!

      为了娱乐,将消息字符串从“ hello”更改为其他内容并重复。 响应中应包含您的新字符串。

提示:详细模式

如果将-v参数添加到任何wsk命令,它将显示它发送到服务器的HTTP请求。 我发现此功能对于调试和发现发出REST请求所需的参数非常有用。 (更多详细信息在此Stack Overflow交换中 。)

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

Bluemix上OpenWhisk教程中提供了一个用于操作文件的简单JavaScript代码段。

  1. 发出教程中显示的wsk命令以创建,使用和删除操作文件。
  2. 使用-v verbose选项重复命令。 这显示了REST请求和从命令行发出命令所需的参数。

    这是一个例子:

    在您的OpenWhisk客户端计算机上创建一个名为“ hello.js”的文件:

    function main() {
    return {payload: 'hello'};
    }
  3. 现在发出wsk命令来上传hello.js。 这是我的命令(对用户名和凭据进行了模糊处理以保护隐私):
    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中存储的字符串不同。 (我相信它是基于64位编码的。)
  • hello.js的内容以一个长字符串形式包含在请求主体中的可变code中。

测试动作

创建动作后,通过发出wsk action invoke命令对其进行测试:

wsk -v action invoke /whisk.system/samples/echo -p message hello --blocking --result
{'apihost': 'openwhisk.ng.bluemix.net', 'namespace': 'user@example.com_dev', 'clibuild': '2016-
05-24T09:54:44-05:00', 'apiversion': 'v1'}
========
REQUEST:
POST
https://openwhisk.ng.bluemix.net/api/v1/namespaces/whisk.system/actions/samples/echo?
blocking=true&result=true
Headers sent:
{
     "Authorization": "Basic
S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii",
     "Content-Type": "application/json"
}
Body sent:
{"message": "hello"}
--------
RESPONSE:
Got response with code 200
Body received:
{
  "message": "hello"
}
========
{
  "message": "hello"
}

介绍openWhiskLib.py

既然您已经学会了手动发出所有命令,请尝试使用新的Python脚本简化发出命令的过程。

迄今为止,已经开发并测试了以下功能:

  • createAction(文件名,操作)
  • deleteAction(动作)
  • invokeAction(动作)
  • invokeEcho(消息)
  • listActions()
  • listNamespaces()

openWhiskLib项目在GitHub上公开可用。

要在计算机上使用openWhiskLib,请首先定义三个环境变量:

OPENWHISK_APIHOST
从文件.wskprops获取此值
OPENWHISK_NAMESPACE
从文件.wskprops获取此值
OPENWHISK_TOKEN
通过发出任何详细的wsk命令来获取此值,例如:
wsk -v action invoke /whisk.system/samples/echo -p message hello --blocking --result

例如,在您的Linux笔记本电脑上,您可以像我一样设置值(出于保密目的,我的个人数据被遮盖了):

export OPENWHISK_APIHOST="openwhisk.ng.bluemix.net"
export OPENWHISK_NAMESPACE="username@example.com_dev"
export
OPENWHISK_TOKEN="S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3j
Es7Ii"

为了方便起见,您可以在bash脚本中定义值。 您可以在GitHub项目中复制和编辑此示例:bin / setenv.sh

使用openWhiskLib.py创建动作

要创建动作,请首先在计算机上创建一个文件,其中包含要上传和执行JavaScript代码的片段。 例如,您可以使用类似于上面列出的相同示例的代码:goodday.js:

function main() {
     return {payload: 'good day'};
}

然后从您的Python解释器调用openWhiskLib函数createAction() 。 例如:

定义环境变量(带点):

. setenv.sh

调用Python

python

Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> from openwhisklib import *
>>> createAction( 'goodday.js', 'goodday')
Issuing put request:
url=https://openwhisk.ng.bluemix.net/api/v1/namespaces/user@example.com_dev/actions/goodday
payload: {'exec': {'kind': 'nodejs', 'code': "function main() {\n return {payload: 'good day'};\n}\n"}}
headers={'content-type': 'application/json', 'Authorization': 'Basic
S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii'}
Response status_code=200
{
  "name": "goodday",
  "publish": false,
  "annotations": [],
  "version": "0.0.1",
  "exec": {
    "kind": "nodejs",
    "code": "function main() {\n return {payload: 'good day'};\n}\n"
},
"parameters": [],
limits": {
  "timeout": 60000,
  "memory": 256
},
"namespace": "user@example.com_dev"
}
<Response [200]>
>>>

使用openWhiskLib.py调用动作

最后,使用openWhiskLib.py从Bluemix的OpenWhisk调用代码片段:

>>>
>>> invokeAction('goodday')
Issuing request:
url=https://openwhisk.ng.bluemix.net/api/v1/namespaces/user@example.com_dev/actions/goodday?
blocking=true&result=false payload={} headers={'content-type': 'application/json', 'Authorization':
'Basic S3sjGo6dKeKSIIRENS135xOsT3jEs7IiS3sjGo6dKeKSIIRENS135xOsT3jEs7Ii'}
Response status_code=200
{
"name": "goodday",
  "subject": "user@example.com",
  "activationId": "f81398a389734d018f4c92fbf59e2dbe",
  "publish": false,
  "annotations": [],
  "version": "0.0.1",
  "response": {
     "result": {
       "payload": "good day"
      },
      "success": true,
      "status": "success"
  },
  "end": 1466083636776,
  "logs": [],
  "start": 1466083636724,
  "namespace": "user@example.com"
}
<Response [200]>
>>>
>>>

测试用例和示例代码

GitHub上openWhiskLib项目中的简单测试用例(tests / openwhisklib.tests.py)演示了openWhiskLib.py中的每个函数,显示了输入和输出。 您可以使用它们来验证OpenWhisk是否可以使用您的凭据。

结论

本教程为您提供了OpenWhisk的高级概述,以及在IBM Bluemix上载和运行您自己的代码的示例。 您还看到了一个新的Python库,该库简化了将应用程序访问和部署到OpenWhisk的过程。 我希望您可以使用openWhiskLib.py。 接受它,对其进行增强,对其进行变形并将其制成自己的。


翻译自: https://www.ibm.com/developerworks/cloud/library/cl-python-openwhisk-bluemix-trs/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值