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



我以前使用过Lambda函数,如果我没记错的话,我应该在/tmp中有大约500Mb的(短暂的(空间。

尽管如此,我的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
}
}

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

你很接近。您使用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("%sn", o)
}

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

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

相关内容

最新更新