AWS API网关,Python Lambda和HTTP状态

时间:2017-11-07 17:03:54

标签: python http aws-lambda aws-api-gateway http-status

我正在努力了解如何使用AWS API Gateway和Lambda函数(python)作为集成类型设置正确的http状态代码和错误消息。

我正在使用一个简单的例子,这里有详细信息:

Lambda函数

def lambda_handler(event, context):

    return_json = {}
    if event["request-number"] == "":
        raise Exception("Error request-number can't be empty")
    elif event["request-number"] == "3":
        raise Exception("Value not accepted")
    else:
        return_json = {"service-activated": "TRUE"}

    return return_json

API / resourcetest POST

这与上面的lambda集成。

目标:返回HTTP 400并且正文包含消息当request-number =""时,错误请求号码不能为空

实施

  1. 我创建了一个新的方法响应400
  2. 在lambda Error Regex中,我映射了错误。*所以要捕获该字符串
  3. 在正文映射模板中:我已经创建了一个内容类型作为application / json和我使用的模板(在设置之前有一个#标签符号,但是搞砸了这个页面的格式,所以我省略了它:)

    set($ inputRoot = $ input.path(' $')) {   "消息" :$ input.json(' $。errorMessage') }

  4. 我已经检查过方法响应中的http状态400(我已经知道了)

  5. 测试 通过AWS API网关控制台,我已经测试过具有HTTP 400,并且正文中的消息错误请求号码不能为空。好我达到了我想要的目标:

    enter image description here

    我已决定通过Postman和Chrome插件Restlet客户端进行测试,我所获得的是http状态200并且错误消息格式不正确:

    enter image description here

    现在,这非常奇怪:从AWS API控制台开始,一切都很好,从外部服务中无法正常工作。

    有没有人必须处理类似的事情?

    谢谢!

1 个答案:

答案 0 :(得分:1)

您是否重新部署了API?