AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Ruby 中的 AWS Lambda 函数错误

当您的代码引发错误时,Lambda 将生成错误的 JSON 表示形式。此错误文档会出现在调用日志中,对于同步调用,它出现在输出中。

例 function.rb

def handler(event:, context:) puts "Processing event..." [1, 2, 3].first("two") "Success" end

此代码将导致类型错误。Lambda 将捕获此错误并生成一个包含错误消息、类型和堆栈跟踪字段的 JSON 文档。

{ "errorMessage": "no implicit conversion of String into Integer", "errorType": "Function<TypeError>", "stackTrace": [ "/var/task/function.rb:3:in `first'", "/var/task/function.rb:3:in `handler'" ] }

当您从命令行调用函数时,状态代码不会发生更改,但响应将包含 FunctionError 字段且输出包含错误文档。

$ aws lambda invoke --function-name ruby-function out { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" } $ cat out {"errorMessage":"no implicit conversion of String into Integer","errorType":"Function<TypeError>","stackTrace":["/var/task/function.rb:3:in `first'","/var/task/function.rb:3:in `handler'"]}

要查看错误日志中的错误,请使用 --log-type 选项,并解码响应中的 base64 字符串。

$ aws lambda invoke --function-name ruby-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 5ce6a15a-f156-11e8-b8aa-25371a5ca2a3 Version: $LATEST Processing event... Error raised from handler method { "errorMessage": "no implicit conversion of String into Integer", "errorType": "Function<TypeError>", "stackTrace": [ "/var/task/function.rb:3:in `first'", "/var/task/function.rb:3:in `handler'" ] } END RequestId: 5ce6a15a-f156-11e8-b8aa-25371a5ca2a3 REPORT RequestId: 5ce6a15a-f156-11e8-b8aa-25371a5ca2a3 Duration: 22.74 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 18 MB

有关更多信息,请参阅 Ruby 中的 AWS Lambda 函数日志记录