如何在OpenWhisk上使用redis包运行Go函数?

如何在OpenWhisk上使用redis包运行Go函数?,go,ibm-cloud,openwhisk,Go,Ibm Cloud,Openwhisk,我在OpenWhisk(IBM云函数)上运行golang包时遇到了一些问题 我在本地计算机上运行了以下程序,它可以正常工作(go-run-sample.go): 但我没有找到任何方法让它在OpenWhisk上工作。我运行了以下命令: GOOS=linux GOARCH=amd64 go build -o exec sample.go zip exec.zip exec bx wsk action update myfunction --native exec.zip bx wsk acti

我在OpenWhisk(IBM云函数)上运行golang包时遇到了一些问题

我在本地计算机上运行了以下程序,它可以正常工作(
go-run-sample.go
):

但我没有找到任何方法让它在OpenWhisk上工作。我运行了以下命令:

GOOS=linux GOARCH=amd64 go build -o exec sample.go

zip exec.zip exec

bx wsk action update myfunction --native exec.zip

bx wsk action invoke myfunction -r
bx wsk activation logs --last --strip
“错误”:“该操作未返回字典。”

“2018-02-21T01:21:05.962244788Z标准输出:[错误号2]没有此类文件或 目录:'/action/exec''

问题与github.com/go-redis/redis包有关,当我删除它及其代码时,函数运行良好。我在
mgo
包(MongoDB)中遇到了同样的问题

我是刚来戈兰的新人,所以这可能是显而易见的,但现在我被卡住了:/

“错误”:“该操作未返回字典。”

这是一条打开的wsk错误消息。 这意味着您没有在stdout上返回词典

下面是一个有效的返回,因为它返回一个json对象

{“错误”:“有东西坏了!”}

以下内容无效

“有东西坏了!”

建议:检查构建时是否有任何错误(正常情况下)
dropbox中的文件看起来不像二进制文件…我建议您先检查是否可以构建二进制文件

zip文件中的二进制文件是根据平台上不可用的共享库动态链接的

使用
文件
ldd
确认:

$ file exec 
exec: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, not stripped 
$ ldd exec
/lib64/ld-linux-x86-64.so.2 (0x7f3f63f10000)
libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f3f63f10000)
libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f3f63f10000)
在平台使用的Docker映像中构建静态二进制文件或动态链接的二进制文件(
openwhisk/dockerskeleton


文件未找到
错误有误导性,但在执行有此问题的文件时。

我只是尝试了一下,没有遇到任何问题。它可能是您看到的旧运行的激活记录,执行bx wsk激活列表以确保您看到最新的运行。同时尝试在本地构建并在您的计算机上运行它,以确保可执行文件工作正常,然后重新编译linux并再次部署并再次运行。我也尝试了上面的说明,它运行正常。你能试一下上面@csantanapr的说明来检查这个工作吗?您使用的是什么操作系统?你能把你的zip文件发到某个地方让我们试试吗?很抱歉,我现在发现了这个问题!请参见下文。James构建包含所有内容的静态库的命令是什么?这取决于所使用的外部库。这个AFAIK没有一个命令。这篇博文详细介绍了使用Docker运行时编译是最好的选择。是100%同意使用
docker run--rm-v$(pwd):/owexec….
$ file exec 
exec: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, not stripped 
$ ldd exec
/lib64/ld-linux-x86-64.so.2 (0x7f3f63f10000)
libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f3f63f10000)
libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f3f63f10000)