【问题标题】:Serverless invoke returns "Unable to marshal response: OSError(30, 'Read-only file system') for my Python lambda无服务器调用返回“无法编组响应:OSError(30, 'Read-only file system') for my Python lambda
【发布时间】:2020-01-28 03:54:40
【问题描述】:

运行基于 python 的 aws lambda 时,出现只读文件系统错误。

但是,我没有做任何日志记录,看起来像无服务器。

{
    "errorMessage": "Unable to marshal response: OSError(30, 'Read-only file system') is not JSON serializable",
    "errorType": "Runtime.MarshalError"
}

  Error --------------------------------------------------

  Error: Invoked function failed
    at AwsInvoke.log (/usr/local/Cellar/serverless/1.50.0/libexec/lib/node_modules/serverless/lib/plugins/aws/invoke/index.js:101:31)

这是我的 serverless.yml

provider:
  name: aws
  runtime: python3.7
functions:
  main:
    handler: main.handler
    package:
      include:
        - src/main.py
    layers:
      - {Ref: PythonRequirementsLambdaLayer}
    environment:
      REGION_NAME: us-west-2
custom:
  pythonRequirements:
    dockerFile: ./Dockerfile
    layer: true
plugins:
  - serverless-python-requirements

我已将我的处理程序包装在一个 try-catch 中,但它甚至无法访问我的代码。

我希望我的 lambda 能够正常运行我的代码

【问题讨论】:

  • 您能分享导致错误的代码行吗?你确定你选择了 python 运行时?好像是js错误。
  • 我已经将我的处理程序包装在一个 try-catch 中,但它甚至没有进入我的代码。我已经更新了我的帖子。

标签: amazon-web-services docker aws-lambda serverless-framework pyppeteer


【解决方案1】:

当处理程序返回的值不是 JSON 可序列化到 Lambda 时,会出现错误消息 Unable to marshal response {repr} is not JSON serializable

在某些时候,某些东西正在捕获异常并返回异常对象。

然后让我们看看OSError(30, 'Read-only file system')。这也是 Lambda 的一个常见问题:只允许在 /tmp 下写入。您的代码安装在只读卷中。

我已将我的处理程序包装在一个 try-catch 中,但它甚至无法访问我的代码。

严格来说,它不会到达您的处理程序。

导入模块从顶部运行它;那些 defclass 块只是对模块命名空间的美化分配。并且当你导入其他模块时,它们可以运行任意代码,它们绝对可以尝试写入文件系统。

进一步诊断此问题的一种简单方法是:

  1. 将 zip 文件解压到自己的目录中。
  2. 添加一个简单的帮助程序来导入您的处理程序并调用它。
  3. 在 Windows 上通过chmod 等将所有内容标记为只读。
  4. 运行你的助手,看看有什么问题。

由于您是直接引入 PythonRequirementsLambdaLayer,因此您还可以将其解压到您的测试平台中以找出它在哪里出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2017-07-30
    • 2019-01-12
    • 2020-03-14
    • 2021-06-09
    • 2020-08-28
    相关资源
    最近更新 更多