Vla*_*ady 6 amazon-web-services
我读过其他类似的帖子,其中包含完全相同的错误消息,但我的问题不同。
我在https://XXXXXXXX.execute-api.us-east-1.amazonaws.com/xxxx/users中有一个 AWS ApiGateway (从现在起我将其称为/users)。
我已经使用 Cognito 授权实现了 ApiGateway 到 Lambda 脚本,它们工作没有问题,例如:
/users/me-> 返回当前登录用户的数据问题是当我在 ApiGateway 中调用不存在的路由时,例如:
/users/mine123-> 它返回{“message”:“授权标头中的‘my-cognito-user-id-token’不是有效的键=值对(缺少等号):‘Bearer my-cognito-user-id-token’。” }
我的问题是...当 ApiGateway 中的路由不存在时,有没有办法返回 NotFound 或 BadRequest 错误?
我认为可以实现任何资源,但是,有没有一种“干净”的方法可以在没有任何资源的情况下实现它?
编辑1:
我也尝试了 Api Gateway 响应。我设置了自定义响应,状态错误代码 404 表示“未找到资源”,但 Api Gateway 仍然返回403 Forbidden。
编辑2
我也已经配置了4XX响应:
API Gateway 总是返回 403 错误并显示此消息(正如一般 4XX 错误所预期的那样),但是我认为这没有意义,因为Forbidden这不是一个真正的错误,而是一个NotFoundorBadRequest错误。
例如,
404 NotFound。400 BadRequest。他们都没有回来403 Forbidden。
Bal*_*ala 14
{ "message": "token not a valid key=value pair Authorization header: 'Bearer token'.当“资源路径不存在”且状态为 403且响应标头为“x-amzn-ErrorType”=“IncompleteSignatureException”时,会引发错误消息
带有“Authorization”标头的请求被发送到不存在的 API 资源路径。
我们可以在“网关响应”部分自定义响应正文。对于这种情况,似乎没有特定的网关响应,例如未经授权、无效签名等,因此我们需要配置Default 4XX
我们可以更新status code和Response Templates. 与成功请求过程中的集成响应不同,错误网关响应模板不支持完整的 VTL模板,而仅支持简单的占位符。
配置示例application/json
{"message":"Invalid Resource","type": "$context.error.responseType","stage": "$context.stage"}
Run Code Online (Sandbox Code Playgroud)
将返回
{
"message": "Invalid Resource",
"type": "DEFAULT_4XX",
"stage": "qa"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17036 次 |
| 最近记录: |