python-3.x - 如何在 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 上)
解决方案
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)
推荐阅读
- database - 无法在 MongoDB 查询中找到匹配项
- javascript - 如何在无状态组件中合并值?
- pine-script - 解释 tradingview 松脚本自引用变量值
- python-3.x - 使用 Twitter API 发送直接消息不起作用
- r - 如何将临时 _main.Rmd 文件保存在 bookdown 中(没有错误时)
- javascript - FORM : 签入 javascript
- ruby-on-rails - nil:NilClass 的未定义方法“每个”。实例变量不起作用
- python - 将字符串作为参数解析时,sqlite中的“没有这样的列”
- flutter - Flutter:具有不同填充和描边颜色的自定义 Painter 绘制路径
- java - BasePage 元素如何启动