首页 > 解决方案 > /tmp/ 文件夹的 AWS Lambda 文件错误问题

问题描述

我试图基本上在 AWS Lambda 中编写一个文件。这是我分析文件并写入 Lambda 的 analyze.py 脚本。

from main import Analyzer
import argparse
import sys

# Takes helper functions from main.py and prints filament usage and print time 
def parse_args():
    parser = argparse.ArgumentParser(description="Gcode Info Extractor")
    parser.add_argument('path', type=str)
    return parser.parse_args()

def giveInput():
    args = '/tmp/' + 'output.gcode'
    #path = '/tmp/' + args.path
    analyzer = Analyzer(args)
    time = analyzer.get_time()/60
    filUsage = analyzer.get_filament_usage()
    # Lambda issues, so going to try to make  the return of this function simply the two variables I need..
    neededInput = "%.2f, %s" %(filUsage, time)
    return (neededInput)

{
  "errorMessage": "[Errno 2] No such file or directory: '/tmp/output.gcode'",
  "errorType": "FileNotFoundError",
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      20,
      "pp_handler",
      "data = giveInput()"
    ],
    [
      "stl2gcode/analyze.py",
      14,
      "giveInput",
      "analyzer = Analyzer(args)"
    ],
    [
      "stl2gcode/main.py",
      45,
      "__init__",
      "self.__process()"
    ],
    [
      "stl2gcode/main.py",
      57,
      "__process",
      "with open(self.__file_path, \"r\") as fp:"
    ]
  ]
}

问题是,当我错误地将 output.gcode 文件包含在我在 Lambda 上的部署包中时,只需阅读它就没有问题。但我的问题是我在写那个文件的时候。

我编写该文件的方式是通过一个名为mandoline_py 我执行此命令的库:

mandoline -o /tmp/output.gcode -n /tmp/input.stl

问题不在于库,因为当我尝试在 giveInput() 函数中使用“input.stl”而不是“output.gcode”时,Lambda 找到的文件没有问题。知道我能做什么吗?

标签: pythonamazon-web-servicesaws-lambda

解决方案


推荐阅读