【问题标题】:The final policy size is bigger than the limit (20480)最终策略大小大于限制 (20480)
【发布时间】:2020-02-16 12:18:32
【问题描述】:

显然,我已达到与 aws-cognito 和 aws-api-gateway 一起使用的 lambda 函数的策略限制:

The final policy size is bigger than the limit (20480)

所以我的 lambda 函数充满了来自 api 网关的所有允许的端点,f.e.:

{
      "Sid": "eff74414-a6bd-4520-bf67-691ced3245d5",
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:eu-central-1:ID:function:FUNCTION",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:execute-api:eu-central-1:ID:API_ID/*/GET/company"
        }
      }
    },
    {
      "Sid": "6d52e172-84b6-4196-b924-f83b78153bc5",
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:eu-central-1:ID:function:FUNCTION",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:execute-api:eu-central-1:ID:API_ID/*/GET/companies"
        }
      }
    },
...

我知道有一种方法可以整合这些,使用 aws cli,f.e.:

aws lambda add-permission --function-name 'FUNCTION' --statement-id '7bd8e791-7d28-41d0-9ebd-7e2596574fd5' --action "lambda:InvokeFunction" --principal "apigateway.amazonaws.com" --source-arn "arn:aws:execute-api:eu-central-1:ID:API_ID/*/GET/*/*/*" --source-account "ID" --region 'eu-central-1'

虽然我可以添加这个权限,但它是无效的:

ID 为 API_ID 的 API 不包含路径为 ///* 的资源在 GET 方法上集成了 arn:aws:lambda:eu-central-1:ID:function:FUNCTION。

那么我可以做些什么来整合我的所有 api 权限?

【问题讨论】:

  • 看来您应该尝试 arn:aws:execute-api:eu-central-1:ID:API_ID/*/GET/* 而不是 arn:aws:execute-api:eu-central -1:ID:API_ID/*/GET/*/*/*

标签: amazon-web-services aws-lambda aws-api-gateway amazon-cognito


【解决方案1】:

好的,所以我找到了解决方案。我在 API-Gateway 中的每个资源方法的每个 Integration Request 上设置了一个 Execution role

这个执行角色需要与 api-gateway 建立信任关系 - 然后它最终会起作用:)

【讨论】:

  • 你能分享一个简单的例子吗?我也有同样的问题
  • IAM-service 中创建一个具有 f.e. 的角色。访问您的 lambda 函数.. 此角色需要与 apigateway 建立信任关系。您可以在“信任关系”-> The identity provider(s) apigateway.amazonaws.com 下的角色中创建并查看它。回到 apigateway 管理中,对于每个端点(fe. GET /my-endpoint),在“集成请求”下,您必须将之前角色的 ARN 添加为“执行角色”。 arn:aws:iam::100000000000:role/my_role
猜你喜欢
  • 1970-01-01
  • 2019-03-29
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
相关资源
最近更新 更多