问题标签 [aws-http-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 如何将带有 HTTP 状态和正文的 Java(Kotlin)的 AWS lamda 自定义响应传播到 HTTP API 网关
我一直在尝试在 Lambda 和 HTTP API 网关中设置一个以 Kotlin 作为后端的微服务。我已经达到了在 HTTP API 网关中正确显示来自 lambda 的响应。它没有给我在响应、正文和标头中传递的状态,而是始终返回 HTTP 状态代码 200。
https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html 根据这篇文章,唯一需要自定义的就是返回一个像这样的特定格式的响应
我在我的 lambda 函数中启用了日志,我可以肯定地看到返回的响应是相同的格式
一段时间后,我决定看看这种方法是否普遍有效。我使用 javascript 创建了以下示例 lambda
上面的例子工作得很好。虽然事实证明 API Gateway 需要一个对象,而不仅仅是一个字符串作为 Lambda 的响应传递。
这是我在 Kotlin 中使用的代码
JSONObject 类来自 org.json.json 库(maven)
也许 API Gateway 需要不同的对象格式,或者 Lambda 不能很好地与 JSONObject 配合使用,但这对我来说不起作用。
有没有人试过这个?我在这里想念什么?
amazon-web-services - 验证 API Gateway 的 HTTP API 传入负载
AWS API Gateway 是否可以在执行 Lambda 函数之前验证 HTTP API 的传入负载,从而在输入无效时节省调用 Lambda 函数的费用?
我知道较旧的REST API 可以通过 API Gateway 验证其输入,但我使用的是 HTTP API,因为它们更轻且便宜 71%并且非常适合我的需求。
非常欢迎任何建议/解决方法。
amazon-web-services - AWS API Gateway HttpAPI SAM 自定义域名错误
我想将现有的 Rest API 移动到 HTTP API,并在自定义域配置中出错。我的 HTTP API SAM 文件是:
我在 Cloudformation 中遇到的错误:
因为我在 API Gateway 中配置了一个现有的自定义域。看起来它试图创建一个自定义域名,有没有办法将 HTTP API 实例映射到现有的自定义域?对于 REST API,我使用AWS::ApiGateway::BasePathMapping进行此任务的映射,但找不到 HTTP API 替代方案。
amazon-web-services - AWS HTTP API 与 AWS Step Functions 集成 -> 在输入中发送多个值
我有一个Type: AWS::Serverless::HttpApi
我试图连接到Type: AWS::Serverless::StateMachine
一个触发器。这意味着 HTTP API 将触发 Step Function 状态机。
我可以让它工作,只指定一个输入。例如,DefinitionBody
当它工作时,看起来像这样:
请注意以下行:Input: $request.body
. 我只指定$request.body
.
但是,我需要能够发送$request.body
and $request.header.X-Hub-Signature-256
。我需要将这两个值作为输入发送到我的状态机。
我尝试了很多不同的方法。例如:
和
和
似乎没有任何效果。我正在尝试遵循此处的文档:
- 使用 HTTP API 的 OpenAPI 定义。
- x-amazon-apigateway-集成对象
- x-amazon-apigateway-integration.requestParameters 对象
- 使用适用于 HTTP API 的 AWS 服务集成
- StepFunctions-StartExecution
- 开始执行
但是似乎没有任何关于如何传递多个变量的问题,只有一个。
我每次都会遇到不同的错误,但这是主要的错误:
任何有关如何传递多个值的帮助将不胜感激。
amazon-web-services - AWS::Serverless::HttpApi Cors 配置适用于 POST 但不适用于 OPTIONS
我已经与 CORS 斗争了一段时间,但我已经没有想法了。我AWS::Serverless::HttpApi
通过 SAM 进行了部署。这个 API 目前只有一个端点,它需要一个 POST 请求到/auctions
. 在 PostMan 中测试它可以工作,但当然在其他任何地方进行测试都会引发可怕的preflight failed
错误。在过去的几天里,我一直在尝试不同的东西,但没有任何效果。这是我的当前状态template.yaml
:
这个模板有一个兄弟模板创建 DynamoDb 表,我省略了它,因为那部分工作正常。这是选项 lambda 处理程序(添加正文对标头没有影响):
我从 POST 处理程序发送的成功响应:
在添加选项 lambda 处理程序之前,我收到了204
来自 OPTIONS 请求的响应,没有允许来源标头,现在我添加了处理程序,我得到了200
预期的结果,但是标头仍然不存在。使用此配置,通过 PostMan 发送具有相同标头的请求将在 POST 上具有标头,但在 OPTIONS 请求中将缺少该标头。
我尝试过的事情:
CorsConfiguration: true
- 硬编码原点
我读过的东西:
- 修复 AWS API 网关不存在的 CORS“对预检的响应 ...”标头并放大
- https://aws.amazon.com/premiumsupport/knowledge-center/no-access-control-allow-origin-error/
- https://www.serverless.com/blog/cors-api-gateway-survival-guide/
- https://aws.amazon.com/blogs/compute/configuring-cors-on-amazon-api-gateway-apis/
- https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-cors-errors/
- https://github.com/aws/aws-sam-cli/issues/2637
- https://forums.aws.amazon.com/thread.jspa?threadID=252972
- 在 AWS Lambda HTTP API 网关集成上不可能实现 CORS
- 我能找到的任何其他 aws cors 问题。
POST 请求中存在标头的事实告诉我有些东西正在工作。我只是无法弄清楚为什么它适用于一个请求而不适用于另一个请求。
amazon-web-services - AWS SAM - 本地 api 调用以返回事件的版本 2
我正在使用 AWS SAM 在本地测试我的 Api 网关和 lambda。执行sam local start-api
和调用 lambda 时,我希望使用event
2.0版格式而不是 1 版。
我正在使用 CDKHttpApi
构造,@aws-cdk/aws-apigatewayv2
因此现在我的本地测试和部署的内容之间存在不一致。
我是 Sam config 的新手,我的template.yml文件是:
我已经尝试使用这些适用于 SAM 的 AWS Docs 进行各种设置(Api、HttpApi),但总是设法只获得版本 1 事件。
你能指出我做错了什么或如何指定版本吗?
amazon-web-services - AWS HTTP API Gateway jwt 验证
我对 Http API 网关验证 jwt 签名的方式有疑问。我使用 eu-west-1 中托管的 cognito 用户池作为身份提供者/令牌颁发者。我在 eu-west-1 和 us-east-1 中部署了一个 Http API 网关。我使用 SAM 进行设置,api 部分如下所示:
一切正常,但是当我进行一些性能测试时,我发现向路由添加授权会大大增加延迟。eu-west-1 中托管的 api 的延迟从 75ms 增加到 100ms,但 us-east-1 中托管的 api 的延迟从 160ms 增加到 550ms(从荷兰运行的测试结果是超过 50 次调用的平均值每次测试)。这些结果似乎表明,为了验证 Authorization 标头中的 jwt 不记名令牌,api 网关为每个要求。我对 Oauth 的了解有限,但我认为 .well-known/openid-configuration 只需要定期检查,因此 api 网关可以验证令牌而无需进行额外的网络调用。我不知道从这里去哪里,因为我不知道这是否只是事情的运作方式,或者这是否是 Oauth 的事情,或者它是否完全是其他事情。任何反馈将不胜感激。
amazon-web-services - 可以为移动应用程序选择 AWS HTTP API 网关吗?
我正在尝试决定为我的应用程序选择哪个 aws apigateway 版本(HTTP 与 REST API 网关)。
我正在试验 AWS HTTP API 网关,看看它是否适合我的用例。
这些是我的要求:
- 唯一的客户端是移动应用程序
- 其余 API 只能从登录用户访问
- 我想将 cognito 与 cognito 授权器一起使用
- 我的后端是通过内部应用程序负载均衡器公开的 lambda 服务和 HTTP 休息服务的组合
似乎一切都支持,唯一担心的是我会使用 api 密钥,但 HTTP API 网关目前不支持此功能。
如果我在没有任何 api 密钥的情况下使用 HTTP,是否存在任何安全问题?将访问限制为仅来自我的移动应用程序的请求的正确方法是什么?