无法访问 Go Lambda 中的文件系统

Fab*_* B. 1 go aws-lambda

我之前使用过 Lambda 函数,如果我没记错的话,我应该在/tmp.

然而,我的 Go lambda 函数似乎没有与 fs 正确交互:

exec.Command("ls -la /").Output()返回空

exec.Command("rm -rf /tmp/xxx").Run()回报fork/exec : no such file or directory

exec.Command("mkdir -p /tmp/xxx").Run()回报fork/exec : no such file or directory

真的很奇怪。它使用 go1.x 环境(因此,我猜 amazonlinux:2)

更新

我可以使用 Go os 函数访问 fs:

os.RemoveAll("/tmp/xxx")

if _, err := os.Stat("/tmp/xxx"); os.IsNotExist(err) {
    if err := os.Mkdir("/tmp/xxx", os.ModePerm); err != nil {
        return err
    }
}
Run Code Online (Sandbox Code Playgroud)

但我确实需要 exec 之后运行(二进制命令),并在该 tmp 文件夹中写入一个文件。这种情况下的错误是相同的(没有这样的文件或目录)。即使我刚刚使用上述命令创建了该文件夹。

Jen*_*ens 5

你很接近。您使用的方式exec.Command()还不是100%正确。请尝试以下操作:

package main

import (
    "fmt"
    "os"
    "os/exec"
)

func main() {
    o, err := exec.Command("ls", "-la", "/tmp").Output()
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    fmt.Printf("%s\n", o)
}
Run Code Online (Sandbox Code Playgroud)

第一个参数Command()是您要运行的程序,以下所有参数都是程序参数。

请参阅https://play.golang.org/p/WaVOU0IESmZ