首页 > 解决方案 > 如何在 Python 中编写一个简单的基于 http 请求(方法)的 AWS lambda 函数?

问题描述

我是 AWS 新手。我想将 API Gateway 与我的 lambda 函数集成。我想要实现的事情是:对于每个 HTTP 请求,我只需要打印一个声明,即特定请求被命中!。例如,假设一个 GET 请求到达我的 api 端点,我需要在浏览器中只显示“发出的 GET 请求”。如果说发出了一个发布请求。我想显示消息“发出请求”,如果可能的话,还显示发布的数据。我搜索了很多,但找不到任何东西。但是我找到了一个代码片段,但它是用 node.js 编写的。下面我附上片段。

exports.handler = async (event) => {
    console.log(event);
    if (event.httpMethod === 'PUT') {
        let response = putShows(event)
        return done(response);
    } else if (event.httpMethod === 'GET') {
        let response = getShows(event);
        return done(response);
    }
};`

整个代码可在此处获得(在 GitHub 上)

标签: python-3.xamazon-web-servicesaws-lambdaaws-api-gateway

解决方案


Lambda:创建一个以 python 作为运行时的 lambda。我们将设置 api 网关以将 http 请求类型发送到 lambda。Lambda 将在 event 参数中接收此信息。这是python代码:

def lambda_handler(event, context):
    return event

在 api gateway 中,创建一个集成类型为:lambda 的资源。在 lambda 函数字段中输入 lambda 的名称。创建后,在出现的方法图上选择集成请求。在映射模板部分,您可以输入传递给 lambda 的信息(这将传递给事件参数中的 lambda):在此处输入图像描述

当您在此 api 网关上运行测试时,您会收到映射模板部分。

模拟资源: 如果您所做的只是测试以查看是否从 api 网关返回响应,则可以使用模拟资源,这样您就不需要配置 lambda。使用模拟资源,您可以配置响应以匹配您发出的请求类型。

创建一个方法(get / post)并将集成类型设置为 Mock。转到方法外的集成响应并展开映射模板部分。您可以添加“消息”:“这是一个获取请求”。在此处输入图像描述

测试 API 网关: 要查看您收到的响应类型,请使用我链接的 aws 文档的第 5 步中描述的测试功能。

你有 python 链接,所以这里是 python 代码,可用于查看响应:

import requests
url = 'https://your_api_url'
r = requests.get(url)
data = r.json()
data['message'] #this will have your get message in it.

如果您想通过 javascript 执行此操作,请通过单击操作并选择“启用 CORS”来为您的资源设置启用 CORS。然后,您需要为您的页面或浏览器的控制台使用以下 javascript:

const response = await fetch('your api gateway url')
console.log(response.body.message)

推荐阅读