首页 文章

AWS API Gateway,Python Lambda和HTTP状态

提问于
浏览
1

我很难理解如何使用AWS API网关和Lambda函数(python)作为集成类型来设置正确的http状态代码和错误消息 .

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

Lambda function

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集成在一起 .

Goal :返回HTTP 400和带消息的正文当request-number =“”时,错误请求号不能为空 .

Implementation

  • 我创建了一个新的方法响应400

  • 在lambda Error Regex中我映射了Error . *所以要捕获该字符串

  • 在正文映射模板中:我创建了一个内容类型作为application / json和我使用过的模板(在设置之前有一个#标签符号,但这搞砸了这个页面的格式,所以我省略了它):

set($ inputRoot = $ input.path('$')){“message”:$ input.json('$ .errorMessage')}

  • 我已经检查过方法响应中的http状态400(我有它)

Test 通过AWS API网关控制台,我已经测试过具有HTTP 400,并且正文中的消息错误请求编号不能为空 . 好我实现了我想要的:

enter image description here

我决定通过Postman和Chrome插件Restlet Client进行测试,我得到的是http状态200,错误信息格式不正确:

enter image description here

现在,这非常奇怪:从AWS API控制台一切都很好,从外部服务没有任何工作按预期 .

有没有人不得不处理类似的事情?

谢谢!

1 回答

  • 1

    您是否重新部署了API?

相关问题