当 IP 地址未列入白名单时拒绝来自 API 网关的响应
Deny response from API Gateway when IP address is not whitelisted
上下文
我正在使用资源策略将 IP 地址列入白名单,这些 IP 地址可以调用使用 API 网关管理的我的 API。
我的资源策略是这样的
当我尝试从不在白名单中的 IP 地址调用 API 时,我收到这样的 API 响应 -
{
"Message": "User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ap-sou*******-*:************:*****/*****/**/******"
}
问题
当 IP 地址不在白名单中时,我希望完全不显示错误消息。
预期结果
如何将响应更改为仅向列入白名单的 IP 地址显示错误消息?对于不在白名单中的 IP 地址,应该没有响应。类似于 EC2 实例在 IP 地址未列入白名单且操作超时时所做的操作。
编辑:还有一个类似问题的问题 -
但我的问题是不同的,因为我不只是想更改发送的响应,但我想阻止 API 网关在 IP 地址未列入白名单的情况下发送响应。
正如评论中的人们所建议的那样,您可以考虑使用 Gateway Response 通过使用 return 之类的 {}
.
来简化对基本上没有响应的响应
如果您想要来自 EC2 实例的类似响应,要考虑的另一种方法是 不 使用 API 网关并使用 Application Load Balancer to act as your proxy. I am not sure what type of integration you are using with API Gateway but ALBs allow you to route traffic to Lambdas, route traffic to EC2 instances or forward/redirect traffic to other HTTP endpoints,因此此解决方案将为这些类型的集成工作。然后,您可以将 ALB 上的安全组设置为仅允许来自白名单子网的流量,任何其他尝试发出请求的用户都将挂起。
上下文
我正在使用资源策略将 IP 地址列入白名单,这些 IP 地址可以调用使用 API 网关管理的我的 API。
我的资源策略是这样的
当我尝试从不在白名单中的 IP 地址调用 API 时,我收到这样的 API 响应 -
{
"Message": "User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ap-sou*******-*:************:*****/*****/**/******"
}
问题
当 IP 地址不在白名单中时,我希望完全不显示错误消息。
预期结果
如何将响应更改为仅向列入白名单的 IP 地址显示错误消息?对于不在白名单中的 IP 地址,应该没有响应。类似于 EC2 实例在 IP 地址未列入白名单且操作超时时所做的操作。
编辑:还有一个类似问题的问题 -
但我的问题是不同的,因为我不只是想更改发送的响应,但我想阻止 API 网关在 IP 地址未列入白名单的情况下发送响应。
正如评论中的人们所建议的那样,您可以考虑使用 Gateway Response 通过使用 return 之类的 {}
.
如果您想要来自 EC2 实例的类似响应,要考虑的另一种方法是 不 使用 API 网关并使用 Application Load Balancer to act as your proxy. I am not sure what type of integration you are using with API Gateway but ALBs allow you to route traffic to Lambdas, route traffic to EC2 instances or forward/redirect traffic to other HTTP endpoints,因此此解决方案将为这些类型的集成工作。然后,您可以将 ALB 上的安全组设置为仅允许来自白名单子网的流量,任何其他尝试发出请求的用户都将挂起。