Amazon web services 通过API网关从Lambda返回HTTP状态代码

Amazon web services 通过API网关从Lambda返回HTTP状态代码,amazon-web-services,aws-lambda,aws-api-gateway,Amazon Web Services,Aws Lambda,Aws Api Gateway,我有一个带有Python处理程序的Lambda设置,我创建了一个API端点,只接收POST方法。我不知道我的Lambda应该如何告诉API网关事情已经成功完成并返回http200状态码。有人尝试过这条路吗?您应该能够通过使用处理程序的返回值来实现您的目标。见官方 您还需要使用集成响应正确配置API网关。你可以在官方网站上找到更多关于这方面的信息,最重要的是集成响应部分。我也想要其他http错误代码,比如400和500,所以我在这里写了一个答案。详情请参阅: 在python中,lambda只需执行

我有一个带有Python处理程序的Lambda设置,我创建了一个API端点,只接收POST方法。我不知道我的Lambda应该如何告诉API网关事情已经成功完成并返回http200状态码。有人尝试过这条路吗?

您应该能够通过使用处理程序的返回值来实现您的目标。见官方


您还需要使用集成响应正确配置
API网关
。你可以在官方网站上找到更多关于这方面的信息,最重要的是
集成响应部分。

我也想要其他http错误代码,比如400和500,所以我在这里写了一个答案。详情请参阅:


在python中,lambda只需执行

raise Exception('notfound')
使用任何其他关键字代替notfound

然后在apigateway中,您需要将
'notfound'
映射到一些响应状态代码。我使用了swagger,因此下面是如何跟踪
'notfound'
的示例:

       "/tags/getById": {
          "get": {
            "summary": "Find the tag by it's ID",
            "produces": [
              "application/json"
            ],
            "responses": {
              "200": {
                "description": "successful operation",
                "schema": {
                  "$ref": "#/definitions/Tag"
                }
              },
              "404": {
                "description": "No tag found"
              }
            },
            "parameters": [xxxxxxx],
            "x-amazon-apigateway-integration": {
              "requestTemplates": {xxxxx},
              "uri": {xxxxxx},
              "responses": {
                "default": {
                  "statusCode": "200"
                },
                "notfound": {
                  "statusCode": "404"
                }

              },
              "httpMethod": "POST",
              "type": "aws"
            }
          }
       }