在Lambda中的aws-sdk V3超时问题

0

【以下的问题经过翻译处理】 我正在使用 NodeJS 14.x lambda 控制 ecs 服务。由于我不需要 ecs 任务一直运行,我在集群内创建了一个服务,以便我可以随意调整所需的数量以启动或停止它。我还创建了两个 lambdas,一个用于查询当前所需计数和当前公共 IP,另一个用于更新所需计数(如果我想启动或停止它,则为 0 或 1)。

我已经将 aws-sdk v3 打包到 lambda layer 中,以免在每个 lambda 中打包它。这似乎是有效的,因为我之前遇到了运行时错误,但现在没有了。

从我的工作站运行代码也很正常,我能够在本地执行它并获得所需的结果(对 ecs api 的查询正常工作)。

但是当我从 lambdas 进行测试时,我只会得到超时......它通常在我的本地工作站上执行不到 3 秒,但即使设置了 3 分钟的 lambda 超时,我仍然会得到以下结果:

START RequestId: XXXX-XX-XXXX Version: $LATEST
2022-01-11T23:57:59.528Z XXXX-XX-XXXX INFO before ecs client send
END RequestId: XXXX-XX-XXXX
REPORT RequestId: XXXX-XX-XXXX Duration: 195100.70 ms Billed Duration: 195000 ms Memory Size: 128 MB Max Memory Used: 126 MB Init Duration: 1051.68 ms
2022-01-12T00:01:14.533Z XXXX-XX-XXXX Task timed out after 195.10 seconds

消息“before ecs client send”是我为了调试目的在 ecs.send 请求之前添加的 console.log。

我认为我已经正确设置了策略以及带有默认出站规则的 Lambda VPC,允许所有端口使用所有协议以及所有IP进行连接, 所以 我现在不知道还能从哪些方面排查?

我也没有找到像V2版本那样 可以通过在配种中添加日志来进行调试, 也许通过调试可以更好的理解报错的问题.

profile picture
专家
已提问 5 个月前26 查看次数
1 回答
0

【以下的回答经过翻译处理】 找到了问题所在……连接超时错误是因为没有路由到 ecs.eu-west-3.amazonaws.com。

我需要为每个我想要从 VPC 访问的服务创建 VPC 端点,如下面的链接中所描述的。AWS文档-端点服务概述

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则