我有一个链接到AWS java Lambda后端的Amazon API网关。 我正在尝试向资源添加新方法,并且在为新方法选择集成点时出现以下错误。
错误是:
“功能政策大于限制。请通过lambda cli手动更新政策。”
如何更新策略以及为什么会出现此错误?
非常感谢, 理查德
答案 0 :(得分:0)
好的建议问题是政策文件限制为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"
}
在sort中将许多端点作为参数传递。这可能是我的错,因为我没有阅读足够的文档,但这个限制在我看来很隐蔽所以请注意=)
答案 1 :(得分:0)
如果使用python,则可以使用Boto3 lambda API get_policy来查看随lambda函数附加了哪些基于资源的策略,然后使用remove_permission清除重复的策略或不需要的策略。您还可以使用AWS Lambda CLI get-policy和remove-permission来检查和清理策略。 您可以查看this article,以获取有关如何解决此问题的信息。
解决此问题后,您应该configure the permission for your API使用基于资源的策略或IAM角色来调用Lambda,以防止将来出现此错误。