amazon-web-services - 如何在 AWS Gateway 上针对特定内容类型的所有请求强制实现 JSON 架构模型?

标签 amazon-web-services aws-lambda aws-sdk jsonschema

我已成功设置 AWS Gateway 以使用 JSON 架构验证传入 POST 请求的正文。我太激动了!万岁,我想...当我使用内部 AWS 工具测试功能时...但后来我使用 AJAX 测试了来自网站的带有无效数据的 POST 请求,然后再次使用无效数据测试了 CURL 请求 - 并且不会你知道,它们都完成了我的集成并触发了我的 AWS Lambda 函数,这是 JSON Schema 应该阻止的!我已将最新的 API 部署到我的终端节点,甚至将所有被调用的“Content-Type” header 设置为同一 JSON 架构 AWS 模型。我对发生的事情感到茫然……如何强制所有请求必须是一种内容类型或返回错误?

预先感谢您提供的任何帮助...

最佳答案

为那些偶然发现这个问题的人提供我的问题的答案。

默认情况下,JQuery 的“.post”方法将 Content-Type 设置为“application/x-www-form-urlencoded”。我在 AWS Gateway 中设置的模型仅适用于“application/json”POST 请求。我假设如果我将“请求验证器”设置为对特定内容类型使用 JSON 模式模型,则只有我定义的内容类型才允许通过......哦不,不,不! AWS Gateway 可以方便地让任何其他内容类型未经检查地通过,从而绕过我的 JSON 架构模型验证器。实际上令人难以置信。因此,仅强制执行 application/json 的答案是转到“集成请求”并为 application/json 配置正文映射,将“当没有定义模板时(推荐)”选项设置为 true。瞧,问题解决了。 AWS Gateway 仍将允许您的 POST 请求到达此阶段,但它不会到达您的“操作(例如 Lambda 函数)。

我想补充一点...这不再是问题,但即使通过设置多个 Content-Type 模式,该模型也仅在 AWS Gateway 中的第一个模式上强制执行。奇怪的行为......也许有人可以帮忙解决这个问题?

关于amazon-web-services - 如何在 AWS Gateway 上针对特定内容类型的所有请求强制实现 JSON 架构模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51804997/

相关文章:

amazon-s3 - PHP SDK 的 S3 批量/并行上传错误

amazon-web-services - 使用 Hadoop 版本 2.7.2 从 Spark 使用 S3a 协议(protocol)访问 S3

ios - ORDER BY 子句在 iphone 应用程序的 simpledb amazon 中不起作用

amazon-web-services - 如何手动回滚Lambda函数的CloudFormation部署?

python - 使用python的参数化postgresql select语句

javascript - 如何使用浏览器javascript SDK在AWS托管ES上执行搜索?

php - 如何在 AWS Linux/CentOS 上使用 Yum 更新 PHP 版本

amazon-web-services - 如何调试 AWS Api 网关和 Lambda 的 "AWS/ApiGateway 5XXError"

kotlin - DynamoDBMapper 加载无法实例化 Kotlin 数据类

javascript - Node JS + AWS Promise 触发两次