AWS 函数策略大于限制



我有一个链接到AWS java Lambda后端的Amazon API网关。 我正在尝试向资源添加新方法,但在为新方法选择集成点时出现以下错误。

错误是:

" 函数策略大于限制。请通过 lambda CLI 手动更新策略。

如何更新策略,为什么会发生此错误?

非常感谢, 理查

好的,正如建议的那样,问题在于策略文档的限制为 20kb。您可以通过 CLI 获取策略文档,尽管对我来说它没有多大帮助,因为除非有办法覆盖它并优化它,否则它就毫无用处。也就是说,可能我找不到它。

请注意,在这种情况下,这是一个 Lambda 问题,而不是 API 网关问题。简而言之,我有很多终端节点 (~30/50(,对于 API 来说,这并不算什么,但是每个终端节点都需要策略文档中的相关几行,其中将 Lambda 代码链接到 API 网关终端节点。在大约 30 到 50 个端点处,这将填充策略文档。

可能有更好的方法可以做到这一点....但是在这个限制下,即使我删除了一些未使用的端点,它也无济于事。解决方案是删除 Lambda 函数代码并重新制作它。

但是,这只会清除策略文档,直到您再次重新创建链接。为了避免再次发生此问题,我不得不将终端节点减少到核心终端节点,然后使用传递的参数在 Lambda 中触发正确的代码。

Instead of  https://www.something.com/cars/iswindowopen
do
Instead of  https://www.something.com/cars
{
"call":"iswindowopen"
} 

在排序中,将许多终结点作为参数传递。这可能是我的错,因为我没有阅读足够的文档,但在我看来这个限制隐藏得很好,所以要小心=(

如果您使用python,则可以使用 Boto3 lambda API get_policy查看哪些基于资源的策略附加到您的 lambda 函数,然后使用 remove_permission 清理重复的策略或不需要的策略。您还可以使用 AWS Lambda CLI 获取策略和删除权限来检查和清理策略。 您可以查看本文以获取有关如何解决此问题的信息。

解决此问题后,您应配置 API 的权限,以使用基于资源的策略或 IAM 角色调用 Lambda,以防止将来出现此错误。

最新更新