来自单个 public IP 的 Selenium EC2 实例
Selenium EC2 instances from single public IP
尊敬的开发人员,
我的问题很简单,但我无法在任何地方找到答案,也许我缺乏一些路由/代理教育。
事情是这样的:
- 我实例化了几个 EC2 实例 运行 Selenium 和一堆来自 PHP API 我写的
的其他软件
- 我在 EC2 实例上使用这几个 selenium 测试的目标应用程序正在接受来自受限 IP 列表的入站连接
- 如何让我的 selenium 测试始终使用相同的 public IP 来访问目标应用程序?
我的第一个猜测是 NAT/Proxy 来自我所有 selenium EC2 实例的流量通过单个 EC2 实例,该实例将具有单个 public IP,我可以在目标应用程序中设置它。
然后我迷失(淹没)到 AWS VPC 等其他事情中。
你能帮我解决这个问题吗?
提前致谢。
哇,你问的还真不少。
听起来您想通过只允许您的 Selenium 实例(可能还有其他实例)访问它来保护您的应用程序。
最明显的方法是为您的 Selenium 实例提供一个静态 IP,亚马逊称之为弹性 IP。您只能在每个地区获得 5 个这样的 IP,然后再向亚马逊索取更多。因此,如果您有超过 1 个或 2 个 Selenium 实例,这将不切实际。
如果您没有使用 VPC,您真的应该考虑设置它。一开始可能看起来有点复杂,但它使您在这里尝试做的事情变得非常容易。
使用 VPC,您可以让所有实例通过其内部 IP 地址相互通信,只要它们在同一区域中即可。
如果它们不在同一个区域,您可以在每个区域设置一个NAT实例。您为 NAT 实例分配一个弹性 IP。该区域中的所有其他实例随后将通过 NAT 实例访问其区域外的服务器。从外部服务器的角度来看,它们的源 IP 将是 NAT 的 IP。
那么这一切会给你带来什么?
好吧,假设您将所有实例设置为 VPC 内的同一区域。然后,您可以将您的应用程序服务器分配给一个安全组,该组允许来自您的 selenium 实例的内部 IP 的传入 HTTP/HTTPS 连接。您甚至可以在该 VPC 中为您的应用程序和 selenium 实例创建不同的子网,并设置安全组以允许来自整个 selenium 子网的传入连接。对每种服务器类型进行子网划分对于您的用例来说可能有些矫枉过正。这实际上仅取决于您希望对 VPC 网络进行多少控制。
我认为解释如何设置 VPC 不在此答案的范围内。不过,我确实认为设置 VPC 对您来说是正确的选择。亚马逊的文档是一个不错的起点:
https://aws.amazon.com/documentation/vpc/
还值得搜索 google 以查找有关设置 VPC 的博客条目之类的内容。其他人在设置他们的第一个 VPC 时犯了很多错误,您可以通过阅读这些错误来避免这些错误。
尊敬的开发人员,
我的问题很简单,但我无法在任何地方找到答案,也许我缺乏一些路由/代理教育。
事情是这样的:
- 我实例化了几个 EC2 实例 运行 Selenium 和一堆来自 PHP API 我写的 的其他软件
- 我在 EC2 实例上使用这几个 selenium 测试的目标应用程序正在接受来自受限 IP 列表的入站连接
- 如何让我的 selenium 测试始终使用相同的 public IP 来访问目标应用程序?
我的第一个猜测是 NAT/Proxy 来自我所有 selenium EC2 实例的流量通过单个 EC2 实例,该实例将具有单个 public IP,我可以在目标应用程序中设置它。
然后我迷失(淹没)到 AWS VPC 等其他事情中。
你能帮我解决这个问题吗?
提前致谢。
哇,你问的还真不少。
听起来您想通过只允许您的 Selenium 实例(可能还有其他实例)访问它来保护您的应用程序。
最明显的方法是为您的 Selenium 实例提供一个静态 IP,亚马逊称之为弹性 IP。您只能在每个地区获得 5 个这样的 IP,然后再向亚马逊索取更多。因此,如果您有超过 1 个或 2 个 Selenium 实例,这将不切实际。
如果您没有使用 VPC,您真的应该考虑设置它。一开始可能看起来有点复杂,但它使您在这里尝试做的事情变得非常容易。
使用 VPC,您可以让所有实例通过其内部 IP 地址相互通信,只要它们在同一区域中即可。
如果它们不在同一个区域,您可以在每个区域设置一个NAT实例。您为 NAT 实例分配一个弹性 IP。该区域中的所有其他实例随后将通过 NAT 实例访问其区域外的服务器。从外部服务器的角度来看,它们的源 IP 将是 NAT 的 IP。
那么这一切会给你带来什么?
好吧,假设您将所有实例设置为 VPC 内的同一区域。然后,您可以将您的应用程序服务器分配给一个安全组,该组允许来自您的 selenium 实例的内部 IP 的传入 HTTP/HTTPS 连接。您甚至可以在该 VPC 中为您的应用程序和 selenium 实例创建不同的子网,并设置安全组以允许来自整个 selenium 子网的传入连接。对每种服务器类型进行子网划分对于您的用例来说可能有些矫枉过正。这实际上仅取决于您希望对 VPC 网络进行多少控制。
我认为解释如何设置 VPC 不在此答案的范围内。不过,我确实认为设置 VPC 对您来说是正确的选择。亚马逊的文档是一个不错的起点:
https://aws.amazon.com/documentation/vpc/
还值得搜索 google 以查找有关设置 VPC 的博客条目之类的内容。其他人在设置他们的第一个 VPC 时犯了很多错误,您可以通过阅读这些错误来避免这些错误。