【问题标题】:AWS function policy is bigger than the limitAWS 功能策略大于限制
【发布时间】:2019-06-26 20:00:35
【问题描述】:

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

错误是:

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

如何更新政策?为什么会出现此错误?

非常感谢, 理查德

【问题讨论】:

  • 我确实看到了,但我不知道这到底意味着什么。我希望有更好的解释。我只有通过 GUI/网页使用过的所有 AWS。
  • AWS 中的策略文档通常有大小限制。您需要寻找缩小文档的方法。
  • 这不仅限制了您可以在 API 上拥有的端点(资源)的数量吗?
  • 根据docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html,Lambda 函数访问策略限制为 20KB。也许您可以使用 GetPolicy 检索现有策略并查看它以寻找简化它的机会。

标签: amazon-web-services aws-lambda


【解决方案1】:

好的,正如建议的那样,问题在于政策文档的 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"
    } 

在排序中将许多端点作为参数传递。这可能是我没有阅读足够多的文档的错,但我认为这个限制很好地隐藏了,所以要小心 =)

【讨论】:

    【解决方案2】:

    如果您使用 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,以防止将来出现此错误。

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 2019-03-29
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多