我有一个具有自定义域的aws api网关。 我必须从AWS api网关访问客户端的api之一。 这些api可以根据IP地址进行访问。 如果要从aws访问那些api,则需要知道我的AWS apigateway的IP地址。 但是我不确定在哪里可以得到这个。 是否有可能获得AWS apigateway的静态IP地址?
答案 0 :(得分:0)
不幸的是,API网关不支持这种直接调用IP白名单API的方案。基本上,任何AWS实例都可以用于进行API调用,并且AWS为此使用了许多IP。
有一些解决方法,具体取决于您的情况;
如果要访问的服务器位于您自己的VPC内,则可以创建一个VPC链接(使用NLB)并规避IP白名单问题。此解决方案仅适用于您控制范围内的资源。
如果服务器是外部服务器,并且期望使用静态IP,则最好的解决方案是从VPC内部进行呼叫。为了确保您具有静态的公共IP,可以在VPC(more info here)中使用弹性IP和NAT网关。 要调用从API网关触发的外部API,您可以使用Lambda,但由于VPC的缘故,冷启动会非常缓慢,> 10s。为了确保API能够快速响应,您可以在Fargate上使用EC2实例或ECS服务。
答案 1 :(得分:0)
在上面的注释中阐明了要求之后,您似乎需要由API Gateway触发的AWS Lambda函数才能向第三方显示,就好像它具有静态的传出IP地址一样。
解决方案是将Lambda函数配置为在VPC的私有子网中运行,该私有子网具有到NAT网关的路由。然后,来自Lambda函数的所有传出连接(用于访问VPC外部资源)都将使用NAT网关的静态IP地址。