【问题标题】:How to use executable file within AWS lambda handler?如何在 AWS lambda 处理程序中使用可执行文件?
【发布时间】:2020-11-09 12:27:02
【问题描述】:

我想在 AWS lambda 处理函数中使用可执行文件。 这是我想在其中使用可执行文件的处理函数

func handler(){
    cmd := exec.Command("./balance", "GetBalance", id)
    cmd.Dir = "/Users/xxxx/go/src/getBalance"
    output, err := cmd.Output()
}

我想在这个处理程序中使用上述命令的输出。可以使用吗?如果可能,我是否需要压缩两个可执行文件?或者有没有其他方法可以让我在处理程序中使用可执行文件?

【问题讨论】:

    标签: amazon-web-services go aws-lambda aws-api-gateway api-gateway


    【解决方案1】:

    很遗憾,您将无法写信给/Users/xxxx/go/src/getBalance。在 lambda 中,您只能访问 /tmp

    此外,如果您将balance 文件与您的部署包捆绑在一起,它将与您的函数代码一起存储在/var/task 中。

    编辑:

    基于新的 cmets,要完成解决方案还需要删除 cmd.Dir 并为 linux 重新编译 balance

    【讨论】:

    • 所以如果我将balance 与我的部署包捆绑在一起,它将存储在/var/task 中吗?那么我需要使用/var/task 而不是/Users/xxxx/go/src/getBalance 还是需要对我的exec.Command 进行任何修改?
    • @Sharath 它将位于/var/task/。我不知道您当前的命令是否正确。我不知道./balance 是什么。它可能需要一些依赖项才能运行,这些依赖项在 lambda 中不可用。你必须尝试看看它是如何进行的。只有你知道./balance是什么,它是否需要任何参数、外部库、文件。
    • ./balance 需要两个参数。就像./balance GetBalance 12345,其中12345id,它是可变的。它将提供id 的余额。它不需要任何依赖项。我将它编译到linux环境中。它与我的其他二进制文件一起工作正常。但我不知道如何处理 lambda。我会尝试使用/var/task
    • @Sharath 如果您不尝试,您将不会知道。我也可以提供更好的答案。尝试使用额外信息和错误消息后,您可以创建新问题。此外,如果答案有帮助,我们将不胜感激。
    • 谢谢。我发现如果我将两个二进制文件捆绑在一起,我不需要添加任何路径。我只使用exec.Command 而不使用cmd.Dir。我之前做错的另一件事是我没有将balance 编译到 linux 环境。现在我编译成 linux 而不是使用cmd.Dir。现在它正在工作。
    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 2018-03-10
    • 2019-01-11
    • 1970-01-01
    • 2013-05-27
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多