0

我在 api 网关中设置了以下资源策略以限制对源 IP 的访问(x 只是一个占位符)。当我从邮递员手动点击 api 端点时,策略正确地将访问限制为我在下面的资源策略中指定的 cidr 范围。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:x:x/*/*/*”
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:x:x/*/*/*”,
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        “x.x.x.x/32"
                    ]
                },
                "StringNotEquals": {
                    "aws:sourceVpc": "vpc-x”
                }
            }
        }
    ]
}

但是,我有一个 lambda 函数,它也调用相同的 https api 网关端点。这个函数基本上只是每隔一小时将测试数据传递到我的 api 中。但是,lambda 函数无法到达端点并收到 403 禁止错误。我尝试将其添加sourceVpc到资源策略中,但这似乎不起作用。我也尝试添加 vpc cidr 范围,但这同样不起作用。

你知道我应该在资源策略中添加什么 cidr 以允许我的 lambda 也调用我的 api 端点吗?

4

1 回答 1

1

我在资源策略“aws:SourceIp”中添加了与我的 lambda 函数关联的子网的 NAT 网关 ip。这允许我的 lambda 函数成功调用 API 网关。

于 2020-02-07T11:28:00.577 回答