- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在努力解决 alb 2 lambda 502 错误的网关错误。
在我的 ALB 访问日志中,它显示了一个“LambdaInvalidResponse”,我猜这是因为我的 lambda 返回了一个无效的响应。这应该很容易解决,但我一生都无法弄清楚。有人可以帮忙:)。
在我的 python 代码中,我返回以下内容:
new_response = { "statusCode": 200, "statusDescription": "200 OK", "isBase64Encoded": False, "headers": { "Content-Type": "text/json; charset=utf-8" } }
new_response['body'] = '{"name":"function1"}'
return new_response
{'statusCode': '200', 'body': '{\n "message": "Success",\n "response": {\n "body": "{\"name\":\"function1\"}",\n "headers": {\n "Content-Type": "text/json; charset=utf-8"\n },\n "isBase64Encoded": false,\n "statusCode": 200,\n "statusDescription": "200 OK"\n }\n}'}
最佳答案
我真的很想知道为什么结果会被包裹在 body 里——有人有什么想法吗?
您正在查看的正文来自 cloudwatch 收到的请求(其中包含有关触发它的事件的信息。您的 lambda 的请求正文只是这些信息之一),而不是来自您的 lambda 本身的正文(请注意您的 lambda 的主体位于 cloudwatch 请求的字段响应内,即在接收到的 cloudwatch 请求的主体键内)。
你很接近,但这些行是错误的:
"headers": { "Content-Type": "text/json; charset=utf-8" } }
new_response['body'] = '{"name":"function1"}'
如果您希望在 ALB lambda 上返回 JSON,正确的做法应该是:
"headers": { "Content-Type": "application/json; charset=utf-8" } }
new_response['body'] = json.dumps({"name":"function1"})
例如:
import json
def handler(event, context):
msg = "Hello world from lambda!"
response = {
"statusCode": 200,
"statusDescription": "200 OK",
"isBase64Encoded": False,
"headers": {
"Content-Type": "application/json"
},
"body": json.dumps({"myMsg": msg})
}
return response
如果您查看 cloudwatch 日志,您可能会收到
LambdaUserError
def handler(event, context):
response = {
"statusCode": 200,
"statusDescription": "200 OK",
"isBase64Encoded": False,
"headers": {
"Content-Type": "text/html"
},
"body": "<h1>Hello world from Lambda!</h1>"
}
return response
在这种情况下,
内容类型 是 text/html 而不是 application/json。并且您的正文格式为 string/html 而不是 json。 :)
关于python-3.x - 我收到 ALB Lambda 错误 - 502 Bad Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54786485/
最初,我认为每个 ALB 监听器具有不同路径模式的多个服务以适本地分发 API 调用是显而易见的选择。不过,就健康检查而言(如果其中一项服务出现故障),我不知道有一种聪明的方法可以将该服务的流量转移到
我正在为 2 个服务创建一个 ALB,并带有注释:merged。这行不通。我在日志中也看不到太多 Action 。我究竟做错了什么?工作节点具有 AWS 文档中提到的 ALB 入口策略(也添加了下面的
如果我们需要 AWS 中的静态 IP 地址用于负载均衡器,那么我们必须让网络负载均衡器将请求转发到应用程序负载均衡器。 现在由于ALB只支持HTTP和HTTPS协议(protocol)和NLB只支持T
我在集群上运行了一些服务,并且 ALB 工作正常。但是我有一个 CloudFront 分布,由于一些内部因素,我想使用集群作为入口点。因此,我正在尝试添加一个入口,以根据默认规则或命名主机将请求重定向
我们正在使用 Amazon Webservices ECS 和 Application Load Balancer (ALB) 开发微服务架构。 ALB 每个域都有一个规则,它将路径模式耦合到一个目标
我的 Apache 服务器在 ALB/ELB 后面。我正在负载平衡器上终止 SSL。负载均衡器同时监听 80 和 443。我想将所有 http 请求重定向到 https。 我在 vhost 配置中有这
鉴于 Cloudformation 目前不支持 ALB Lambda 集成,我正在尝试编写一个简单的脚本来创建目标组,将 lambda 注册到目标组,然后将监听器规则指向该目标组。 当我通过用户界面执
我有 ALB 的时间序列数据,我想对其应用异常预测,以便它告诉我 ALB 哪个将出现故障。我已经收集了 ALB 的所有 cloudwatch 指标。谁能指导我如何继续? 最佳答案 如果您引用的是 AW
我正在尝试通过 Python 的 ALB 进行授权。据我了解,ALB 在让您访问该网站之前会查找“AWSELBAuthSessionCookie”cookie。我自己登录应用程序时(使用用户名和密码)
我已经部署了一个 AWS ALB Controller ,并在 EKS 集群中创建了具有入口资源的监听器。 我遵循的步骤如下: 我有一个名为 first-test-api 的服务入口,一切正常 我部署
我在容器中部署了微服务,它们运行良好,我们可以使用 ALBendpoint/microservice 进行访问。 但是我附加到 ALB 的目标组显示“不健康”状态。 AWS 控制台中的错误:这些可用区
我想创建一个 ALB,它应该根据到不同网站的路径来路由我的流量。例如。 example.com/apple/应该转到 8080 example.com/grapes/应该转到 8180 example
我正在尝试找到一种方法来阻止主机 header 攻击发生在我的 ALB 上。我的负载均衡器负责将端口 80 重定向到 443,这就是攻击可能发生的地方。现在我能看到的唯一方法是手动添加我的每个域,然后
我们有很多互联网服务,什么是注意事项 使用指向目标 🎯 组的监听器规则,是对每个服务使用 alb 还是对所有服务使用单个 alb。 这些服务有自己的集群/目标组,具有不同的功能和不同的 url。 一
我以这种方式配置了一个AWS ALB,它应该将IRID_a *重新请求(302)请求到另一个区域。 但是,事实证明,AWS ALB的REDIRECT功能正在将所有http:方法(POST,PUT等)更
背景 : 我有一个 VPC与 3 个公共(public) subnets (子网可以访问互联网网关) 我在这个 VPC 中有一个 EKS 集群,EKS 集群是从控制台创建的,而不是使用 eksctl
我在 ALB 后面有一个 lambda 目标。我的 lambda 是一个 python lambda。 def handler(event, context): response = { "s
对于 ALB -“您必须从至少两个可用区指定子网。” 对于 NLB -“您可以从一个或多个可用区指定子网。” 强制执行 2 个可用区作为 ALB 的 MUST 要求而不是 NLB 的原因是什么? 最佳
我们正在启动 ALB 来访问 EMR 服务的各种 UI。但是,当我们启用启动 3 个主节点的 EMR 的高可用性时,alb 将如何自动指出处于事件状态的新主节点。 ALB 不应将流量分配给辅助实例。它
我尝试使用 cloudformation 部署带有 ALB 的 ECS 堆栈,但在创建服务时出现错误,这似乎缺少访问负载均衡器的权限。 错误如下:无法承担角色并验证指定的 targetGroupArn
我是一名优秀的程序员,十分优秀!