繁体   English   中英

如何从 lambda 的 ALB 响应中删除标头

[英]How to remove headers form ALB response from lambda

我正在将 ALB 与 Lambda 集成结合使用。 我的 ALB 从服务器获取请求,将其转发给 Lambda,并将 lambda 响应转发回服务器。 但是,服务器只接受 xml 主体,而不接受带有 ALB 添加的标头的整个请求。 (请参阅下面的回复)。

有没有办法让 ALB 只把 body 送回去?

服务器期望这样的事情:

[<?xml version="1.0" encoding="UTF-8"?>
  <EventMessage xmlns:hb="Heartbeat" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Message.xsd">
...
  </EventMessage>
  ]

ALB 发回:

[HTTP/1.1 200 OK
Server: awselb/2.0
Date: Mon, 19 Dec 2022 14:52:01 GMT
Content-Type: application/octet-stream
Content-Length: 28
Connection: keep-alive

  <EventMessage xmlns:hb="Heartbeat" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Message.xsd">
...
  </EventMessage>
]

我无法控制服务器接受什么,所以我需要以某种方式删除标头并发回可以接受的 eventMessage。

这是我当前在 lambda 中的返回(回调)语句:

    const resFromRequestsLambda =  { 
        "isBase64Encoded": false,
        "statusCode": 200, 
        "body": "<EventMessage ...>...</EventMessage>,
    }

    callback(null, resFromRequestsLambda);

谢谢你的帮助!

附言。 我意识到这可能是一个非常具体的案例,答案可能是你“不能/不应该”。 如果我不能直接更改 alb 响应服务器的方式,任何解决方法都会很棒。

这些标头是 http 协议的一部分。 负载均衡器使用 http,因此它将始终包含标头。 没有其他办法了。

服务器不接受标头非常奇怪。 也许您可以在 EC2 实例上使用自定义 TCP 服务器,而不是使用 Lambda 目标的 ALB。 通过这种方式,您可以在完全控制负载的情况下响应请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM