【问题标题】:How to know if context.fail when invoking AWS Lambda function from Ruby SDK?从Ruby SDK调用AWS Lambda函数时如何知道context.fail?
【发布时间】:2016-01-07 03:25:57
【问题描述】:

从 ruby​​ 开发工具包调用 Amazon Web Service Lambda 函数时,是否有任何方法可以确定该函数是否遇到 context.fail?

即。如果我在 ruby​​ sdk 中调用这样的 AWS Lambda 函数:

    resp = LAMBDA.invoke({
                  function_name: "cropSomeStuff", 
                  invocation_type: "RequestResponse", 
                  log_type: "Tail", # accepts None, Tail
                  payload: payload.to_json
              })

函数遇到context.fail(err)

resp.successful? 仍然返回 true。我可以使用 Base64.decode64(resp.log_result) 查看日志,但是,我没有看到一种简单的方法来以编程方式告诉函数调用在 ruby​​ 级别失败。

【问题讨论】:

    标签: ruby amazon-web-services aws-lambda


    【解决方案1】:

    response object 应包含响应代码 (#status_code) 和错误字符串 (#function_error)。您可以使用其中任何一个来检测错误:

    使用#function_error

    unless resp.function_error.empty?
      # An error occured
    end
    

    使用#status_code

    unless resp.status_code.between?(200, 299)
      # An error occured
    end
    

    (请注意,文档仅将成功指定为“在 200 范围内”。)

    文档中没有 #successful? 方法,所以不确定它来自哪里。

    【讨论】:

    • 无论是否失败,它都会返回 200,并且 function_error 只表示它已被处理。
    • HandledUnhandled 都表示存在错误,但如果您需要详细信息,您可能需要解析有效负载。
    【解决方案2】:

    似乎解析resp.payload 是最好的做法,如果出现错误,该响应字典中的唯一键将是errorMessage。只要调用了函数,就会返回 200,最好通过查看传递给 context.fail 的返回结果来处理这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 2020-02-24
      • 1970-01-01
      • 2017-10-03
      • 2021-12-17
      • 2015-04-13
      • 2015-07-07
      • 2021-06-05
      相关资源
      最近更新 更多