猿问

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

我以前使用过Lambda函数,如果我没记错的话,我应该在中拥有约500Mb的(短暂的)空间。/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 环境(因此,我猜亚马逊linux: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

    }

}

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


拉莫斯之舞
浏览 78回答 1
1回答

Smart猫小萌

你很接近。您的使用方式尚未100%正确。请尝试以下操作:exec.Command()package mainimport (    "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)}第一个参数是要运行的程序,以下所有参数都是程序参数。Command()请参阅 https://play.golang.org/p/WaVOU0IESmZ
随时随地看视频慕课网APP

相关分类

Go
我要回答